explaingit

charlespikachu/musicdl

4,687PythonAudience · generalComplexity · 2/5LicenseSetup · easy

TLDR

A command-line Python tool for downloading music from over a dozen streaming platforms including YouTube, Spotify, NetEase, and QQ Music, for personal, non-commercial use only.

Mindmap

mindmap
  root((musicdl))
    What it does
      Music download
      Multi-platform
      Personal use only
    Platforms
      YouTube Spotify Apple
      NetEase QQ Kugou
      TIDAL Deezer SoundCloud
    Usage
      Command line tool
      Python library
      Browser companion
    License
      Non-commercial only
      Personal use
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Download songs or playlists from YouTube, Spotify, or Apple Music for personal offline listening.

USE CASE 2

Fetch audio from Chinese streaming platforms like NetEase Cloud Music, QQ Music, or Kugou.

USE CASE 3

Use as a Python library to automate music downloads in your own scripts.

USE CASE 4

Search and preview tracks in a browser without installing anything using the companion MusicSquare web app.

Tech stack

Python

Getting it running

Difficulty · easy Time to first run · 5min

For paywalled content you must already hold an authorized subscription to that service, the tool does not bypass paywalls.

Free to use and study for personal and educational purposes only, commercial use, redistribution, or bundling without permission is not allowed.

In plain English

Musicdl is a Python tool for downloading music from a large number of streaming platforms. You run it from the command line or use it as a Python library, point it at a song title or playlist, and it fetches the audio file for you. The whole thing is written without heavy dependencies, which makes it easy to install and read through. The list of supported platforms is long. On the Chinese side it covers NetEase Cloud Music, QQ Music, Kugou, Kuwo, Migu, Bilibili audio, and several others. For international services it supports YouTube, Spotify, Apple Music, TIDAL, Deezer, SoundCloud, Qobuz, and JOOX, among others. The README lists each platform with a checkmark for whether search and download are both supported. The project is updated regularly, with recent releases adding new platforms, fixing broken third-party API endpoints, and improving lossless audio support. The disclaimer in the README is clear and worth reading. The tool is intended for personal, educational, and research use only. Commercial use is prohibited. It works by talking to publicly accessible web endpoints and does not store or redistribute copyrighted audio files. If you want to download content that is behind a subscription paywall, you are expected to already have authorized access through that service. Installation is handled through PyPI using pip, which is the standard Python package manager. The README also links to documentation hosted on readthedocs.io and to a companion project called MusicSquare, a browser-based version where you can search and play tracks without installing anything locally. The license is PolyForm Noncommercial 1.0.0, which means you can use and study the code freely for non-commercial purposes but cannot sell or bundle it without permission. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
How do I install musicdl via pip and download my first song from NetEase Cloud Music using the command line?
Prompt 2
Show me how to import musicdl as a Python library and download a track by title programmatically in a script.
Prompt 3
I subscribe to TIDAL and want to download tracks I'm authorized to access, how do I authenticate musicdl with my TIDAL account?
Prompt 4
How do I download an entire playlist from QQ Music using musicdl and save the files to a specific folder?
Open on GitHub → Explain another repo

← charlespikachu on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.