sorrow446 / mq-dl Goto Github PK
View Code? Open in Web Editor NEWTool written in Python to download streamable tracks from mora qualitas (モーラクオリタス).
Tool written in Python to download streamable tracks from mora qualitas (モーラクオリタス).
hey sorrow This is the last time I bother you. Thank you for all your help in the past and I wish you a happy day.
the same album
this url work
https://content.mora-qualitas.com/artist/yumi-matsutoya/album/dawn-purple-remastered-2019
this url not work, can't download, meet HTTP Error
https://content.mora-qualitas.com/artist/yumi-matsutoya/album/alb.406030712
I also want to know how to get an album's url like the first url? When I share albums from app, it only show url like https://content.mora-qualitas.com/?id=alb.406030712
Hi Sorrow ,
Is it still up? I am getting this error mess on this command
python3 MQ-DL.py -u https://mora.jp/package/43000002/ANTCD-A0000001648/ -q 4 -k -l ja-JP
Failed to login.
HTTPError: 400 Client Error: Bad Request for url: https://api.napster.com/oauth/token
thank you
Could sb tell me how to install please!!
I have tried for o thousand time.
It just don't work.
Please add support to provide email and/or password in MD5 hashed format in config file.
Thanks for writing a great tool. But I tried downloading and the MQ-DL_x86 file automatically disappeared after opening
运行直接闪退
Signed in successfully.
Item 1 of 1:
Kaori Kobayashi - NOW and FOREVER
Track 1 of 13:
Track failed.
Traceback (most recent call last):
File "mq-dl.py", line 381, in iter_track
track['id'])
File "api\client.py", line 188, in get_tra_stream
'GET', 'v2.2/streams', params=params, headers=headers)
File "api\client.py", line 21, in make_call
r.raise_for_status()
File "requests\models.py", line 943, in raise_for_status
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.napster.com/v2.2/streams?bitrate=96000&format=FLAC&protocol=&track=tra.555418711
Hello, is there something wrong with this agent?
Item 1 of 1:
リュックと添い寝ごはん - あたらしい朝
Track failed.
Traceback (most recent call last):
File "mq-dl.py", line 382, in iter_track
File "api\client.py", line 186, in get_tra_stream
File "api\client.py", line 21, in make_call
File "requests\models.py", line 943, in raise_for_status
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.napster.com/v2.2/streams?bitrate=96000&format=FLAC&track=tra.533232673
Traceback (most recent call last):
File "mq-dl.py", line 357, in
cfg = parse_prefs()
File "mq-dl.py", line 72, in parse_prefs
parser = argparse.ArgumentParser()
File "mq-dl.py", line 65, in parse_cfg
File "json_init_.py", line 299, in load
File "json_init_.py", line 354, in loads
File "json\decoder.py", line 339, in decode
File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Invalid \escape: line 4 column 22 (char 85)
[5692] Failed to execute script mq-dl
Item 1 of 1:
Item failed.
Traceback (most recent call last):
File "/home/ragger/Downloads/Programs/MQ-DL-master/mq-dl.py", line 515, in
main(media_type, _id)
File "/home/ragger/Downloads/Programs/MQ-DL-master/mq-dl.py", line 486, in main
globals()media_type
File "/home/ragger/Downloads/Programs/MQ-DL-master/mq-dl.py", line 445, in track
tra_src_meta = client.get_tra_meta(tra_id)
File "/home/ragger/Downloads/Programs/MQ-DL-master/api/client.py", line 127, in get_tra_meta
j = self.make_call(
File "/home/ragger/Downloads/Programs/MQ-DL-master/api/client.py", line 21, in make_call
r.raise_for_status()
File "/usr/local/lib/python3.9/dist-packages/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.napster.com/v2.2/tracks/Tra.533232673?catalog=JP_MORAQUALITAS&lang=en-US&rights=2
I used google colab for run MQ-DL, and i found this error (my friend who uses this on android with termux also gets an error like this)
My input (! sign mean linux syntax in colab, & i save MQ-DL folder on /content/):
!python3 /content/MQ-DL/mq-dl.py -u https://content.mora-qualitas.com/?id=alb.203308770
and the result are:
_____ _____ ____ __
| | |___| \| |
| | | | | |___| | | |__
|_|_|_|__ _| |____/|_____|
|__|
Signed in successfully.
Item 1 of 1:
The Chainsmokers - Bouquet
Track 1 of 5:
Track failed.
Traceback (most recent call last):
File "/content/MQ-DL/mq-dl.py", line 381, in iter_track
track['id'])
File "/content/MQ-DL/api/client.py", line 188, in get_tra_stream
return j['streams'][0]['url']
IndexError: list index out of range
When I try to run the application this error appears to me could you solve it?
MQ-DL.py README.md api config.json requirements.txt
$ python MQ-DL.py
Traceback (most recent call last):
File "MQ-DL.py", line 31, in
os.chdir(os.path.dirname(file))
FileNotFoundError: [Errno 2] No such file or directory: ''
$
Hi, Sorrow.
One more issue is occurred today as below,
Album failed.
IndexError: list index out of range
I wonder if it can be fixed.
Thanks a lot.
After editing config.sjon I get read errors
Traceback (most recent call last):
File "C:\OS\MQ-DL-master\MQ-DL.py", line 357, in
cfg = parse_prefs()
File "C:\OS\MQ-DL-master\MQ-DL.py", line 71, in parse_prefs
cfg = parse_cfg()
File "C:\OS\MQ-DL-master\MQ-DL.py", line 64, in parse_cfg
return json.load(f)
File "C:\Users\tegha\AppData\Local\Programs\Python\Python38-32\lib\json_init_.py", line 293, in load
return loads(fp.read(),
File "C:\Users\tegha\AppData\Local\Programs\Python\Python38-32\lib\json_init_.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Users\tegha\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\tegha\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid \escape: line 4 column 22 (char 85)
I updated to the new api and exe and this happened:
Traceback (most recent call last):
File "mq-dl.py", line 381, in iter_track
track['id'])
File "api\client.py", line 189, in get_tra_stream
return j['streams'][0]['url']
IndexError: list index out of range
C:\Users\Sarus>C:\Users\Sarus\Desktop\MQ-DL-3-hotfix-5\mq-dl_x86.exe -u https://content.mora-qualitas.com/artist/ryukku-to-soine-gohan/album/neo-neo-ep/track/t.533232673
| | || | |
| | | | | || | | |__
||||__ | |__/|___|
||
Traceback (most recent call last):
File "urllib3\connectionpool.py", line 696, in urlopen
File "urllib3\connectionpool.py", line 964, in prepare_proxy
File "urllib3\connection.py", line 359, in connect
File "urllib3\connection.py", line 502, in connect_tls_proxy
File "urllib3\util\ssl.py", line 432, in ssl_wrap_socket
File "urllib3\util\ssl.py", line 474, in _ssl_wrap_socket_impl
File "ssl.py", line 407, in wrap_socket
File "ssl.py", line 817, in init
File "ssl.py", line 1077, in do_handshake
File "ssl.py", line 689, in do_handshake
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:847)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "requests\adapters.py", line 449, in send
File "urllib3\connectionpool.py", line 756, in urlopen
File "urllib3\util\retry.py", line 573, in increment
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.napster.com', port=443): Max retries exceeded with url: /oauth/token (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:847)'),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "mq-dl.py", line 508, in
for num, url in enumerate(cfg['urls'], 1):
File "mq-dl.py", line 28, in auth
client.auth(email, pwd, lang)
File "api\client.py", line 39, in auth
'POST', 'oauth/token', data=data, headers=headers)
File "api\client.py", line 20, in make_call
r = self.s.request(method, self.bases[i] + epoint, params=params, data=data)
File "requests\sessions.py", line 542, in request
File "requests\sessions.py", line 655, in send
File "requests\adapters.py", line 514, in send
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.napster.com', port=443): Max retries exceeded with url: /oauth/token (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:847)'),))
[9096] Failed to execute script mq-dl
File "mq-dl.py", line 505, in
cfg = parse_prefs()
File "mq-dl.py", line 109, in parse_prefs
cfg = parse_cfg()
File "mq-dl.py", line 36, in parse_cfg
return json.load(f)
File "json_init_.py", line 299, in load
File "json_init_.py", line 354, in loads
File "json\decoder.py", line 339, in decode
File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Invalid control character at: line 2 column 38 (char 39)
[5408] Failed to execute script mq-dl
What's the problem
I'm sorry to hear that below, and wondering if Sorrow446 will fix it.
Traceback (most recent call last):
File "MQ-DL.py", line 294, in
main()
File "MQ-DL.py", line 260, in main
client.auth(cfg['email'], cfg['password'])
File "/root/MQ-DL/morapy/morapy.py", line 70, in auth
j = self.api_call(self.base + 'oauth/token', 'auth', email=email, pwd=pwd)
File "/root/MQ-DL/morapy/morapy.py", line 63, in api_call
raise AuthenticationError('Invalid credentials.')
morapy.exceptions.AuthenticationError: Invalid credentials.
{"code":"UnauthorizedError","message":"Unauthorized"}
$ python MQ-DL.py -u https://content.mora-qualitas.com/artist/terence-lam/album/next-410946296/
_____ _____ ____ __
| | |___| \| |
| | | | | |___| | | |__
|_|_|_|__ _| |____/|_____|
|__|
Signed in successfully.
Album 1 of 1:
Terence Lam - Next
Downloading track 1 of 1: Next - 24-bit / 48000 Hz FLAC
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 27.7M/27.7M [00:02<00:00, 11.5MB/s]
$ file mora/Terence\ Lam\ -\ Next/1.\ Next.flac
mora/Terence Lam - Next/1. Next.flac: FLAC audio bitstream data, 16 bit, stereo, 44.1 kHz, 12137852 samples
I suspect this happen when the site uses one "item" for both CD and HR files.
Thank you for the work btw. It allows me to at least have an extra source to cross-check my HR purchases on Qobuz for crap like UMG watermarking.
HTTPError: 403 Client Error: Forbidden for url: https://api.napster.com/oauth/token
"developerKey"
感谢作者开发如此好用软件
从最开始的版本,到去年5月的版本也一直在使用
确实也蛮好用的,
也感激作者一直在维护这个项目,
这几日,上来更新版本
发现自己不会调用 使用改程序了
希望可以得到解答
使用默认的实例
已经修改config.json配置文件中的
账号合密码
mq-dl.py/mq-dl_x86.exe -u https://content.mora-qualitas.com/artist/ryukku-to-soine-gohan/album/neo-neo-ep/track/t.533232673
字符串
得到了下面截图的效果
Hi i have ready my mq account, but cant figure out how to run this, in my windows the exe, close and disappears i to try to open the MQ-DL.py. with the idle and run the command and say ModuleNotFoundError: No module named 'requests' to, with the CMD i try to use the exe but say mq-dl_x86.exe: error: the following arguments are required: -u/--url
can you help i try everything and nothing.
Thanks for making such a great tool.
We can't take advantage of your tool since we don't have account with moraqualitas.
So all my request is to close this issue by updating atleast one trial moraqualitas account in comment or mail
Note: "moraqualitas doesn't accept other country people registration"
Hi! this is my first time here, My question is can you download an artist's whole discography?
Thank you for providing us this tool!🎉
Seems like it broke again. I'm getting:
Traceback (most recent call last):
File "MQ-DL/mq-dl.py", line 380, in iter_track
stream_url = client.get_tra_stream(specs['brate'], specs['fmt'],
File "MQ-DL/api/client.py", line 186, in get_tra_stream
j = self.make_call(
File "MQ-DL/api/client.py", line 21, in make_call
r.raise_for_status()
File "/python/lib/python3.9/site-packages/requests/models.py", line 943, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.napster.com/v2.2/streams?bitrate=44100&format=FLAC&protocol=&track=tra.41391687
Doubles quotes of track 3 fail to be replaced.
https://content.mora-qualitas.com/artist/tmrevolution/album/makes-revolution-sony-music-labels-inc?type=web&cid=mqapp_share_web
return re.sub(r'[\/:*?"><|]', '_', f)
Hello @Sorrow446
Faced this error today
Item 1 of 1:
Item failed.
Traceback (most recent call last):
File "mq-dl.py", line 515, in
main(media_type, _id)
File "mq-dl.py", line 486, in main
globals()media_type
File "mq-dl.py", line 420, in artist
artist, art_ids = get_artist_meta(art_id)
File "mq-dl.py", line 97, in get_artist_meta
art_meta = client.get_art_meta(art_id)
File "/content/drive/MyDrive/mq-dl/api/client.py", line 78, in get_art_meta
'GET', "v2.2/artists/" + art_id, params=params, headers=headers)
File "/content/drive/MyDrive/mq-dl/api/client.py", line 21, in make_call
r.raise_for_status()
File "/usr/local/lib/python3.6/dist-packages/requests/models.py", line 941, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.napster.com/v2.2/artists/Art.12701758?catalog=JP_MORAQUALITAS&lang=en-US&rights=2
Thanks for maintaning this Tool ❤
python mq-dl.py -u https://content.mora-qualitas.com/?id=tra.411033134
_____ _____ ____ __
| | || | | | | | | | || | | |__
||||__ | |__/|___|
||
Signed in successfully.
Item 1 of 1:
Ed Sheeran - Shape of You
Track failed.
Traceback (most recent call last):
File "/data/data/com.termux/files/home/MQ-DL/mq-dl.py", line 380, in iter_track
stream_url = client.get_tra_stream(specs['brate'], specs['fmt'],
File "/data/data/com.termux/files/home/MQ-DL/api/client.py", line 190, in get_tra_stream
return j['streams'][0]['url']
IndexError: list index out of range
$
Since the direct connection in my network can be very slow, I use proxy to speed up my downloading. It worked well without problems when using the first R2 release before, but not anymore in the latest release. Proxy tool: clash for windows 0.14.4
Thank you for providing us this tool!
PS E:\Program Files (x86)\MQ-DL> .\mq-dl_x86.exe -u https://content.mora-qualitas.com/artist/whiteeeen/album/aiuta-since-2007-
_____ _____ ____ __
| | |___| \| |
| | | | | |___| | | |__
|_|_|_|__ _| |____/|_____|
|__|
Traceback (most recent call last):
File "urllib3\connectionpool.py", line 696, in urlopen
File "urllib3\connectionpool.py", line 964, in _prepare_proxy
File "urllib3\connection.py", line 359, in connect
File "urllib3\connection.py", line 502, in _connect_tls_proxy
File "urllib3\util\ssl_.py", line 432, in ssl_wrap_socket
File "urllib3\util\ssl_.py", line 474, in _ssl_wrap_socket_impl
File "ssl.py", line 407, in wrap_socket
File "ssl.py", line 817, in __init__
File "ssl.py", line 1077, in do_handshake
File "ssl.py", line 689, in do_handshake
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:847)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "requests\adapters.py", line 449, in send
File "urllib3\connectionpool.py", line 756, in urlopen
File "urllib3\util\retry.py", line 573, in increment
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.napster.com', port=443): Max retries exceeded with url: /oauth/token (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:847)'),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "mq-dl.py", line 506, in <module>
File "mq-dl.py", line 28, in auth
File "api\client.py", line 39, in auth
File "api\client.py", line 20, in make_call
File "requests\sessions.py", line 542, in request
File "requests\sessions.py", line 655, in send
File "requests\adapters.py", line 514, in send
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.napster.com', port=443): Max retries exceeded with url: /oauth/token (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:847)'),))
[3264] Failed to execute script mq-dl
I use the lastest MQ-DL in on Android platform.
Using Termux, download this albums https://content.mora-qualitas.com/?id=alb.429857472
Track 18 of 20:
Downloading track 18 of 20: Cendrillon (feat. Hatsune Miku, KAITO) (Live) - 24-bit / 96000 Hz FLAC
Track failed.
Traceback (most recent call last):
File "/storage/emulated/0/Download/MQ-DL/MQ-DL.py", line 384, in iter_track
download_track(stream_url, specs, meta['title'], num, total, pre_path)
File "/storage/emulated/0/Download/MQ-DL/MQ-DL.py", line 284, in download_track
with open(pre_path, 'wb') as f:
PermissionError: [Errno 1] Operation not permitted: 'MQ-DL downloads/Tokyo Philharmonic Orchestra - Hatsune Miku Symphony: Miku Symphony 2019 Orchestra Live/Tokyo Philharmonic Orchestra - Hatsune Miku Symphony: Miku Symphony 2019 Orchestra Live/18.mq-dl'
Good day @Sorrow446
These albums are the same but the second one is in HR. When I downloaded them via artist link the non HR one comes first to the queue and when it comes to the second one it says that files has already downloaded.
It'll be great and time saving to add an option to not skip downloaded files and just put (2) on the folder's name.
Lots of Love! ❤
The original tool runs fine without issues, but the newer tool immediately terminates itself right after opening it. I don't know how to fix it, or what I have to do to run the program.
you can check the compatibility of the links
Listen to ウィズ・オア・ウィズアウト・ユー by U2 on mora qualitas: https://content.mora-qualitas.com/?id=tra.361763447
Regards
It broke yet again, are they changing their API or something everyday or have they noticed the downloading? It seems to break after downloading a couple of albums.
Track failed.
Traceback (most recent call last):
File "MQ-DL/mq-dl.py", line 380, in iter_track
stream_url = client.get_tra_stream(specs['brate'], specs['fmt'],
File "MQ-DL/api/client.py", line 187, in get_tra_stream
j = self.make_call(
File "MQ-DL/api/client.py", line 21, in make_call
r.raise_for_status()
File "python/lib/python3.9/site-packages/requests/models.py", line 943, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.napster.com/v2.2/streams?bitrate=48000&format=FLAC&protocol=&track=tra.432500816
Not an issue with the tool itself, but having an ampersand in your URLs will break the args and cause the tool to use your config file values instead. It's a Windows console issue. The only fix is to remove before passing, or escape it.
?type=web&cid=mqapp_share_web
EDIT: you can also put all of your other args before your url arg to fix this.
Hi i have ready my mq account, but cant figure out how to run this, in my windows the exe, close and disappears i to try to open the MQ-DL.py. with the idle and run the command and say ModuleNotFoundError: No module named 'requests' to, with the CMD i try to use the exe but say mq-dl_x86.exe: error: the following arguments are required: -u/--url
can you help i try everything and nothing.
README.md api mq-dl.py
README_ja.md config.json requirements.txt
$ python mq-dl.py -u https://content.mora-qualitas.com/?id=tra.101921807
| | || | |
| | | | | || | | |__
||||__ | |__/|___|
||
Signed in successfully.
Item 1 of 1:
Josh Groban - You Raise Me Up
Track failed.
Traceback (most recent call last):
File "/data/data/com.termux/files/home/MQ-DL/mq-dl.py", line 380, in iter_track
stream_url = client.get_tra_stream(specs['brate'], specs['fmt'],
File "/data/data/com.termux/files/home/MQ-DL/api/client.py", line 188, in get_tra_stream
j = self.make_call(
File "/data/data/com.termux/files/home/MQ-DL/api/client.py", line 21, in make_call
r.raise_for_status()
File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.napster.com/v2.2/streams?bitrate=44100&format=FLAC&protocol=&track=tra.101921807
$
What kind of Bin do you use for MQ? I'm testing with Bin from Tidal and crunchyrrol and it doesn't work for me.
Hi, I really appreciated what you created, this is great!!!
But I find a problem when I use it that when album title and the sharing link contains special characters like "*", it can't be defined by your program, how can I avoid this problem and download the audio?
Here is an example: https://content.mora-qualitas.com/artist/413687078/album/-part2-**?type=web&cid=mqapp_share_web
美空ひばり入門 Part2 ペイパー・ムーン 美空ひばり
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.