vitiko98 / qobuz-dl Goto Github PK
View Code? Open in Web Editor NEWA complete Lossless and Hi-Res music downloader for Qobuz
License: GNU General Public License v3.0
A complete Lossless and Hi-Res music downloader for Qobuz
License: GNU General Public License v3.0
does not function if source contains "/" in title. Thanks for this!
Often the releases are added days or even weeks before the release date but obviously the tracks are not available so it would be useful for the tool to check the release date and skip the download and above all not mark the release as downloaded then adding the ID in the database.
Thank you so much.
Just wanted to try this out, but unfortunately it doesnt work.
After entering credentials , its not possible to login.
Error during login: Invalid app secret.
Reset your credentials with 'qobuz-dl -r'.
Resetting doesnt help...
Futher analysis shows it is coming from qoby, there is a http 400 error for each request made.
Invalid Request Signature parameter (signature here)
Could be related to app_id or secrects I think?
Anything we can do?
Again for example album: https://play.qobuz.com/album/0002894814756
Adding Composer and the main piece name (that I don't know in which field it is stored) to the metadata will be most appreciated.
Hi ,the following errors information shows several times on different albums downloading :
eg: https://play.qobuz.com/album/0002894743832
Traceback (most recent call last):
File "/usr/local/bin/qobuz-dl", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/cli.py", line 139, in main
qobuz.download_list_of_urls(arguments.SOURCE)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 180, in download_list_of_urls
self.download_from_txt_file(url)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 199, in download_from_txt_file
self.download_list_of_urls(urls)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 182, in download_list_of_urls
self.handle_url(url)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 170, in handle_url
self.download_from_id(item_id, type_dict["album"])
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 108, in download_from_id
downloader.download_id_by_type(
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/downloader.py", line 248, in download_id_by_type
download_and_tag(
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/downloader.py", line 146, in download_and_tag
f'{artist if artist else track_metadata["album"]["artist"]["name"]}'
KeyError: 'album'
There is no information in date tag wich is prefer in colums ui in foobar2000 in all downloaded files
In 'fun' mode, a search for a composer e.g. Handel will result in an error around the performer field.
Again, support for this field and storing that in the ID3 would be amazing.
Thanks for your great work!
Steve
Solved
Hi there,
is there any chance to download the cover art in HQ? I noticed that the covers are downscaled by qobuz, you can see the string "_600.jpg" at the end of any image link for example. Maybe mitmproxy can help?
Thank you.
Hello, there is a way to embed the artwork of any album in the original resolution and not in 600x600?
Only thing I know is that you can get the original resolution taking the url of any Qobuz album cover, for example,"cover_600.jpg" and changing it to "cover_org.jpg".
Is there anything you can do with that information for getting the original cover resolution with qobuz-dl?
When cover file is too big, no any tags can be added to file. There is must be function that can download big size cover in the path and add a little size cover in tags
Thanks for this as I found it by accident. Was using the one from Sorrow before they pulled it.
So far so good, but would there be a way to skip already downloaded songs. Like if I choose -q 27 it would only get the hi-res per the flag and skip the lower versions, but if needed also download the other versions that a hi-res isn't available.
If not no biggie as I can make a txt with what I would like. I just thought it would be nice to say pick and artist and let it get the highest quality and not have two copies one hi-res and one not.
Hi homie,
Thanks for your amazing work. I would like to know how can i contribuate u for yr time and yr skills?
Best Regards
Bavaria
Sometimes there are different versions of the same album.
For example, one version could be "clean" when another one could be "explicit".
As those albums have all the same name/year/quality/etc, they are stored in the same folder.
An example: "Madonna - Rebel Heart"
https://play.qobuz.com/album/0060254722641 - Clean version, 19 tracks
https://play.qobuz.com/album/0060254723453 - Mature version, 14 tracks
https://play.qobuz.com/album/0060254730346 - 6 tracks
https://play.qobuz.com/album/0060254724639 - Clean version, 14 tracks
https://play.qobuz.com/album/0060254726534 - Mature version, 25 tracks.
At the end you get everything in a single folder.
Not sure if this is intended or not, and how could be managed.
On way would be to add, on the folder name, the id of the album. Of course this would produce file duplicates and a waste of space & bandwidth, but would guarantee to have all tracks and to not mix different albums on the same folder.
Anyway, there is also the problem that some albums have different version of the same song on the same track number, resulting in missing some versions of the track.
This could be also "fixed" by implementing in the meantime a new feature, giving the possibility to configure the generated folder name & track name:
Something like "[{year_release}] [{quality}] {optional_tags} {album_name} [{album_id}]".
In this way the user can decide if store everything in the same folder or not, and how to organize the folder.
For example I prefer to have the year release at the beginning of the folder name.
(base) C:\Users\Usuario>qobuz-dl dl -e "C:\Users\Usuario\Desktop\album_list.txt"
Logging...
Logged: OK
Membership: Studio
Invalid url: "C:\Users\Usuario\Desktop\album_list.txt". Use urls from https://play.qobuz.com!
Hi,
Is it possible to add in downloading of only the explicit version of an album or song if both a clean and explicit version appears?
Thank you.
Please consider the following changes:
https://play.qobuz.com/album/p39tju9ljy8ra
"(Acoustic Bossa Version)" is missing.Thank you.
Logging...
Logged: OK
Membership: Studio
Set quality: 27 - 24B>96kHz
Ok, we'll search for playlists
Enter your search: [Ctrl + c to quit]
Scenario: today I downloaded a whole small record label, on his facebook page I read that there will be 3 new releases next month.
.
Idea: the tool save a text file with all links of the downloaded releases today if add the argument, for example. "--dl-links
", next month when I use the "download mode" with the link of the record label add the argument "--links
" and the path text file. The tool compare the links contained in the text file and download the missing links.
_
Example: qobuz-dl dl -q 27 https://play.qobuz.com/label/124345 --links /path/of/your/file
It could be a good idea?
After upgraded the 0.70, I always encounter the following error:
85.6M/85.6M /// Eine Alpensinfonie: I. Nacht - Sonnenaufgang [24/96]
Error tagging the file: block is too long to write
when searching for something, if you do not find what you're looking for you cannot press ctrl+c or escape (or any key combo) to go back to the previous menu
When downloading everything about an artist, it would be nice to have the possibility to skip single & EP.
Same thing with albums where the artist is present just in few tracks and not the whole album.
The idea is that, when downloading an artist, the folder contains only albums that starts with the artist name and it does not have any EPs & singles.
This label seems to appear in all album folder names as high res even if they are CD quality. Maybe it is taking this from the command line options instead of the CDs themselves?
Would it be possible to create a relative path M3U file for each playlist when they are downloaded?
I have written a hacky thing for myself, but it would be nice if the software did it by itself automatically.
When i try to download tracks that have special characters e.g: ร or japanese characters, it throws this error
Traceback (most recent call last):
File "/crypt/archive/music/qobuz-dl/venvdocker/bin/qobuz-dl", line 11, in <module>
sys.exit(main())
File "/crypt/archive/music/qobuz-dl/venvdocker/lib/python3.6/site-packages/qobuz_dl/cli.py", line 93, in main
qobuz.download_list_of_urls(arguments.SOURCE)
File "/crypt/archive/music/qobuz-dl/venvdocker/lib/python3.6/site-packages/qobuz_dl/core.py", line 152, in download_list_of_urls
self.handle_url(url)
File "/crypt/archive/music/qobuz-dl/venvdocker/lib/python3.6/site-packages/qobuz_dl/core.py", line 140, in handle_url
self.download_from_id(item_id, type_dict["album"])
File "/crypt/archive/music/qobuz-dl/venvdocker/lib/python3.6/site-packages/qobuz_dl/core.py", line 91, in download_from_id
self.ignore_singles_eps,
File "/crypt/archive/music/qobuz-dl/venvdocker/lib/python3.6/site-packages/qobuz_dl/downloader.py", line 229, in download_id_by_type
print("\nDownloading: {}\n".format(track_title))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-17: ordinal not in range(128)
I'm using the latest version.
Thanks for your speedy work on this!
I was just trying the new version of your software and I don't seem to have the information in the tags (tested with both FLAC and MP3).
From the example album, the first track now reads : 1. Allegro molto moderato (None) and doesn't mention "Fantasy in F minor, D. 940 (Op.103) for piano duet (Franz Schubert)" anywhere on the track.
Originally posted by @steve-o-matic in #18 (comment)
instead of overwriting (or not) , the program crashes if a file already exists (thus losing all of your search results that were queued for downloading)
Getting the error below trying to enter my password or update my config using -r. Related I'm assuming to a % in my PW.
Traceback (most recent call last):
File "\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "\Scripts\qobuz-dl.exe\__main__.py", line 9, in <module>
File "\site-packages\qobuz_dl\cli.py", line 255, in main
password = config["DEFAULT"]["password"]
File "\configparser.py", line 1252, in __getitem__
return self._parser.get(self._name, key)
File "\configparser.py", line 799, in get
d)
File "\configparser.py", line 394, in before_get
self._interpolate_some(parser, option, L, value, section, defaults, 1)
File "\configparser.py", line 444, in _interpolate_some
"found: %r" % (rest,))
configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: [PW redacted]`
Older version (before the .exe) worked fine.
Example: https://play.qobuz.com/album/0002894814756
Works with older version of this package but after merging the pull requests results in error.
Probably just needs another Try/Catch block in the code.
Downloading all the music from '80s Synth-Pop (playlist)!
50 downloads in queue
Traceback (most recent call last):
File "/usr/local/bin/qobuz-dl", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/cli.py", line 116, in main
qobuz.interactive()
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 337, in interactive
self.download_list_of_urls(final_url_list)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 169, in download_list_of_urls
self.handle_url(url)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 149, in handle_url
self.download_from_id(
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 99, in download_from_id
downloader.download_id_by_type(
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/downloader.py", line 254, in download_id_by_type
parse = client.get_track_url(item_id, quality)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/qopy.py", line 149, in get_track_url
return self.api_call("track/getFileUrl", id=id, fmt_id=fmt_id)
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/qopy.py", line 91, in api_call
fmt_id, track_id, unix, self.sec
AttributeError: 'Client' object has no attribute 'sec'
I found on multi-disc sets while it does put in separate folders, the total disc and disc numbers are not in the tags.
So when renaming or organizing with Picard it puts all the tracks in the same folder. No a huge deal as I can recheck or manually fix, but just a thought. Tags show as totaldisc and discnumber.
I was just listening to a multi-cd box and even though the folder names are perfect, the disc is not in the metadata. This appears to be a regression as I am almost sure this was working previously.
when searching "David Ian"
Please add support "#" to the text files. In this way the tool skips the comment and it is possible to add personal notes without getting the error messages due to non-links.
Thank you.
It would be nice to have the files saved in subfolders when an album contains more than 1 CD.
Specially because some albums have the same track name (in different version) on different CDs, and this cause the first file to be overwritten.
In addition, it would be nice to have an option that checks if a file already exists to avoid duplicated downloads (ex.: to resume the download of an album that was previously interrupted).
Traceback (most recent call last):
File "/.local/bin/qobuz-dl", line 10, in
sys.exit(main())
File "/.local/lib/python3.9/site-packages/qobuz_dl/cli.py", line 101, in main
qobuz.interactive()
File "/.local/lib/python3.9/site-packages/qobuz_dl/core.py", line 322, in interactive
self.download_list_of_urls(final_url_list)
File "/.local/lib/python3.9/site-packages/qobuz_dl/core.py", line 152, in download_list_of_urls
self.handle_url(url)
File "/.local/lib/python3.9/site-packages/qobuz_dl/core.py", line 137, in handle_url
new_path,
File "/.local/lib/python3.9/site-packages/qobuz_dl/core.py", line 91, in download_from_id
self.ignore_singles_eps,
File "/.local/lib/python3.9/site-packages/qobuz_dl/downloader.py", line 227, in download_id_by_type
meta = client.get_track_meta(item_id)
File "/.local/lib/python3.9/site-packages/qobuz_dl/qopy.py", line 140, in get_track_meta
return self.api_call("track/get", id=id)
File "/.local/lib/python3.9/site-packages/qobuz_dl/qopy.py", line 108, in api_call
r.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://www.qobuz.com/api.json/0.2/track/get?track_id=49129481
If the tool is aborted from the "Download mode" with multiple URLs (text file) at the next start it re-downloads the covers except for the audio files (skipping).
err message:
Traceback (most recent call last):
File "main.py", line 125, in <module>
sys.exit(main())
File "main.py", line 119, in main
interactive(Qz, directory, arguments.l, True)
File "main.py", line 97, in interactive
searchSelected(Qz, path, Albums, IDs, Types, quality)
File "main.py", line 56, in searchSelected
downloader.iterateIDs(Qz, id_[al[1]], path, quality, False)
File "/home/username/proj/Qobuz-DL/qo_utils/downloader.py", line 88, in iterateIDs
mkDir(dirn)
File "/home/username/proj/Qobuz-DL/qo_utils/downloader.py", line 25, in mkDir
os.mkdir(dirn)
FileNotFoundError: [Errno 2] No such file or directory: '/home/username/data/Music/qo/AC/DC - Back In Black [1980]'
Example album:
AC/DC - Back In Black
Kaleo - A/B
Hi,
The cover.jpg
has relatively small size, would it be possible to insert artwork to all downloaded files?
Hello, is there any chances that this tool will get published on pip ?
When you try to download a release consisting of several discs the cover is not inserted in the metadata.
An option to download only the albums in the highest quality or both and save them in folders with the quality appended. Some artists have the same album twice but in different qualities and if an album is already downloaded it overwrites it even if the new one is in lower quality
I cannot get qo-dl yo run on windows 10. I followed the steps from the how to but no luck. Can some post some easy steps to get the tool to run on windows 10? Thanks
When I search for an artist, I get at most 10 albums listed (along with 10 tracks below it)
However there's no way to tell how many albums that artist actually has
Is there a way to enter an artist's name, and have it automatically download all albums by that artist?
Hi,
Is it possible to specify how to save an album and tracklist? Currently, it saves it as follows:
Artist Name - Album name (Year)
and tracks are saved as Track #.Artist Name - Track name
Would it be possible to specify how the folder name should be such as I currently have my music set up as
Artist name - Year - Album Name
And tracks are just Track # - Track name.
Maybe allow a tag format like --Folder name {Artist - Year - Album} --Track name {track # - Track name}.
I hope it makes sense, if not let me know.
Thank you for your work!!!
Traceback (most recent call last):
File "/usr/local/bin/qobuz-dl", line 5, in
from qobuz_dl import main
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/init.py", line 2, in
from .cli import main
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/cli.py", line 7, in
from qobuz_dl.core import QobuzDL
File "/usr/local/lib/python3.9/site-packages/qobuz_dl/core.py", line 8, in
from bs4 import BeautifulSoup as bso
ModuleNotFoundError: No module named 'bs4'
Still trying to download the same playlist for local shuffling. Just realised only first 500 items are recognised for download. Is this an API limitation?
I've just updated qobuz-dl to the last release and it's now crashing, please see below
apologies if obvious but I have no clue
thanks
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/bin/qobuz-dl", line 8, in
sys.exit(main())
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/qobuz_dl/cli.py", line 92, in main
password = base64.b64decode(config["DEFAULT"]["password"]).decode()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/base64.py", line 87, in b64decode
return binascii.a2b_base64(s)
binascii.Error: Invalid base64-encoded string: number of data characters (9) cannot be 1 more than a multiple of 4
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.