# Music Clients This section explains how to use all music clients supported by musicdl, covering two main scenarios: direct use from the terminal and integration within Python code. ## Platforms in Greater China #### BilibiliMusicClient [Bilibili Music](https://www.bilibili.com/audio/home/?type=9) is Bilibili’s dedicated audio platform, where users can discover, stream, and enjoy a wide variety of music, podcasts, and original audio content. We can use BilibiliMusicClient to download music from the above music platform. BilibiliMusicClient requires no additional CLI tools such as ffmpeg or N_m3u8DL-RE. Just install musicdl via pip and it is ready to use out of the box. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m BilibiliMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m BilibiliMusicClient -i "{'BilibiliMusicClient': {'default_search_cookies': 'YOUR_COOKIES', 'default_download_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['BilibiliMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'BilibiliMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, 'default_download_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['BilibiliMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` #### BodianMusicClient (Built-in Premium Account) [Bodian Music](https://bodian.kuwo.cn/) is a streamlined QQ Music app offering over 100 million licensed songs, one-tap listening, personalized recommendations, scene-based radio, customizable players, and immersive music backgrounds. BodianMusicClient supports downloading music from the platform mentioned above. BodianMusicClient requires no additional command-line tools such as ffmpeg or N_m3u8DL-RE, just install it with pip install musicdl and start using it right away. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m BodianMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m BodianMusicClient -i "{'BodianMusicClient': {'default_search_cookies': {'uid': 'xxx', 'token': 'xxx', 'dev_id': 'xxx'}}}"` Please be aware that BodianMusicClient only accepts VIP membership cookies in the following format: `default_search_cookies = {"uid": "xxx", "token": "xxx", "dev_id": "xxx-xxx-xxx-xxx-xxx"}` The `uid`, `token`, and `dev_id` can be obtained by packet capturing the Bodian Music desktop client or mobile app. - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://h5app.kuwo.cn/m/bodian/collection.html?uid=45780003&playlistId=86749638&source=5&owerId=" -m BodianMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://h5app.kuwo.cn/m/bodian/collection.html?uid=45780003&playlistId=86749638&source=5&owerId=" -m BodianMusicClient -i "{'BodianMusicClient': {'default_parse_cookies': {'uid': 'xxx', 'token': 'xxx', 'dev_id': 'xxx'}}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['BodianMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'BodianMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['BodianMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['BodianMusicClient']) song_infos = music_client.parseplaylist("https://h5app.kuwo.cn/m/bodian/collection.html?uid=45780003&playlistId=86749638&source=5&owerId=") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'BodianMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['BodianMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://h5app.kuwo.cn/m/bodian/collection.html?uid=45780003&playlistId=86749638&source=5&owerId=") music_client.download(song_infos=song_infos) ``` #### FiveSingMusicClient [5SING Music](https://5sing.kugou.com/index.html) is a KuGou-affiliated online music platform where users can upload and discover original songs, covers, instrumentals, playlists, videos, and independent musicians. FiveSingMusicClient can be used to download music from the music platform mentioned above. Using FiveSingMusicClient does not require installing any extra command-line tools like ffmpeg or N_m3u8DL-RE. Simply run pip install musicdl and you can start using it right away. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m FiveSingMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m FiveSingMusicClient -i "{'FiveSingMusicClient': {'default_search_cookies': 'YOUR_COOKIES', 'default_download_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://5sing.kugou.com/yeluoluo/dj/631b3fa72418b11003089b8d.html" -m FiveSingMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://5sing.kugou.com/yeluoluo/dj/631b3fa72418b11003089b8d.html" -m FiveSingMusicClient -i "{'FiveSingMusicClient': {'default_parse_cookies': 'YOUR_COOKIES', 'default_download_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['FiveSingMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'FiveSingMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, 'default_download_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['FiveSingMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['FiveSingMusicClient']) song_infos = music_client.parseplaylist("https://5sing.kugou.com/yeluoluo/dj/631b3fa72418b11003089b8d.html") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'FiveSingMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, 'default_download_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['FiveSingMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://5sing.kugou.com/yeluoluo/dj/631b3fa72418b11003089b8d.html") music_client.download(song_infos=song_infos) ``` #### KugouMusicClient (Built-in Premium Account) [KuGou Music](http://www.kugou.com/) is a major Chinese online music platform that offers songs, charts, playlists, music videos, audiobooks, and live content. Music from the above platform can be downloaded using KugouMusicClient. KugouMusicClient works out of the box with no need for extra CLI dependencies such as ffmpeg or N_m3u8DL-RE — all you need is pip install musicdl. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m KugouMusicClient` - Simple usage for searching and downloading songs, with login cookies: Kugou Music membership cookies copied directly from the web page can easily cause issues, so we provide the script [build_cookies_for_kugou.py](https://github.com/CharlesPikachu/musicdl/blob/master/scripts/build_cookies_for_kugou.py) in the repository to help you directly obtain valid cookies for your member account. The output format is as follows: ```python {'KUGOU_API_GUID': 'xxx', 'KUGOU_API_MID': 'xxx', 'KUGOU_API_MAC': 'xxx', 'KUGOU_API_DEV': 'xxx', 'token': 'xxx', 'userid': 'xxx', 'dfid': 'xxx'} ``` Then, you can use KugouMusicClient just like other music clients by passing the membership cookies as follows, `musicdl -m KugouMusicClient -i "{'KugouMusicClient': {'default_search_cookies': 'YOUR_COOKIES', 'default_download_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.kugou.com/yy/special/single/18170.html" -m KugouMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.kugou.com/yy/special/single/18170.html" -m KugouMusicClient -i "{'KugouMusicClient': {'default_parse_cookies': 'YOUR_COOKIES', 'default_download_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['KugouMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'KugouMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, 'default_download_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['KugouMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['KugouMusicClient']) song_infos = music_client.parseplaylist("https://www.kugou.com/yy/special/single/18170.html") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'KugouMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, 'default_download_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['KugouMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.kugou.com/yy/special/single/18170.html") music_client.download(song_infos=song_infos) ``` #### KuwoMusicClient (Built-in Premium Account) [Kuwo Music](http://www.kuwo.cn/) is a major Chinese online music platform that offers high-quality music streaming, charts, playlists, radio, and downloadable songs. We can download music from the aforementioned platform with KuwoMusicClient. No additional command-line tools, including ffmpeg or N_m3u8DL-RE, are needed to use KuwoMusicClient. Installing musicdl with pip is enough to get started immediately. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m KuwoMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m KuwoMusicClient -i "{'KuwoMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.kuwo.cn/playlist_detail/2648040171" -m KuwoMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.kuwo.cn/playlist_detail/2648040171" -m KuwoMusicClient -i "{'KuwoMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['KuwoMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'KuwoMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['KuwoMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['KuwoMusicClient']) song_infos = music_client.parseplaylist("https://www.kuwo.cn/playlist_detail/2648040171") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'KuwoMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['KuwoMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.kuwo.cn/playlist_detail/2648040171") music_client.download(song_infos=song_infos) ``` #### MiguMusicClient [Migu Music](https://music.migu.cn/v5/#/musicLibrary) is a Chinese music streaming platform that offers a large library of songs, albums, playlists, and other digital music content. MiguMusicClient allows us to download music from the platform above. MiguMusicClient can be used directly without installing any extra CLI utilities like ffmpeg or N_m3u8DL-RE. Just install musicdl via pip and it is good to go. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m MiguMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m MiguMusicClient -i "{'MiguMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://music.migu.cn/v5/#/playlist?playlistId=208219194&playlistType=create" -m MiguMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://music.migu.cn/v5/#/playlist?playlistId=208219194&playlistType=create" -m MiguMusicClient -i "{'MiguMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['MiguMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'MiguMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['MiguMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['MiguMusicClient']) song_infos = music_client.parseplaylist("https://music.migu.cn/v5/#/playlist?playlistId=208219194&playlistType=create") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'MiguMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['MiguMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://music.migu.cn/v5/#/playlist?playlistId=208219194&playlistType=create") music_client.download(song_infos=song_infos) ``` #### MOOVMusicClient [MOOV Music](https://moov.hk/) is a Hong Kong music streaming platform known for its strong Cantopop catalogue, 24-bit lossless audio, and rich collection of music videos and concert content. MOOVMusicClient provides music download support for the platform mentioned above. MOOVMusicClient works out of the box without requiring additional command-line tools such as ffmpeg or N_m3u8DL-RE. Simply install musicdl via pip, and you are ready to use it. (1) Command-Line Usage - Simple usage for searching and downloading songs, with login cookies: `musicdl -m MOOVMusicClient -i "{'MOOVMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` The cookies must include the `MOOVUUID` and `MTGSESSIONID` fields, like this: `MOOVUUID=7A1DA713-6CC7-461F-91BD-595DF18C159F; MTGSESSIONID=xxx` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://app.moov.hk/xIeFa" -m MOOVMusicClient -i "{'MOOVMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` Please note that if the playlist was created by yourself, for example "https://moov.hk/#/collection/UPL/list/7574202", it is recommended to click Share and use the shared link to parse and download the playlist. (2) Invoke It in Python - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'MOOVMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['MOOVMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'MOOVMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['MOOVMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://app.moov.hk/xIeFa") music_client.download(song_infos=song_infos) ``` #### NeteaseMusicClient (Built-in Premium Account) [NetEase Cloud Music](https://music.163.com/) is one of China’s most popular music streaming platforms, known for its vast song library, personalized recommendations, and active user community. NeteaseMusicClient makes it possible to download music from the above platform. There is no need to install extra tools such as ffmpeg or N_m3u8DL-RE to use NeteaseMusicClient. A simple pip install musicdl is all it takes. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m NeteaseMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m NeteaseMusicClient -i "{'NeteaseMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://music.163.com/#/my/m/music/playlist?id=7583298906" -m NeteaseMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://music.163.com/#/my/m/music/playlist?id=7583298906" -m NeteaseMusicClient -i "{'NeteaseMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['NeteaseMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'NeteaseMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['NeteaseMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['NeteaseMusicClient']) song_infos = music_client.parseplaylist("https://music.163.com/#/my/m/music/playlist?id=7583298906") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'NeteaseMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['NeteaseMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://music.163.com/#/my/m/music/playlist?id=7583298906") music_client.download(song_infos=song_infos) ``` #### QianqianMusicClient [Qianqian Music](https://music.91q.com/) is an online music platform offering a large library of songs, popular playlists, artist content, and curated videos. We use QianqianMusicClient to download music from the above-mentioned platform. QianqianMusicClient comes ready to use without relying on additional CLI tools like ffmpeg or N_m3u8DL-RE. Just install musicdl through pip and you are all set. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m QianqianMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m QianqianMusicClient -i "{'QianqianMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://music.91q.com/songlist/309421" -m QianqianMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://music.91q.com/songlist/309421" -m QianqianMusicClient -i "{'QianqianMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['QianqianMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'QianqianMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['QianqianMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['QianqianMusicClient']) song_infos = music_client.parseplaylist("https://music.91q.com/songlist/309421") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'QianqianMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['QianqianMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://music.91q.com/songlist/309421") music_client.download(song_infos=song_infos) ``` #### QQMusicClient (Built-in Premium Account) [QQ Music](https://y.qq.com/) is a high-quality music streaming platform offering a vast licensed song library, new releases, charts, playlists, MVs, and digital albums. QQMusicClient enables music downloads from the platform mentioned above. To use QQMusicClient, you do not need any extra command-line tools such as ffmpeg or N_m3u8DL-RE. Once musicdl is installed with pip, it works immediately. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m QQMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m QQMusicClient -i "{'QQMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://y.qq.com/n/ryqq_v2/playlist/8740590963" -m QQMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://y.qq.com/n/ryqq_v2/playlist/8740590963" -m QQMusicClient -i "{'QQMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['QQMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'QQMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['QQMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['QQMusicClient']) song_infos = music_client.parseplaylist("https://y.qq.com/n/ryqq_v2/playlist/8740590963") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'QQMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['QQMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://y.qq.com/n/ryqq_v2/playlist/8740590963") music_client.download(song_infos=song_infos) ``` #### SodaMusicClient [Soda Music](https://www.douyin.com/qishui/) is Douyin’s official music streaming app, designed to help users discover and enjoy personalized songs anytime, anywhere. Music from the above-mentioned platform can be fetched using SodaMusicClient. SodaMusicClient offers an out-of-the-box experience: no extra CLI tools like ffmpeg or N_m3u8DL-RE are required, and pip install musicdl is all you need. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m SodaMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m SodaMusicClient -i "{'SodaMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://qishui.douyin.com/s/ix9JA2oW" -m SodaMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://qishui.douyin.com/s/ix9JA2oW" -m SodaMusicClient -i "{'SodaMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SodaMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'SodaMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['SodaMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SodaMusicClient']) song_infos = music_client.parseplaylist("https://qishui.douyin.com/s/ix9JA2oW") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'SodaMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['SodaMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://qishui.douyin.com/s/ix9JA2oW") music_client.download(song_infos=song_infos) ``` #### StreetVoiceMusicClient [StreetVoice](https://www.streetvoice.cn/) is a music platform that helps independent artists share their work, reach new listeners, and grow through playlists, charts, discovery features, and a creator-focused community. To download music from the platform above, we can use StreetVoiceMusicClient. Since StreetVoice audio files are delivered in HLS format, downloading music from the platform with StreetVoiceMusicClient requires the command-line tool [FFmpeg](https://www.ffmpeg.org/). (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m StreetVoiceMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m StreetVoiceMusicClient -i "{'StreetVoiceMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.streetvoice.cn/svmusic_cn/playlists/964546/" -m StreetVoiceMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.streetvoice.cn/svmusic_cn/playlists/964546/" -m StreetVoiceMusicClient -i "{'StreetVoiceMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['StreetVoiceMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'StreetVoiceMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['StreetVoiceMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['StreetVoiceMusicClient']) song_infos = music_client.parseplaylist("https://www.streetvoice.cn/svmusic_cn/playlists/964546/") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'StreetVoiceMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['StreetVoiceMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.streetvoice.cn/svmusic_cn/playlists/964546/") music_client.download(song_infos=song_infos) ``` ## Global Streaming / Indie #### AppleMusicClient [Apple Music](https://music.apple.com/) is Apple’s music streaming platform, offering songs, albums, playlists, radio, and other audio content through its web player and apps. Music available on the platform above can be retrieved by means of AppleMusicClient. To use AppleMusicClient, you will need extra CLI tools such as [FFmpeg](https://www.ffmpeg.org/), [N_m3u8DL-RE](https://github.com/nilaoda/N_m3u8DL-RE/releases/tag/v0.5.1-beta), [Bento4](https://www.bento4.com/) and [amdecrypt](https://github.com/CharlesPikachu/musicdl/releases/tag/clitools), in addition to musicdl. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m AppleMusicClient` Without configured Apple Music subscriber cookies, AppleMusicClient is limited to downloading 30–90-second preview clips instead of full tracks. - Simple usage for searching and downloading songs, with login cookies: `musicdl -m AppleMusicClient -i "{'AppleMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` A few important things to keep in mind: - The cookies you provide must include the `media-user-token` field, for example: `{'media-user-token': 'xxx'}`. - In this case, you only need to make sure [FFmpeg](https://www.ffmpeg.org/) and [N_m3u8DL-RE](https://github.com/nilaoda/N_m3u8DL-RE/releases/tag/v0.5.1-beta) are installed. - musicdl currently supports downloading Apple Music tracks in the following audio formats/quality variants: - `aac-legacy` - `aac-he-legacy` - `aac` - `aac-he` - `aac-binaural` - `aac-downmix` - `aac-he-binaural` - `aac-he-downmix` - `atmos` - `ac3` - `alac` However, if you are downloading with subscriber cookies alone, the highest quality currently available is `aac-legacy`. - Using the wrapper server to search for and download songs: `musicdl -m AppleMusicClient -i "{'AppleMusicClient': {'search_size_per_source': 3, 'language': 'en-US', 'use_wrapper': True, 'wrapper_account_url': 'http://127.0.0.1:30020/', 'wrapper_decrypt_ip': '127.0.0.1:10020'}}"` Using the wrapper server enables musicdl to download higher-quality audio, such as `alac`, although the setup is a bit more complex. - To get started, follow the guide in the [WorldObservationLog/wrapper](https://github.com/WorldObservationLog/wrapper) repository and launch the wrapper server. - If you are on Windows, be aware that decryption will very likely fail unless the wrapper server is run inside Ubuntu on WSL. In other words, you will need to install WSL, set up Ubuntu within it, and start the wrapper server from the Ubuntu environment. - You should also ensure that the `wrapper_account_url` and `wrapper_decrypt_ip` settings are consistent with the corresponding arguments used by your wrapper server. - Besides [FFmpeg](https://www.ffmpeg.org/) and [N_m3u8DL-RE](https://github.com/nilaoda/N_m3u8DL-RE/releases/tag/v0.5.1-beta), you will also need to install [Bento4](https://www.bento4.com/downloads/) and [amdecrypt](https://github.com/CharlesPikachu/musicdl/releases/tag/clitools). - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://music.apple.com/cn/playlist/%E6%9C%80%E6%96%B0%E7%83%AD%E6%9B%B2/pl.24cc3e1bd436415e93d801bccbebdf05" -m AppleMusicClient -i "{'AppleMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` - Using the wrapper server to parse and download songs from a playlist: `musicdl -p "https://music.apple.com/cn/playlist/%E6%9C%80%E6%96%B0%E7%83%AD%E6%9B%B2/pl.24cc3e1bd436415e93d801bccbebdf05" -m AppleMusicClient -i "{'AppleMusicClient': {'search_size_per_source': 3, 'language': 'en-US', 'use_wrapper': True, 'wrapper_account_url': 'http://127.0.0.1:30020/', 'wrapper_decrypt_ip': '127.0.0.1:10020'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['AppleMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl from musicdl.modules.sources.apple import SongCodec cookies = {'media-user-token': 'xxx'} init_music_clients_cfg = {'AppleMusicClient': {'default_search_cookies': cookies, 'search_size_per_source': 10, 'language': 'en-US', 'codec': SongCodec.AAC_LEGACY}} music_client = musicdl.MusicClient(music_sources=['AppleMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Using the wrapper server to search for and download songs: ```python from musicdl import musicdl from musicdl.modules.sources.apple import SongCodec init_music_clients_cfg = {'AppleMusicClient': {'search_size_per_source': 3, 'language': 'en-US', 'use_wrapper': True, 'wrapper_account_url': 'http://127.0.0.1:30020/', 'wrapper_decrypt_ip': '127.0.0.1:10020'}} music_client = musicdl.MusicClient(music_sources=['AppleMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'AppleMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['AppleMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://music.apple.com/cn/playlist/%E6%9C%80%E6%96%B0%E7%83%AD%E6%9B%B2/pl.24cc3e1bd436415e93d801bccbebdf05") music_client.download(song_infos=song_infos) ``` - Using the wrapper server to parse and download songs from a playlist: ```python from musicdl import musicdl init_music_clients_cfg = {'AppleMusicClient': {'search_size_per_source': 3, 'language': 'en-US', 'use_wrapper': True, 'wrapper_account_url': 'http://127.0.0.1:30020/', 'wrapper_decrypt_ip': '127.0.0.1:10020'}} music_client = musicdl.MusicClient(music_sources=['AppleMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://music.apple.com/cn/playlist/%E6%9C%80%E6%96%B0%E7%83%AD%E6%9B%B2/pl.24cc3e1bd436415e93d801bccbebdf05") music_client.download(song_infos=song_infos) ``` #### DeezerMusicClient (Built-in Premium Account) [Deezer](https://www.deezer.com/us/) is a music streaming platform that lets users listen to over 120 million tracks, podcasts, playlists, and other audio content online. Songs hosted on the platform above can be accessed using DeezerMusicClient. DeezerMusicClient comes with no extra CLI tool requirements such as ffmpeg or N_m3u8DL-RE, and only musicdl needs to be installed. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m DeezerMusicClient` Please note that if you use DeezerMusicClient without configuring your account cookies, you will only be able to download roughly a 30-second preview clip for each song (if the built-in premium account expires, which happens quite easily). - Simple usage for searching and downloading songs, with login cookies: `musicdl -m DeezerMusicClient -i "{'DeezerMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` Configured cookies must include the "arl" field, for example `{'arl': xxx, ...}` or `arl=xxx; ...`. In addition, if the account cookies you provide are not from a Deezer Premium subscriber, you will only be able to download songs at 128 kbps. - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.deezer.com/en/playlist/9221517042" -m DeezerMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.deezer.com/en/playlist/9221517042" -m DeezerMusicClient -i "{'DeezerMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['DeezerMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'DeezerMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['DeezerMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['DeezerMusicClient']) song_infos = music_client.parseplaylist("https://www.deezer.com/en/playlist/9221517042") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'DeezerMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['DeezerMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.deezer.com/en/playlist/9221517042") music_client.download(song_infos=song_infos) ``` #### FMAMusicClient [Free Music Archive (FMA)](https://freemusicarchive.org/) is a curated online library offering free, legal access to independent music that users can play, download, and share. FMAMusicClient provides access to the songs available on the platform mentioned above. FMAMusicClient works out of the box without relying on external CLI dependencies like ffmpeg or N_m3u8DL-RE, installing musicdl is sufficient. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m FMAMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m FMAMusicClient -i "{'FMAMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://freemusicarchive.org/member/meghan-admin/meet-policy-mix/" -m FMAMusicClient -i "{'FMAMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['FMAMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'FMAMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['FMAMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'FMAMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['FMAMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://freemusicarchive.org/member/meghan-admin/meet-policy-mix/") music_client.download(song_infos=song_infos) ``` #### JamendoMusicClient [Jamendo](https://www.jamendo.com/) is a music platform that offers free music streaming and downloads, with a focus on independent artists and royalty-free music. JamendoMusicClient supports fetching music from the platform noted above. JamendoMusicClient requires only a pip installation of musicdl, with no additional setup for tools like ffmpeg or N_m3u8DL-RE. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m JamendoMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m JamendoMusicClient -i "{'JamendoMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.jamendo.com/playlist/500362331/demo" -m JamendoMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.jamendo.com/playlist/500362331/demo" -m JamendoMusicClient -i "{'JamendoMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['JamendoMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'JamendoMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['JamendoMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['JamendoMusicClient']) song_infos = music_client.parseplaylist("https://www.jamendo.com/playlist/500362331/demo") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'JamendoMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['JamendoMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.jamendo.com/playlist/500362331/demo") music_client.download(song_infos=song_infos) ``` #### JooxMusicClient (Built-in Premium Account) [JOOX](https://www.joox.com/intl) is a music streaming platform by Tencent that offers over 40 million songs, playlists, karaoke, live broadcasting, and social audio features. JooxMusicClient allows you to obtain music from the platform referenced above. With JooxMusicClient, there is no extra dependency on CLI tools such as ffmpeg or N_m3u8DL-RE. Just install musicdl and you are ready to go. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m JooxMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m JooxMusicClient -i "{'JooxMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` If you’re unsure which cookies to use, you can run the [build_cookies_for_joox.py](https://github.com/CharlesPikachu/musicdl/blob/master/scripts/build_cookies_for_joox.py) script included in this repository to generate cookies in the format required by musicdl. Just fill in your own premium account credentials in the appropriate section of the script. - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.joox.com/hk/playlist/5HTvfy7AAW9QJHPqM+T0+w==" -m JooxMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.joox.com/hk/playlist/5HTvfy7AAW9QJHPqM+T0+w==" -m JooxMusicClient -i "{'JooxMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['JooxMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'JooxMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['JooxMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['JooxMusicClient']) song_infos = music_client.parseplaylist("https://www.joox.com/hk/playlist/5HTvfy7AAW9QJHPqM+T0+w==") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'JooxMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['JooxMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.joox.com/hk/playlist/5HTvfy7AAW9QJHPqM+T0+w==") music_client.download(song_infos=song_infos) ``` #### JioSaavnMusicClient [JioSaavn](https://www.jiosaavn.com/) is an Indian music streaming platform that offers songs, playlists, podcasts, and regional music across multiple Indian languages. JioSaavnMusicClient allows access to music from the previously discussed platform. JioSaavnMusicClient works out of the box without requiring external command-line tools such as FFmpeg or N_m3u8DL-RE; installing musicdl is sufficient to start using it. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m JioSaavnMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m JioSaavnMusicClient -i "{'JioSaavnMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.jiosaavn.com/featured/o-saathiya/PROeDetW3ZWMQv7FkH9rjg__" -m JioSaavnMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.jiosaavn.com/featured/o-saathiya/PROeDetW3ZWMQv7FkH9rjg__" -m JioSaavnMusicClient -i "{'JioSaavnMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['JioSaavnMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'JioSaavnMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['JioSaavnMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['JioSaavnMusicClient']) song_infos = music_client.parseplaylist("https://www.jiosaavn.com/featured/o-saathiya/PROeDetW3ZWMQv7FkH9rjg__") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'JioSaavnMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['JioSaavnMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.jiosaavn.com/featured/o-saathiya/PROeDetW3ZWMQv7FkH9rjg__") music_client.download(song_infos=song_infos) ``` #### OpenGameArtMusicClient [OpenGameArt](https://opengameart.org/) is a community-driven platform that provides free and open-licensed game assets, including sprites, textures, music, and sound effects for game developers. You can use OpenGameArtMusicClient to download music from the platform mentioned above. OpenGameArtMusicClient does not require any additional CLI tools, such as ffmpeg or N_m3u8DL-RE. Simply install musicdl via pip, and it is ready to use out of the box. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m OpenGameArtMusicClient` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['OpenGameArtMusicClient']) music_client.startcmdui() ``` #### QobuzMusicClient (Built-in Premium Account) [Qobuz](https://play.qobuz.com/discover) is a high-resolution music streaming and download platform that offers more than 100 million tracks in CD-quality and Hi-Res audio for music listening and discovery. Music from the platform referenced above can be fetched through QobuzMusicClient. With QobuzMusicClient, you do not need extra CLI tools like ffmpeg or N_m3u8DL-RE. A simple musicdl installation is sufficient. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m QobuzMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m QobuzMusicClient -i "{'QobuzMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` The cookies should be provided either as a dictionary in the format `{"x-user-auth-token": "xxx", ...}` or as a cookie string such as `x-user-auth-token=xxx; ...`. The `x-user-auth-token` field is required, while any other fields are optional. For convenience, the GitHub repo also includes a script named [build_cookies_for_qobuz.py](https://github.com/CharlesPikachu/musicdl/blob/master/scripts/build_cookies_for_qobuz.py), which can generate subscriber cookies in the format required by musicdl in one go. All you need to do is enter your own subscriber account credentials in the appropriate section of the code and run the script. - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://www.qobuz.com/us-en/playlists/next-up-at-sam-first/21512061" -m QobuzMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://www.qobuz.com/us-en/playlists/next-up-at-sam-first/21512061" -m QobuzMusicClient -i "{'QobuzMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['QobuzMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'QobuzMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['QobuzMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['QobuzMusicClient']) song_infos = music_client.parseplaylist("https://www.qobuz.com/us-en/playlists/next-up-at-sam-first/21512061") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'QobuzMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['QobuzMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://www.qobuz.com/us-en/playlists/next-up-at-sam-first/21512061") music_client.download(song_infos=song_infos) ``` #### SoundCloudMusicClient [SoundCloud](https://soundcloud.com/discover) is a music streaming and sharing platform where users can discover tracks, playlists, and podcasts, while artists can upload and share their work with listeners worldwide. Songs offered by the platform above can be retrieved through SoundCloudMusicClient. To use SoundCloudMusicClient, you will need a few extra CLI tools, including [FFmpeg](https://www.ffmpeg.org/), [N_m3u8DL-RE](https://github.com/nilaoda/N_m3u8DL-RE/releases/tag/v0.5.1-beta), and [Bento4](https://www.bento4.com/). After installing them together with musicdl, you are ready to go. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m SoundCloudMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m SoundCloudMusicClient -i "{'SoundCloudMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` Note that the cookies must be provided in the format `{'oauth_token': 'OAuth xxx', 'client_id': 'xxx'}`. When the `oauth_token` is obtained by capturing it from the web client of your own membership account rather than through the official channel, the corresponding `client_id` is also required. - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://soundcloud.com/raudymithut/sets/sets-from-dj-raudy-mit-hut" -m SoundCloudMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://soundcloud.com/raudymithut/sets/sets-from-dj-raudy-mit-hut" -m SoundCloudMusicClient -i "{'SoundCloudMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SoundCloudMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'SoundCloudMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['SoundCloudMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SoundCloudMusicClient']) song_infos = music_client.parseplaylist("https://soundcloud.com/raudymithut/sets/sets-from-dj-raudy-mit-hut") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'SoundCloudMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['SoundCloudMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://soundcloud.com/raudymithut/sets/sets-from-dj-raudy-mit-hut") music_client.download(song_infos=song_infos) ``` #### SpotifyMusicClient (Built-in Premium Account) [Spotify](https://open.spotify.com/) is a global audio streaming platform where users can listen to music, podcasts, and playlists through its web player and apps. SpotifyMusicClient allows users to pull music from the platform referred to above. SpotifyMusicClient works out of the box with just musicdl installed, without requiring extra CLI tools like ffmpeg or N_m3u8DL-RE. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m SpotifyMusicClient` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://open.spotify.com/playlist/36S7vjbqxUnzEGg9pBJ6p3" -m SpotifyMusicClient` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SpotifyMusicClient']) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SpotifyMusicClient']) song_infos = music_client.parseplaylist("https://open.spotify.com/playlist/36S7vjbqxUnzEGg9pBJ6p3") music_client.download(song_infos=song_infos) ``` #### SunoMusicClient [Suno](https://suno.com/discover) is a music company built to amplify imagination, making it possible for anyone to turn ideas, emotions, and stories into original songs and explore new ways of creating music with AI. SunoMusicClient provides a simple way to fetch music from the platform mentioned above. SunoMusicClient works out of the box with only musicdl installed and does not require extra command-line tools such as ffmpeg or N_m3u8DL-RE. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m SunoMusicClient` - Simple usage for searching and downloading songs, with login cookies: `musicdl -m SunoMusicClient -i "{'SunoMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` The cookies config for SunoMusicClient should only include `auth_token`. This value can be obtained from the network requests: look for the authorization header in Request Headers and copy the long token after Bearer. For example: `{'auth_token': xxx}` - Basic usage for playlist parsing and downloading, without login cookies: `musicdl -p "https://suno.com/playlist/176ff485-6f66-4701-ac01-d55f194c325e" -m SunoMusicClient` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://suno.com/playlist/176ff485-6f66-4701-ac01-d55f194c325e" -m SunoMusicClient -i "{'SunoMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SunoMusicClient']) music_client.startcmdui() ``` - Simple usage for searching and downloading songs, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'SunoMusicClient': { 'default_search_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['SunoMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Basic usage for playlist parsing and downloading, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['SunoMusicClient']) song_infos = music_client.parseplaylist("https://suno.com/playlist/176ff485-6f66-4701-ac01-d55f194c325e") music_client.download(song_infos=song_infos) ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_vip_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'SunoMusicClient': { 'default_parse_cookies': your_vip_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['SunoMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://suno.com/playlist/176ff485-6f66-4701-ac01-d55f194c325e") music_client.download(song_infos=song_infos) ``` #### TIDALMusicClient (Built-in Premium Account) [TIDAL](https://tidal.com/) is a music streaming platform that offers millions of tracks, albums, playlists, and videos, with a focus on high-fidelity audio quality. TIDALMusicClient is designed to fetch music from the platform referenced above. With TIDALMusicClient, additional CLI tools such as [FFmpeg](https://www.ffmpeg.org/), [N_m3u8DL-RE](https://github.com/nilaoda/N_m3u8DL-RE/releases/tag/v0.5.1-beta), and [Bento4](https://www.bento4.com/) are required to perform audio decryption. (1) Command-Line Usage - Basic usage for song search and download, with login cookies: Unlike other music clients that come with built-in membership accounts, TIDALMusicClient requires cookies from your own account. However, because a membership account is already built in, the account used to obtain the cookies does not need to be a paid subscription account, cookies from a normally registered free account are enough. To make sure your account cookies meet musicdl’s requirements, we recommend using the [build_cookies_for_tidal.py](https://github.com/CharlesPikachu/musicdl/blob/master/scripts/build_cookies_for_tidal.py) script included in the repository to obtain the cookies needed by musicdl. The generated cookies will look roughly as follows: `{"access_token": "xxx", "refresh_token": "xxx", "expires": "2026-02-10T07:32:18.102233", "user_id": xxx, "country_code": "SG", "client_id": "7m7Ap0JC9j1cOM3n", "client_secret": "vRAdA108tlvkJpTsGZS8rGZ7xTlbJ0qaZ2K9saEzsgY="}` After that, you can simply provide the membership cookies in the same way as with other music clients: `musicdl -m TIDALMusicClient -i "{'TIDALMusicClient': {'default_search_cookies': 'YOUR_COOKIES'}}"` - Simple usage for playlist parsing and downloading, with login cookies: `musicdl -p "https://tidal.com/playlist/7aa5d764-192f-45cb-ab9b-3692975e1f88" -m TIDALMusicClient -i "{'TIDALMusicClient': {'default_parse_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Basic usage for song search and download, with login cookies: ```python from musicdl import musicdl your_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'TIDALMusicClient': { 'default_search_cookies': your_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['TIDALMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Simple usage for playlist parsing and downloading, with login cookies: ```python from musicdl import musicdl your_cookies_with_str_or_dict_format = '' init_music_clients_cfg = { 'TIDALMusicClient': { 'default_parse_cookies': your_cookies_with_str_or_dict_format, } } music_client = musicdl.MusicClient(music_sources=['TIDALMusicClient'], init_music_clients_cfg=init_music_clients_cfg) song_infos = music_client.parseplaylist("https://tidal.com/playlist/7aa5d764-192f-45cb-ab9b-3692975e1f88") music_client.download(song_infos=song_infos) ``` #### YouTubeMusicClient (Built-in Premium Account) [YouTube Music](https://music.youtube.com/) is Google’s music streaming platform, offering access to over 100 million songs, albums, playlists, remixes, and music videos for listening and discovery. The retrieval of music from the aforementioned platform can be handled by YouTubeMusicClient. YouTubeMusicClient comes with an extra dependency on [Node.js](https://nodejs.org/en), so a separate [Node.js installation](https://nodejs.org/en/download) is required before use. (1) Command-Line Usage - Basic usage for song search and download, without login cookies: `musicdl -m YouTubeMusicClient` (2) Invoke It in Python - Basic usage for song search and download, without login cookies: ```python from musicdl import musicdl music_client = musicdl.MusicClient(music_sources=['YouTubeMusicClient']) music_client.startcmdui() ``` ## Audio / Radio #### ITunesMusicClient [iTunes Podcasts](https://www.apple.com/itunes/) is a digital platform where users can discover, subscribe to, and listen to audio shows across a wide range of topics. ITunesMusicClient is the go-to tool for downloading audio from the above platform. With ITunesMusicClient, all you need is pip install musicdl; there are no extra CLI dependencies or complicated configuration steps. (1) Command-Line Usage - Search and Download Podcasts from This Platform `musicdl -m ITunesMusicClient -i "{'ITunesMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['podcast']}}"` (2) Invoke It in Python - Search and Download Podcasts from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'ITunesMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['podcast']}} music_client = musicdl.MusicClient(music_sources=['ITunesMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` #### LizhiMusicClient [Lizhi FM](https://www.lizhi.fm/) is a Chinese audio-sharing platform and podcast community built around the idea that "Everyone can be a podcaster." LizhiMusicClient is the right tool for downloading audio content from the platform above. LizhiMusicClient works out of the box with just pip install musicdl — no extra CLI tools or complicated setup required. (1) Command-Line Usage - Search and Download Tracks from This Platform `musicdl -m LizhiMusicClient -i "{'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track']}}"` - Search and Download Albums from This Platform `musicdl -m LizhiMusicClient -i "{'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}}"` - Search for and Download Tracks and Albums from This Platform `musicdl -m LizhiMusicClient -i "{'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album']}}"` - Search & Download Tracks and Albums Using Your Own Premium Account Cookies `musicdl -m LizhiMusicClient -i "{'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Search and Download Tracks from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track']}} music_client = musicdl.MusicClient(music_sources=['LizhiMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search and Download Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}} music_client = musicdl.MusicClient(music_sources=['LizhiMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search for and Download Tracks and Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album']}} music_client = musicdl.MusicClient(music_sources=['LizhiMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search & Download Tracks and Albums Using Your Own Premium Account Cookies ```python from musicdl import musicdl init_music_clients_cfg = {'LizhiMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}} music_client = musicdl.MusicClient(music_sources=['LizhiMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` #### LRTSMusicClient [LRTS.me](https://www.lrts.me/) is the official website of Lanrentingshu, a leading Chinese audio reading platform that offers audiobooks, podcasts, radio-style programs, and other spoken-word content. LRTSMusicClient is the recommended client for downloading audio from the platform above. You can start using LRTSMusicClient right after installing musicdl via pip, without having to install tools like ffmpeg or N_m3u8DL-RE. (1) Command-Line Usage - Search and Download Books from This Platform `musicdl -m LRTSMusicClient -i "{'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['book']}}"` - Search and Download Albums from This Platform `musicdl -m LRTSMusicClient -i "{'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}}"` - Search for and Download Books and Albums from This Platform `musicdl -m LRTSMusicClient -i "{'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['book', 'album']}}"` - Search & Download Books and Albums Using Your Own Premium Account Cookies `musicdl -m LRTSMusicClient -i "{'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['book', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Search and Download Books from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['book']}} music_client = musicdl.MusicClient(music_sources=['LRTSMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search and Download Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}} music_client = musicdl.MusicClient(music_sources=['LRTSMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search for and Download Books and Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['book', 'album']}} music_client = musicdl.MusicClient(music_sources=['LRTSMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search & Download Books and Albums Using Your Own Premium Account Cookies ```python from musicdl import musicdl init_music_clients_cfg = {'LRTSMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['book', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}} music_client = musicdl.MusicClient(music_sources=['LRTSMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` #### QingtingMusicClient [Qingting FM](https://www.qtfm.cn/) is a major Chinese audio streaming platform that offers podcasts, radio broadcasts, audiobooks, news, music, education, and other spoken-word content. With QingtingMusicClient, audio from the platform above can be downloaded easily. QingtingMusicClient keeps things easy: no additional CLI tools to install, just pip install musicdl and you’re all set. (1) Command-Line Usage - Search and Download Tracks from This Platform `musicdl -m QingtingMusicClient -i "{'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track']}}"` - Search and Download Albums from This Platform `musicdl -m QingtingMusicClient -i "{'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}}"` - Search for and Download Tracks and Albums from This Platform `musicdl -m QingtingMusicClient -i "{'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album']}}"` - Search & Download Tracks and Albums Using Your Own Premium Account Cookies Manually extracting the cookies for a QingTing FM VIP account from the browser can be cumbersome and error-prone (have to capture the network traffic yourself on the QingTing FM web client. Look for an AJAX request with the keyword "auth"). To simplify the process, we provide the [build_cookies_for_qingtingfm.py](https://github.com/CharlesPikachu/musicdl/tree/master/scripts/build_cookies_for_qingtingfm.py) script, which helps generate the QingTing FM VIP account cookies in the format expected by musicdl. A successful output will look roughly like this: `{"errorno": 0, "errormsg": "", "data": {"qingting_id": "xxx", "access_token": "xxx", "refresh_token": "xxx", "expires_in": 7200}}` Then, you can use QingtingMusicClient in the same way as any other music client by simply passing in the membership cookies, as shown below: `musicdl -m QingtingMusicClient -i "{'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Search and Download Tracks from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track']}} music_client = musicdl.MusicClient(music_sources=['QingtingMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search and Download Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}} music_client = musicdl.MusicClient(music_sources=['QingtingMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search for and Download Tracks and Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album']}} music_client = musicdl.MusicClient(music_sources=['QingtingMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search & Download Tracks and Albums Using Your Own Premium Account Cookies ```python from musicdl import musicdl init_music_clients_cfg = {'QingtingMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}} music_client = musicdl.MusicClient(music_sources=['QingtingMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` #### XimalayaMusicClient [Ximalaya](https://www.ximalaya.com/) is a leading Chinese online audio platform where users can listen to podcasts, audiobooks, radio-style programs, and other spoken-word content. Audio content from the platform above can be downloaded with XimalayaMusicClient. XimalayaMusicClient is ready to use after a simple pip install. No extra command-line tools like ffmpeg or N_m3u8DL-RE are needed. (1) Command-Line Usage - Search and Download Tracks from This Platform `musicdl -m XimalayaMusicClient -i "{'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track']}}"` - Search and Download Albums from This Platform `musicdl -m XimalayaMusicClient -i "{'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}}"` - Search for and Download Tracks and Albums from This Platform `musicdl -m XimalayaMusicClient -i "{'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album']}}"` - Search & Download Tracks and Albums Using Your Own Premium Account Cookies `musicdl -m XimalayaMusicClient -i "{'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}}"` (2) Invoke It in Python - Search and Download Tracks from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track']}} music_client = musicdl.MusicClient(music_sources=['XimalayaMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search and Download Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['album']}} music_client = musicdl.MusicClient(music_sources=['XimalayaMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search for and Download Tracks and Albums from This Platform ```python from musicdl import musicdl init_music_clients_cfg = {'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album']}} music_client = musicdl.MusicClient(music_sources=['XimalayaMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` - Search & Download Tracks and Albums Using Your Own Premium Account Cookies ```python from musicdl import musicdl init_music_clients_cfg = {'XimalayaMusicClient': {'search_size_per_source': 2, 'allowed_search_types': ['track', 'album'], 'default_search_cookies': 'YOUR_COOKIES'}} music_client = musicdl.MusicClient(music_sources=['XimalayaMusicClient'], init_music_clients_cfg=init_music_clients_cfg) music_client.startcmdui() ``` (3) Screenshots of Running Results