Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
G

gamdl

> 编程语言
Open source

A command-line app for downloading Apple Music songs, music videos and post videos.

2.5K stars0 likes6 views
WebsiteGitHub

About

A command-line app for downloading Apple Music songs, music videos and post videos.

Gamdl (Glomatico's Apple Music Downloader)

A command-line app for downloading Apple Music songs, music videos and post videos.

Join our Discord Server: https://discord.gg/aBjMEZ9tnq

✨ Features

  • High-Quality Songs - Download songs in AAC 256kbps and other codecs
  • High-Quality Music Videos - Download music videos in resolutions up to 4K
  • Synced Lyrics - Download synced lyrics in LRC, SRT, or TTML formats
  • ️ Rich Metadata - Automatic tagging with comprehensive metadata
  • Artist Support - Download all albums or music videos from an artist
  • ⚙️ Highly Customizable - Extensive configuration options for advanced users

Prerequisites

Required

  • Python 3.10 or higher
  • Active Apple Music subscription
  • Apple Music Cookies - export your browser cookies in Netscape format while logged in at Apple Music:
    • Firefox: Export Cookies
    • Chromium: Get cookies.txt LOCALLY

Optional Dependencies

Wrapper

Run the Wrapper v2 server for wrapper-backed account, playback, and decryption requests. Enable it with --use-wrapper or use_wrapper = true. Configure wrapper HTTP account/playback calls with --wrapper-url or wrapper_url, and configure WV2D batch TCP decrypt with --wrapper-decrypt-host / --wrapper-decrypt-port.

gamdl builds a private Rust extension from gamdl/downloader/ammuxer as gamdl._ammuxer. That native media engine handles wrapper TCP decrypt/reassembly plus MP4/M4A writing and muxing; Python remains responsible for the CLI, downloads, metadata tagging, and high-level orchestration.

The wrapper is recommended when using the alac song codec. ALAC can be attempted without wrapper, but it probably won't work due to API limitations.

Note:

  • When using the Wrapper, you'll be asked to insert your credentials to login if you haven't already.
  • Newer wrapper-v2 builds use HTTP JSON for account/playback and WV2D batch TCP port 10020 for decrypt.
  • Song codecs other than alac do not require the wrapper.
  • Cookies can be skipped when using the wrapper.

N_m3u8DL-RE

Use N_m3u8DL-RE as a faster download alternative to the default yt-dlp download mode. Enable it with --download-mode nm3u8dlre or download_mode = nm3u8dlre.

If the executable is not available in your system PATH, set its location with --nm3u8dlre-path or nm3u8dlre_path.

N_m3u8DL-RE also needs FFmpeg. If the FFmpeg executable is not available in your system PATH, set its location with --ffmpeg-path or ffmpeg_path.

Installation

  1. Install Gamdl via pip:

    bash
    pip install gamdl
  2. Set up the cookies file:

    • Place the cookies file in the working directory as cookies.txt, or
    • Specify the path using --cookies-path or in the config file
  3. Optional: Set up dependencies (only if you need the functionality) See the Optional Dependencies section to determine which optional tools you need.

Usage

bash
gamdl [OPTIONS] URLS...

Supported URL Types

  • Songs (Catalog/Library)
  • Albums (Catalog/Library)
  • Playlists (Catalog/Library)
  • Music Videos (Catalog/Library)
  • Artists
  • Post Videos
  • Apple Music Classical

Examples

Download a song:

bash
gamdl "https://music.apple.com/us/album/never-gonna-give-you-up-2022-remaster/1624945511?i=1624945512"

Download an album:

bash
gamdl "https://music.apple.com/us/album/whenever-you-need-somebody-2022-remaster/1624945511"

Download from an artist:

bash
gamdl "https://music.apple.com/us/artist/rick-astley/669771"

Interactive Prompt Controls:

Key Action
Arrow keys Move selection
Space Toggle selection
Ctrl + A Select all
Enter Confirm selection

⚙️ Configuration

Configure Gamdl using command-line arguments or a config file.

Config file location:

  • Linux: ~/.gamdl/config.ini
  • Windows: %USERPROFILE%\.gamdl\config.ini

The file is created automatically on first run. Command-line arguments override config values.

Configuration Options

Option Description Default
General Options
--read-urls-as-txt, -r Read URLs from text files false
--config-path Config file path <home>/.gamdl/config.ini
--log-level Logging level INFO
--log-file Log file path -
--no-exceptions Don't print exceptions false
--artist-auto-select Automatically select artist content to download (artist URLs) -
--database-path Path to the SQLite database file for registering downloaded media -
--no-config-file, -n Don't use a config file false
Apple Music Options
--cookies-path, -c Cookies file path ./cookies.txt
--wrapper-url Wrapper HTTP control base URL http://127.0.0.1
--wrapper-decrypt-host Wrapper TCP decrypt host 127.0.0.1
--wrapper-decrypt-port Wrapper TCP decrypt port 10020
--language, -l Metadata language en-US
Interface Options
--cover-format Cover format jpg
--cover-size Cover size in pixels 1200
--wvd-path .wvd file path -
--use-wrapper Use wrapper for account, playback, and decryption requests false
Song Options
--synced-lyrics-format Synced lyrics format lrc
--song-codec-priority Comma-separated codec priority aac-web
--use-album-date Use album release date for songs false
--no-synced-lyrics Don't download synced lyrics false
--synced-lyrics-only Download only synced lyrics false
Music Video Options
--music-video-resolution Max music video resolution 1080p
--music-video-codec-priority Comma-separated codec priority h264,h265
--music-video-remux-format Music video remux format m4v
Post Video Options
--uploaded-video-quality Post video quality best
Download & Path Options
--output-path, -o Output directory path ./Apple Music
--temp-path Temporary directory path .
--nm3u8dlre-path N_m3u8DL-RE executable path N_m3u8DL-RE
--ffmpeg-path FFmpeg executable path ffmpeg
--download-mode Download mode ytdlp
Template Options
--album-folder-template Album folder template {album_artist}/{album}
--compilation-folder-template Compilation folder template Compilations/{album}
--no-album-folder-template No album folder template {artist}/Unknown Album
--playlist-folder-template Playlist folder template Playlists/{playlist_artist}
--single-disc-file-template Single disc file template {track:02d} {title}
--multi-disc-file-template Multi disc file template {disc}-{track:02d} {title}
--no-album-file-template No album file template {title}
--playlist-file-template Playlist file template {playlist_title}
--date-tag-template Date tag template %Y-%m-%dT%H:%M:%SZ
--exclude-tags Comma-separated tags to exclude -
--truncate Max filename length -
File Output Options
--overwrite Overwrite existing files false
--save-cover, -s Save cover as separate file false
--save-playlist

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Python4kaacapple-musicapple-music-downloader

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言