GithubHelp home page GithubHelp logo

orpheusdl's Introduction

OrpheusDL

A modular music archival program

Report Bug Β· Request Feature

Table of content

About OrpheusDL

OrpheusDL is a modular music archival tool written in Python which allows archiving from multiple different services.

Getting Started

Follow these steps to get a local copy of Orpheus up and running:

Prerequisites

  • Python 3.7+ (due to the requirement of dataclasses), though Python 3.9 is highly recommended

Installation

  1. Clone the repo
    git clone https://github.com/OrfiTeam/OrpheusDL.git && cd OrpheusDL
  2. Install all requirements
    pip install -r requirements.txt
  3. Run the program at least once, or use this command to create the settings file
    python3 orpheus.py settings refresh
  4. Enter your credentials in config/settings.json

Usage

Just call orpheus.py with any link you want to archive, for example Qobuz:

python3 orpheus.py https://open.qobuz.com/album/c9wsrrjh49ftb

Alternatively do a search (luckysearch to automatically select the first option):

python3 orpheus.py search qobuz track darkside alan walker

Or if you have the ID of what you want to download, use:

python3 orpheus.py download qobuz track 52151405

Configuration

You can customize every module from Orpheus individually and also set general/global settings which are active in every loaded module. You'll find the configuration file here: config/settings.json

Global/General

{
    "download_path": "./downloads/",
    "download_quality": "hifi",
    "search_limit": 10
}

download_path: Set the absolute or relative output path with / as the delimiter

download_quality: Choose one of the following settings:

  • "hifi": FLAC higher than 44.1/16 if available
  • "lossless": FLAC with 44.1/16 if available
  • "high": lossy codecs such as MP3, AAC, ... in a higher bitrate
  • "medium": lossy codecs such as MP3, AAC, ... in a medium bitrate
  • "low": lossy codecs such as MP3, AAC, ... in a lower bitrate

NOTE: The download_quality really depends on the used modules, so check out the modules README.md

search_limit: How many search results are shown

Global/Formatting:

{
    "album_format": "{name}{explicit}",
    "playlist_format": "{name}{explicit}",
    "track_filename_format": "{track_number}. {name}",
    "single_full_path_format": "{name}",
    "enable_zfill": true,
    "force_album_format": false
}

track_filename_format: How tracks are formatted in albums and playlists. The relevant extension is appended to the end.

album_format, playlist_format, artist_format: Base directories for their respective formats - tracks and cover art are stored here. May have slashes in it, for instance {artist}/{album}.

single_full_path_format: How singles are handled, which is separate to how the above work. Instead, this has both the folder's name and the track's name.

enable_zfill: Enables zero padding for track_number, total_tracks, disc_number, total_discs if the corresponding number has more than 2 digits

force_album_format: Forces the album_format for tracks instead of the single_full_path_format and also uses album_format in the playlist_format folder

Format variables

track_filename_format variables are {name}, {album}, {album_artist}, {album_id}, {track_number}, {total_tracks}, {disc_number}, {total_discs}, {release_date}, {release_year}, {artist_id}, {isrc}, {upc}, {explicit}, {copyright}, {codec}, {sample_rate}, {bit_depth}.

album_format variables are {name}, {id}, {artist}, {artist_id}, {release_year}, {upc}, {explicit}, {quality}, {artist_initials}.

playlist_format variables are {name}, {creator}, {tracks}, {release_year}, {explicit}, {creator_id}

  • {quality} will add
     [Dolby Atmos]
     [96kHz 24bit]
     [M]
    

to the corresponding path (depending on the module)

  • {explicit} will add
     [E]
    
    to the corresponding path

Global/Covers

{
    "embed_cover": true,
    "main_compression": "high",
    "main_resolution": 1400,
    "save_external": false,
    "external_format": "png",
    "external_compression": "low",
    "external_resolution": 3000,
    "save_animated_cover": true
}
Option Info
embed_cover Enable it to embed the album cover inside every track
main_compression Compression of the main cover
main_resolution Resolution (in pixels) of the cover of the module used
save_external Enable it to save the cover from a third party cover module
external_format Format of the third party cover, supported values: jpg, png, webp
external_compression Compression of the third party cover, supported values: low, high
external_resolution Resolution (in pixels) of the third party cover
save_animated_cover Enable saving the animated cover when supported from the module (often in MPEG-4 format)

Global/Codecs

{
    "proprietary_codecs": false,
    "spatial_codecs": true
}

proprietary_codecs: Enable it to allow MQA, E-AC-3 JOC or AC-4 IMS

spatial_codecs: Enable it to allow MPEG-H 3D, E-AC-3 JOC or AC-4 IMS

Note: spatial_codecs has priority over proprietary_codecs when deciding if a codec is enabled

Global/Module_defaults

{
    "lyrics": "default",
    "covers": "default",
    "credits": "default"
}

Change default to the module name under /modules in order to retrieve lyrics, covers or credits from the selected module

Global/Lyrics

{
    "embed_lyrics": true,
    "embed_synced_lyrics": false,
    "save_synced_lyrics": true
}
Option Info
embed_lyrics Embeds the (unsynced) lyrics inside every track
embed_synced_lyrics Embeds the synced lyrics inside every track (needs embed_lyrics to be enabled) (required for Roon)
save_synced_lyrics Saves the synced lyrics inside a .lrc file in the same directory as the track with the same track_format variables

Contact

OrfiDev (Project Lead) - @OrfiDev

Dniel97 (Current Lead Developer) - @Dniel97

Project Link: Orpheus Public GitHub Repository

Acknowledgements

orpheusdl's People

Contributors

dniel97 avatar dwaris avatar orfidev avatar r3ap3 avatar remixdev avatar uhwot avatar zpoo32 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orpheusdl's Issues

Help lmao

This is the error message I get

Traceback (most recent call last):
  File "C:\Users\EEE\documents\orpheusdl\orpheus.py", line 224, in <module>
    main()
  File "C:\Users\EEE\documents\orpheusdl\orpheus.py", line 37, in main
    orpheus = Orpheus(args.private)
  File "C:\Users\EEE\documents\orpheusdl\orpheus\core.py", line 108, in __init__
    self.settings = json.loads(open(self.settings_location, 'r').read()) if os.path.exists(self.settings_location) else {}
  File "C:\Users\EEE\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\EEE\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\EEE\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid control character at: line 40 column 42 (char 1261)

Embedded album artwork not saving to file (Qobuz)

Writing here since the artwork configuration settings are at the root of orpheus, and not within the Qobuz section.

Some Qobuz albums fail to save the high resolution album artwork embedded to the file.
For example, this album (https://play.qobuz.com/album/dddb8p9w0ywrb) does not have embedded artwork, and I am unable to manually save the external cover.jpg to the files using mp3tag or musicbee.
I've also attempted changing the settings.json to use 3000 resolution and high compression, which did not fix the issue.

Uploaded on my Mega drive, you will find:

  1. The resulting 3000x3000 cover.jpg from Orpheus (which fails to save as embedded artwork)
  2. An alternatively downloaded 3000x3000 cover.jpg using QobuzDownloaderX (same resolution, can successfully be saved as embedded artwork)

https://mega.nz/folder/E6JX3Y6A#5i1_rMEzDHKc-x2ePZjkHQ

Please let me know if this issue cannot be replicated. I can find other examples if needed.
Thanks!

Error downloading 360RA

Any fix to this?

Traceback (most recent call last):
File "C:\Users\narxerino\OrpheusDL\orpheus.py", line 224, in
main()
File "C:\Users\narxerino\OrpheusDL\orpheus.py", line 219, in main
orpheus_core_download(orpheus, media_to_download, tpm, sdm, path)
File "C:\Users\narxerino\OrpheusDL\orpheus\core.py", line 368, in orpheus_core_download
music = orpheus_session.load_module(mainmodule)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\narxerino\OrpheusDL\orpheus\core.py", line 210, in load_module
loaded_module = class_(module_controller)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\narxerino\OrpheusDL\modules\tidal\interface.py", line 114, in init
sessions[session_type].auth(username, password)
File "C:\Users\narxerino\OrpheusDL\modules\tidal\tidal_api.py", line 354, in auth
raise TidalAuthError("TIDAL BOT protection, try again later!")
modules.tidal.tidal_api.TidalAuthError: TIDAL BOT protection, try again later!

Cosmetic error after upgrade to python 3.12

Like in the subject.

OS Windows 10

C:\Program Files (x86)\OrpheusDL>python orpheus.py https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxx C:\Program Files (x86)\OrpheusDL\orpheus.py:12: SyntaxWarning: invalid escape sequence '\ ' print('''

and then the program works like expected.

So just a typo, something probably changed in the new python.

KeyError: 'audioModes'

Hello,

having this Error when downloading an Artist URL, more info down here....
Using Linux Ubuntu Server 20.04.3, Python 3.8.10

trying to download this url "https://listen.tidal.com/artist/4515808"

        Album 5/51
DEBUG:urllib3.connectionpool:https://api.tidal.com:443 "GET /v1/albums/96726215/items/credits?replace=True&offset=0&limit=100&includeContributors=True&countryCode=DE HTTP/1.1" 200 None
Traceback (most recent call last):
  File "orpheus.py", line 223, in <module>
    main()
  File "orpheus.py", line 218, in main
    orpheus_core_download(orpheus, media_to_download, tpm, sdm, path)
  File "/home/markus/orpheusdl/orpheus/core.py", line 386, in orpheus_core_download
    downloader.download_artist(media_id, extra_kwargs=media.extra_kwargs)
  File "/home/markus/orpheusdl/orpheus/music_downloader.py", line 183, in download_artist
    tracks_downloaded += self.download_album(album_id, artist_name=artist_name, path=artist_path, indent_level=2, extra_kwargs=artist_info.album_extra_kwargs)
  File "/home/markus/orpheusdl/orpheus/music_downloader.py", line 107, in download_album
    album_info: AlbumInfo = self.service.get_album_info(album_id, **extra_kwargs)
  File "/home/markus/orpheusdl/modules/tidal/interface.py", line 280, in get_album_info
    if album_data['audioModes'] == ['DOLBY_ATMOS']:
KeyError: 'audioModes'

i have checked the Album on the URL provided, if i do the download with the Album URL no Error...

my Settings

{
    "global": {
        "general": {
            "download_path": "./downloads/",
            "download_quality": "hifi",
            "search_limit": 10
        },
        "artist_downloading": {
            "return_credited_albums": true,
            "separate_tracks_skip_downloaded": true
        },
        "formatting": {
            "album_format": "{artist} - {name}{explicit} {quality}",
            "playlist_format": "{name}{explicit}",
            "track_filename_format": "{track_number} - {album_artist} - {name}",
            "single_full_path_format": "{name}",
            "enable_zfill": true
        },
        "codecs": {
            "proprietary_codecs": true,
            "spatial_codecs": true
        },
        "module_defaults": {
            "lyrics": false,
            "covers": "default",
            "credits": false
        },
        "lyrics": {
            "embed_lyrics": false,
            "save_synced_lyrics": false
        },
        "covers": {
            "main_compression": "high",
            "main_resolution": 1400,
            "save_external": false,
            "external_format": "png",
            "external_compression": "low",
            "external_resolution": 3000,
            "save_animated_cover": true
        },
        "advanced": {
            "advanced_login_system": false,
            "codec_conversions": {
                "alac": "flac"
            },
            "conversion_flags": {
                "flac": {
                    "compression_level": "0"
                }
            },
            "conversion_keep_original": true,
            "cover_variance_threshold": 8,
            "debug_mode": true,
            "disable_subscription_checks": false,
            "enable_undesirable_conversions": false,
            "ignore_existing_files": false,
            "ignore_different_artists": true
        }
    },

Is there any option to not do a "codec_conversions" ??? If it is a MQA then it should be an MQA extensension...

Maybe it's a Bug or something else, i don't Know...

Thanks so far

Greetz Markus

ModuleNotFoundError: No module named 'requests'

C:\Users\jason\OrpheusDL>python3 orpheus.py settings refresh Traceback (most recent call last): File "C:\Users\jason\OrpheusDL\orpheus.py", line 7, in <module> from orpheus.core import * File "C:\Users\jason\OrpheusDL\orpheus\core.py", line 1, in <module> import importlib, json, logging, os, pickle, requests, urllib3, base64, shutil ModuleNotFoundError: No module named 'requests'

Please help me with this Issues

Traceback (most recent call last):
File "/Users/tohongson/orpheusdl/orpheus.py", line 7, in
from orpheus.core import *
File "/Users/tohongson/orpheusdl/orpheus/core.py", line 4, in
from orpheus.music_downloader import Downloader
File "/Users/tohongson/orpheusdl/orpheus/music_downloader.py", line 7, in
from ffmpeg import Error
ImportError: cannot import name 'Error' from 'ffmpeg' (/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/ffmpeg/init.py)

kkbox --> IP address is in unsupported region, use a VPN

Hello! I am trying to download songs from kkbox on orpheus module, but I could not it. It shows this message:
Note: My account is not expired, I am using kkbox webplayer normally. Could anyone help me, please?

Traceback (most recent call last):
File "orpheus.py", line 223, in
main()
File "orpheus.py", line 176, in main
module = orpheus.load_module(service_name)
File "/content/drive/MyDrive/orpheusdl/orpheus/core.py", line 203, in load_module
loaded_module = class_(module_controller)
File "/content/drive/MyDrive/orpheusdl/modules/kkbox/interface.py", line 44, in init
self.login(settings['email'], settings['password'])
File "/content/drive/MyDrive/orpheusdl/modules/kkbox/interface.py", line 72, in login
self.session.login(email, password)
File "/content/drive/MyDrive/orpheusdl/modules/kkbox/kkapi.py", line 73, in login
raise self.exception('IP address is in unsupported region, use a VPN')
orpheus.core.ModuleError: kkbox --> IP address is in unsupported region, use a VPN

Support saving multiple album artists (Qobuz)

When downloading an album that has multiple album artists, only the first album artist is saved to the ALBUMARTIST tag.
For example, the Kids See Ghosts album displays "Kids See Ghosts β€’ Kanye West β€’ Kid Cudi" as album artists on Qobuz (https://play.qobuz.com/album/f91ymo1s6vtgb), but the ALBUMARTIST tag on the file only contains the first album artist.
I can recall the displaying of multiple album artists on the web app (play.qobuz.com) being a relatively new feature.
This issue does NOT happen with the regular Artist tag.

Any idea how to resolve this ?

So I installed OrpheusDl and the Deezer module and everything went smoothly. I entered my credentials in the seetings.json. But then I tried downloading a playlist from Deezer and this showed on the console. Now everytime i want enter a track, album, playlist or even just trying "python orpheus.py" leads me to this error. Thanks for helping !

Traceback (most recent call last):
File "C:\Users\malor\OrpheusDL\orpheus.py", line 224, in
main()
File "C:\Users\malor\OrpheusDL\orpheus.py", line 37, in main
orpheus = Orpheus(args.private)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\malor\OrpheusDL\orpheus\core.py", line 108, in init
self.settings = json.loads(open(self.settings_location, 'r').read()) if os.path.exists(self.settings_location) else {}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\malor\AppData\Local\Programs\Python\Python311\Lib\json_init_.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\malor\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\malor\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Invalid \escape: line 4 column 32 (char 70)

Some tracks can't be downloaded in MQA Codec

This is my json:
"codecs": { "proprietary_codecs": true, "spatial_codecs": false

"enable_mobile": true, "force_non_spatial": false, "prefer_ac4": false, "fix_mqa": true

Problem tracks : https://tidal.com/album/331653715
=== Downloading track You’re Losing Me (From The Vault) (331653717) === Artists: Taylor Swift (3557299) Release year: 2023 Duration: 04m:38s Codec: FLAC, bitrate: 1543kbps, bit depth: 24bit, sample rate: 48.0kHz Downloading track file 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 72/72 [00:02<00:00, 34.33it/s] Downloading artwork Retrieving lyrics with musixmatch Retrieving credits Tagging file === Track 331653717 downloaded ===

When I try other tracks, it downloads MQA correctly, for example : https://tidal.com/album/282033424
=== Downloading track All Of The Girls You Loved Before (282033425) === Artists: Taylor Swift (3557299) Release year: 2023 Duration: 03m:41s Codec: MQA, bit depth: 24bit, sample rate: 44.1kHz Downloading track file 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 40.2M/40.2M [00:00<00:00, 44.2MB/s] Downloading artwork Retrieving lyrics with musixmatch Retrieving credits Tagging file === Track 282033425 downloaded ===

I also tried the Tidal-dl project and was able to correctly download the MQA code for the track(331653717).

How to use album_id in album_format?

Thank you for this cool project.

I am trying to use the {album_id} variable in the album_format setting, but this leads to a KeyError. I see that {album_id} is documented as a variable for track_filename_format, but this does not make much sense.

Please allow {album_id} to be used in album_format because, well, {album_id} is actually a property of an album.

I'm using the Tidal module.

[feat. request] Set temporary folder

For projects that have multiple downloads ongoing, the temporary folders seem to overlap and cause errors because the temporary files are being removed, I suggest that we can set the temporary folder like we can set the download folder to prevent this from happening.

can someone guide me?

i'm kinda lost because i don't know much of how phyton works, if somebody could help me, i would be really grateful! :)

raise TidalAuthError("TIDAL BOT protection, try again later!") modules.tidal.tidal_api.TidalAuthError: TIDAL BOT protection, try again later!

Traceback (most recent call last):
File "/data/data/com.termux/files/home/orpheusdl/orpheus.py", line 224, in
main()
File "/data/data/com.termux/files/home/orpheusdl/orpheus.py", line 219, in main
orpheus_core_download(orpheus, media_to_download, tpm, sdm, path)
File "/data/data/com.termux/files/home/orpheusdl/orpheus/core.py", line 368, in orpheus_core_download
music = orpheus_session.load_module(mainmodule)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/data/com.termux/files/home/orpheusdl/orpheus/core.py", line 210, in load_module
loaded_module = class_(module_controller)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/data/com.termux/files/home/orpheusdl/modules/tidal/interface.py", line 114, in init
sessions[session_type].auth(username, password)
File "/data/data/com.termux/files/home/orpheusdl/modules/tidal/tidal_api.py", line 354, in auth
raise TidalAuthError("TIDAL BOT protection, try again later!")
modules.tidal.tidal_api.TidalAuthError: TIDAL BOT protection, try again later!

Mention modules in the README

I don't know if you leave this out for legal reasons or something but people I've sent this program pretty much always get confused after the installation process because a config file doesn't generate without you having a module installed.

I can make a PR to notice but I wanted to see if it was for legal reasons or if the documentation was out of date or something.

Songs with weird/long names don't save properly

Downloading the 5th track on Flume's mixtape seems to screw up orpheus.
The song title is β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œ

Module used: https://github.com/Dniel97/orpheusdl-tidal
Tidal link: https://listen.tidal.com/album/105501517
OS: Ubuntu (the Zorin OS fork to be specific.)

        Track 5/17
        === Downloading track β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œ (105501522) ===
                Artists: Flume (4060648)
                Release year: 2019
                Codec: FLAC, bit depth: 16bit, sample rate: 44.1kHz

                Downloading track file
                100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 10/10 [00:11<00:00,  1.17s/it]
                Warning: Track download failed: [Errno 36] File name too long: 'temp/a741026835034e18026cf1549ecfe575.flac' -> './downloads/Flume - Hi This Is Flume (Mixtape)/05. Flume - β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œβ•«Β§β•œΟ†Β°βŒ‚β–Œ.flac'
        === Track 105501522 failed ===

Other tracks with "normal" names downloads normally and properly.

Error after downloading artwork

Traceback (most recent call last):
  File "%userprofile%\orpheusdl\orpheus.py", line 201, in <module>
    main()
  File "%userprofile%\orpheusdl\orpheus.py", line 196, in main
    orpheus_core_download(orpheus, media_to_download, tpm, sdm, path)
  File "%userprofile%\orpheusdl\orpheus\core.py", line 371, in orpheus_core_download
    downloader.download_album(media_id, extra_kwargs=media.extra_kwargs)
  File "%userprofile%\orpheusdl\orpheus\music_downloader.py", line 147, in download_album
    self.download_track(track_id, album_location=album_path, track_index=index, number_of_tracks=number_of_tracks, main_artist=artist_name, cover_temp_location=cover_temp_location, indent_level=indent_level+1, extra_kwargs=album_info.track_extra_kwargs)
  File "%userprofile%\orpheusdl\orpheus\music_downloader.py", line 369, in download_track
    f.write(lyrics_info.synced)
  File "%programfiles%\Python310\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 110-111: character maps to <undefined>

Batch Queuing

I was wondering if it would be possibly to implement a batch queuing option?
Easiest way would be if it accepts a txt file at command line and txt file contains URLs 1 per line.
No worries if no possible :)

Error Installing

Hello. Just following the installation guide, when I got hit with this

Traceback (most recent call last):
File "/Users/drossos/Desktop/orpheusdl/orpheus.py", line 6, in
from orpheus.core import *
File "/Users/drossos/Desktop/orpheusdl/orpheus/core.py", line 4, in
from orpheus.music_downloader import Downloader
File "/Users/drossos/Desktop/orpheusdl/orpheus/music_downloader.py", line 5, in
from ffmpeg import Error
ImportError: cannot import name 'Error' from 'ffmpeg' (/opt/homebrew/lib/python3.9/site-packages/ffmpeg/init.py)

Here are my installed 'pip' packages:

Package Version


certifi 2021.10.8
charset-normalizer 2.0.12
defusedxml 0.7.1
ffmpeg-python 0.2.0
future 0.18.2
idna 3.3
importlib 1.0.4
mutagen 1.45.1
Pillow 9.1.0
pip 22.1
protobuf 3.20.1
pycryptodomex 3.14.1
requests 2.27.1
setuptools 49.2.1
tqdm 4.64.0
urllib3 1.26.9

pls helpp

Traceback (most recent call last):
File "C:\Users\MYPC\Desktop\orpheusdl-master\orpheus.py", line 224, in
main()
File "C:\Users\MYPC\Desktop\orpheusdl-master\orpheus.py", line 219, in main
orpheus_core_download(orpheus, media_to_download, tpm, sdm, path)
File "C:\Users\MYPC\Desktop\orpheusdl-master\orpheus\core.py", line 399, in orpheus_core_download
downloader.download_track(media_id, extra_kwargs=media.extra_kwargs)
File "C:\Users\MYPC\Desktop\orpheusdl-master\orpheus\music_downloader.py", line 294, in download_track
track_info: TrackInfo = self.service.get_track_info(track_id, quality_tier, codec_options, **extra_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\MYPC\Desktop\orpheusdl-master\modules\qobuz\interface.py", line 99, in get_track_info
stream_data = self.session.get_file_url(track_id, quality_tier)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\MYPC\Desktop\orpheusdl-master\modules\qobuz\qobuz_api.py", line 95, in get_file_url
return self._get('track/getFileUrl', params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\MYPC\Desktop\orpheusdl-master\modules\qobuz\qobuz_api.py", line 34, in _get
raise self.exception(r.text)
orpheus.core.Orpheus.load_module..ModuleError: qobuz --> {"status":"error","code":400,"message":"Invalid Request Signature parameter (request_sig) (Root=1-64cfd7d5-644b73834b7c08fb5fb3cbfc)"}

No modules are installed, quitting

`C:\Users\jason\OrpheusDL>python3 orpheus.py settings refresh


/ __ \ | | | __ | |
| | | |_ __ _ __ | |__ ___ _ _ | | | | |
| | | | '
| '
| '_ \ / _ \ | | / | | | | |
| |
| | | | |) | | | | __/ || __ \ || | |____
_
/|| | ./|| ||_|_,|//|___|
| |
|
|

No modules are installed, quitting`

No features?

Is there any way to add the features to the track name/artist? For example downloading https://tidal.com/browse/track/4875690?u will show Pusha T in the CLI, but when I play the file it doesn't show his name as an artist or in the song title, here's my settings.json:

{
"global": {
"general": {
"download_path": "./downloads/",
"download_quality": "hifi",
"search_limit": 10
},
"artist_downloading": {
"return_credited_albums": true,
"separate_tracks_skip_downloaded": true
},
"formatting": {
"album_format": "{name}",
"playlist_format": "{name}",
"track_filename_format": "{name}",
"single_full_path_format": "{name}",
"enable_zfill": true,
"force_album_format": false
},
"codecs": {
"proprietary_codecs": true,
"spatial_codecs": true
},
"module_defaults": {
"lyrics": "default",
"covers": "default",
"credits": "default"
},
"lyrics": {
"embed_lyrics": true,
"embed_synced_lyrics": false,
"save_synced_lyrics": true
},
"covers": {
"embed_cover": true,
"main_compression": "low",
"main_resolution": 1400,
"save_external": false,
"external_format": "png",
"external_compression": "low",
"external_resolution": 5000,
"save_animated_cover": true
},
"playlist": {
"save_m3u": true,
"paths_m3u": "absolute",
"extended_m3u": true
},
"advanced": {
"advanced_login_system": false,
"codec_conversions": {
"alac": "flac",
"wav": "flac"
},
"conversion_flags": {
"flac": {
"compression_level": "0"
}
},
"conversion_keep_original": false,
"cover_variance_threshold": 8,
"debug_mode": false,
"disable_subscription_checks": false,
"enable_undesirable_conversions": false,
"ignore_existing_files": false,
"ignore_different_artists": true
}
},
"extensions": {},
"modules": {
"tidal": {
"tv_atmos_token": "xxxxx",
"tv_atmos_secret": "xxxxx=",
"mobile_atmos_hires_token": "xxxxxx",
"mobile_hires_token": "xxxxxxx",
"enable_mobile": true,
"prefer_ac4": false,
"fix_mqa": true
}
}
}

No Modules are installed quitting

I installed orpheusdl with the modules and whenever I'm running it using python, it shows the logo but is saying the message typed above. But I'm running it with python and not python3, could that be the reason, if so, I tried to run it using python3 but wasn't running at all.

Ffmpeg is not installed or is not working!

When i tried to download music on flac 24bitup not mqa, it says ffmpeg is not installed or not working! I have this issue because it converts to m4a but i wanna have it on flac any solutions?

No modules are installed

Hello, I've encountered an issue during the initial setup where it says no modules installed. I have done the prerequisite pip install -r requirements.txt and have python 3.11 (the latest ver) installed. Is there a way to fix this issue? as i tried two times and it gives the same result, thank you!

note: python 3 is substituted with "python" only in the commands as python 3 is not recognized as a command in my cmd
No modules are installed

Cannot setup tidal module

Hello. I tried to install orpheusdl for my mac. I cannot install orpheusdl.
When I run this command
pip install -r requirements.txt
I got this error:
zsh: command not found: pip

I tried to google and tried to install pip on my Mac and my Mac already have pip-22.0.4
How can I move on?

system cannot find file specified

C:\Users\name>git clone https://github.com/OrfiTeam/OrpheusDL.git && cd OrpheusDL
Cloning into 'OrpheusDL'...
remote: Enumerating objects: 508, done.
remote: Counting objects: 100% (180/180), done.
remote: Compressing objects: 100% (63/63), done.
Receiving objects: 100% (508/508), 146.03 KiB | 1.92 MiB/s, done.
remote: Total 508 (delta 146), reused 129 (delta 117), pack-reused 328
Resolving deltas: 100% (345/345), done.

C:\Users\name\OrpheusDL>pip install -r requirements.txt
Fatal error in launcher: Unable to create process using '"C:\Python310\python.exe" "C:\Python310\Scripts\pip.exe" install -r requirements.txt': The system cannot find the file specified.

C:\Users\name\OrpheusDL>

Feature Request: Segmented jobs

A method to segment jobs

Takes the arguments offset and size_limit

When fetching the metadata iterate each track in each record to calculate a total rough uncompressed size estimate (e.g. bitrate x samples or time) for each record until size_limit is reached then execute job and return a new offset position (or number of records traversed).

AIFF support

Hey -- thank you very much for your work!

Is there any specific reason why the AIFF codec isn't supported? I'd love to automatically convert from FLAC to AIFF. Happy to submit a PR if you want.

Have a nice day :)

Advanced Settings:

Hello mate,
Maybe you could explain the advanced settings, even just a bit. I already played with them and the conversation to ALAC (M4A) from flac is working.
I just ask cause I don't want to convert my tracks to a lower quality alac as they was in flac. Because in the advanced settings, you could set a compression level for the track, also cover.

Wishing you all the best!
Happy Orpheus user. :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.