Skip to main content

Download a song from a URL or YouTube search and auto-import it into Apple Music.

Project description

addsong

PyPI version Python versions License Powered by yt-dlp Tagged with ffmpeg

addsong demo

Paste a link and the song shows up in Apple Music.

addsong takes a song name or a YouTube link. It downloads the track, tags it with the title, artist, and cover art, then drops it into Apple Music. No dragging files around, just a single command.

addsong "songname"
addsong "https://www.youtube.com/watch?v=..."

Installation

You need Python 3.11 or newer, plus two tools that do the real work, yt-dlp and ffmpeg. addsong itself is a Python package you install with pipx.

1. Install addsong

pipx install addsong

Don't have pipx yet? Install it first. On macOS run brew install pipx. On Linux run pip install --user pipx (or use your distro's package). On Windows run pip install pipx. Once pipx is set up, run pipx ensurepath and reopen your terminal so addsong is on your PATH.

No pipx? pip install --user addsong works too.

2. Install yt-dlp and ffmpeg

These do the downloading and tagging. Pick the command for your system.

  macOS

brew install yt-dlp ffmpeg

  Linux and WSL

sudo apt-get install -y ffmpeg && pipx install yt-dlp

On other distros use your package manager for ffmpeg. yt-dlp can come from pipx or pip.

  Windows (PowerShell)

winget install yt-dlp.yt-dlp Gyan.FFmpeg

3. Check it

addsong --version

Updating

pipx upgrade addsong

With pip instead of pipx, run python -m pip install --user --upgrade addsong.

Shell Completions

addsong can print a completion script for your shell. Source it or save it to your shell's completion directory.

source <(addsong --print-completion bash)      # bash
addsong --print-completion zsh  > ~/.zsh/completions/_addsong   # zsh
addsong --print-completion fish > ~/.config/fish/completions/addsong.fish  # fish

See your shell's docs for where completion files go.

Your First Song

addsong "songname"

addsong shows what it found so you can fix mistakes before saving.

  Review track ♪
  Artist: Artist Name
  Title:  Song Title

  [Enter] Add  ·  [E] Edit  ·  [S] Skip
  ❯

Press Enter and the song lands in Apple Music a second later.

Commands

Command What it does
addsong "name" Add the top search result
addsong "<link>" Add a specific video
addsong --results 3 "name" Add the top 3 search results
addsong --playlist "<link>" Add a whole playlist
addsong --from list.txt Add every link in a file
addsong subscribe "<link>" Follow a playlist
addsong sync Add new songs from playlists you follow
addsong list Show playlists you follow
addsong unsubscribe "<link>" Stop following a playlist
addsong forget Forget everything added so it can be re-added

Flags

Flag What it does
-y Don't ask, just add it
--review Always pause to fix the title or artist first
--reimport Add a song again even if you already have it
--dry-run Show what would happen without downloading
--format FMT Output format, m4a (default), mp3, flac, opus
--quality N Audio quality 0 to 10, 0 is best and the default
--notify Pop a desktop notification as each song imports
--quiet / --verbose Show less or more output
--help Full list of commands and options

Set environment variables like ADDSONG_WATCH_DIR to change defaults. Run addsong --help for the full list.

Download Location

On macOS and Windows songs go straight into Apple Music. On Linux they land in ~/Music/addsong/. Point them somewhere else with ADDSONG_WATCH_DIR=/your/folder.

Common Errors

If you see command not found, run pipx ensurepath and reopen your terminal. Still stuck? Repeat the Installation step.

If a song downloads but never shows up, open the Apple Music app and keep it open while adding (macOS or Windows).

If a download fails, update yt-dlp, then retry with --verbose to see why.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

addsong-1.0.1.tar.gz (809.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

addsong-1.0.1-py3-none-any.whl (35.9 kB view details)

Uploaded Python 3

File details

Details for the file addsong-1.0.1.tar.gz.

File metadata

  • Download URL: addsong-1.0.1.tar.gz
  • Upload date:
  • Size: 809.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for addsong-1.0.1.tar.gz
Algorithm Hash digest
SHA256 306f71a28aa30ad008f95011f75dbc3b55907809809bc6efbfeeb1d653354df8
MD5 6167ac01afd0189afb8786d91a9d7726
BLAKE2b-256 d9e1fd937cfd9f0b940793f0392dfaf7a1c70a5814db79fc7f7bb227a6848b60

See more details on using hashes here.

Provenance

The following attestation bundles were made for addsong-1.0.1.tar.gz:

Publisher: release.yml on ado11231/addsong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file addsong-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: addsong-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 35.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for addsong-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 55acfb8196b49d5ce096cf2a52f976ab3dd8bc24d8a327bc6dbf3a34a47a7a00
MD5 577444d9c047f318ee4205b976cd2872
BLAKE2b-256 ed9f39cddd60d278b54519b7c2e2685dc2b27a7169128884a5ad29bac520c10b

See more details on using hashes here.

Provenance

The following attestation bundles were made for addsong-1.0.1-py3-none-any.whl:

Publisher: release.yml on ado11231/addsong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page