No Description

Aesir 998e7e554e #73 explicit 5 months ago
alembic 9c54f29147 force merge albums #44 9 months ago
api 4c9d6e2c7c discography api and concurrency #47 9 months ago
app d146eaa988 refactor 11 months ago
chimera 1144f69843 #74 handle napster track stream errors 5 months ago
cli bf1562b845 gpm reset option 7 months ago
config 630c37a889 tagging 1 year ago
db 9c54f29147 force merge albums #44 9 months ago
deezer 998e7e554e #73 explicit 5 months ago
generic 998e7e554e #73 explicit 5 months ago
gpm d146eaa988 refactor 11 months ago
img 1532fa7a98 readme 1 year ago
napster 998e7e554e #73 explicit 5 months ago
qobuz 998e7e554e #73 explicit 5 months ago
soundcloud 645190819f snd 11 months ago
tests 7bb917144f deezer tests 7 months ago
tidal 998e7e554e #73 explicit 5 months ago
tokens 66c980b9de init 1 year ago
.gitignore 66c980b9de init 1 year ago
ISSUE_TEMPLATE.md 66c980b9de init 1 year ago
LICENSE 66c980b9de init 1 year ago
README.md 6716d75578 readme 11 months ago
alembic.ini 66c980b9de init 1 year ago
main.py 9c54f29147 force merge albums #44 9 months ago
optional-requirements.txt 1363c731a8 deezer decrypt 1 year ago
requirements.txt 1229ac463d req bump 7 months ago
update.py 66c980b9de init 1 year ago

README.md

banner

chimera

multiple source music downloader
Base code found here: https://notabug.org/RemixDevs/demixed-dl


Usage

command                      | deezer   | tidal    | qobuz    | soundcloud | napster  | gpm      |  dtq    |  Spotify    
--------                     | -------- | -------- | -------- | --------   | -------- | -------- |-------- |----------
login                        |   Y      |   Y      |   Y      |   N        |   Y      |   Y      |   N     |   N  
grab track <id>              |   Y      |   Y      |   Y      |   Y        |   Y      |   Y      |   N     |   Y        
grab album <id>              |   Y      |   Y      |   Y      |   N        |   Y      |   Y      |   N     |   N        
grab playlist <id>           |   Y      |   Y      |   Y      |   Y        |   Y      |   Y      |   N     |   Y 
grab discography <artist id> |   Y      |   Y      |   Y      |   N        |   N      |   N      |   N     |   N 
grab saved                   |   Y      |   N      |   Y      |   N        |   N      |   N      |   N     |   Y  
search track [ENTER]         |   Y      |   Y      |   Y      |   N        |   Y      |   Y      |   Y     |   N   
search album [ENTER]         |   Y      |   Y      |   Y      |   N        |   Y      |   Y      |   Y     |   N   
search isrc <id>             |   Y      |   N      |   N      |   N        |   N      |   N      |   N     |   N   
show track <id>              |   Y      |   Y      |   Y      |   N        |   Y      |   Y      |   N     |   N   
show playlists               |   Y      |   Y      |   Y      |   Y        |   Y      |   Y      |   Y     |   Y    
track quality <id>           |   Y      |   Y      |   Y      |   N        |   Y      |   Y      |   N     |   N  

Exclusive: Deezer

grab show <id> (podcast)
grab episode <id> (single episode from a podcast)

Exclusive: Tidal

search video [ENTER]
grab video <id>
show video <id>

Exclusive: Qobuz

Download a complete label with it's ID.
Label metadata gets cached under import/cache/label_[label_id].pkl.
If that file is older than 4 days it gets deleted and recreated.
Donwload could possibly crash, so I would advise you to change the album download settings, to not overwrite and check_db to True.
Folder Path: Music Root\<Label Name>\Albums

grab label <id>

For a complete usage use the help page or look in the source code of main.py around line 420

FAQ

https://notabug.org/Aesir/chimera/wiki/FAQ

API

Chimera has an api interface see: https://notabug.org/Aesir/chimera-api-docs/src/master/api.md

python main.py --api

Audio Fingerpinting

Feature like Shazam, for integration see: https://notabug.org/Aesir/chimera/wiki/Audio+Fingerprinting

Changelog

07-10-2019

  • Concurrency added (multiple downlod workers)
  • new commands: show status and show queue

When you grab an track, album or playlist with concurrency enabled you will not get any feedback. Use show status to monitor the progress.

24-09-2019

  • New dependency install with pip install -r requirements.txt
  • Faster decryption for deezer track
  • MQA support (again) for tidal

22-09-2019

  • Playlists can now be downloaded as a compilation
    Track NR in Tags changes to position
    Album Tag changes to playlist name
    Everything gets saved in a single playlist folder

05-09-2019

  • GooglePlayMusic added, uses gmusicapi which does not come with the requirements.txt file, because it has to many dependecies install it with pip install gmusicapi There is a config option to enable it, if you don't install gmusicapi everything else will still work Supports:
    • grab [track | album | playlist (use the public share token)]
    • search [track | album]
    • show playlists (shows user playlist, to download you still have to share it and use that token)

01-09-2019

  • Napster added, supports (M4A_320(AAC), M4A_192(AAC), M4A_64(AAC))
  • napster [login | grab track [id | url] | grab album [id | url] | grab playlist id | show playlists]

Info: official track id starts with tra.365693021 => just use the 365693021 without tra.

Usage

grab track 365693021  
grab track https://app.napster.com/artist/eminem/album/recovery/track/cold-wind-blows
grab album https://app.napster.com/artist/eminem/album/recovery
show playlists
grab playlist mp.272317212
grab playlist pp.234543479
search track [new input for query]
search album [new input for query]

31-08-2019

  • Smart CLI Added, just input any url from deezer, tidal or qobuz
    and it will start downloading (supported: track, album, playlist)
    current active service does not matter.
DEEZER -> https://www.deezer.com/track/737967312
grabbing The Man by Taylor Swift ID: 737967312
downloading: 23.0MB [00:05, 4.38MB/s]
decrypting: 100% 4/4 [00:03<00:00,  1.10it/s]

DEEZER -> https://play.qobuz.com/album/x88yammbh9rta
grabbing qobuz album Live and Loud
grabbing Radio Friendly Unit Shifter by Nirvana ID: 69299877
downloading: 35.2MB [00:02, 13.6MB/s]

28-08-2019

  • New Config System
  • use setup chimera to populate new config

Install

Requires Python 3.7.4 (for audio fingerprinting 64bit is required)

  1. download python from here https://www.python.org/downloads/
  2. download the latest source code from here https://notabug.org/Aesir/chimera/archive/master.zip
  3. unzip and open a terminal in that folder
  4. not required but recommended to create a virtual env https://docs.python-guide.org/dev/virtualenvs/
    you can skip this if you only installed python for this project
  5. install requirements with pip pip install -r requirements.txt

Short video: https://www.youtube.com/watch?v=wleo_QNKe_s&feature=youtu.be
Thanks to Bas Curtiz for creating it.


Start

If you created an virtual env: workon chimera

python main.py

First Run

If the file db\db.sqlite does not exists, it gets created with default values. Furthermore your default webbrowser gets opened to http://localhost:5000/configure where you can configure chimera.

Configure

To configure chimera after your initial run. You can use setup chimera if you are in the cli mode.

Update

After each new version, run this command to update the DB scheme:
python update.py

Resources used

Disclaimer

  • Chimera was developed for educational and private use only.
  • Not intended for distibuting and pirating music!
  • I am not responsible for the usage of others.
  • It may be illegal to use this in your country, inform yourself!