jamdl/README.md
2025-10-31 23:17:32 +00:00

3.1 KiB

jamdl

A command-line tool to download music from various sources like Apple Music, SoundCloud, and others supported by yt-dlp.

Description

jamdl is a wrapper around popular downloaders (gamdl, scdl, yt-dlp) that automates the process of downloading media and transferring it to a specified location, such as a local directory or a remote NAS via rsync over SSH.

Prerequisites

You must have the following command-line tools installed and available in your system's PATH:

  • gamdl (for Apple Music)
  • scdl (for SoundCloud)
  • yt-dlp (for other sources)
  • rsync (for file transfers; remote copies use rsync over SSH)

Installation

You can install jamdl using cargo:

From source

Clone this repository and install using cargo:

cargo install --path .

From a git repository

You can also install it directly from a git repository:

cargo install --git https://git.shed.gay/chaos/jamdl

Configuration

The first time you run jamdl, it will create a default configuration file at ~/.config/jamdl/config.toml.

You must edit this file to match your setup before you can use jamdl.

The configuration file looks like this:

# Default configuration for jamdl
# Please edit these values to match your setup.

nas_host = "localhost"
nas_user = "your_ssh_user"
nas_path = "/path/on/nas"
cookies_file = "/path/to/your/apple-music-cookies-file.txt"
  • nas_host: The hostname or IP address of your NAS. If set to "localhost", files will be copied locally instead of using SCP.
  • nas_user: The SSH username for your NAS.
  • nas_path: The destination path on your NAS or local filesystem.
  • cookies_file: The path to your Apple Music cookies file for gamdl.

Profiles

jamdl supports multiple profiles so you can target different destinations (NAS paths, hosts, or local folders) without editing the config each time. Profiles live under a top-level [profiles] table. The profile named default is used when no --profile is specified.

Example multi-profile configuration:

# Multi-profile configuration for jamdl

[profiles.default]
nas_host = "localhost"
nas_user = "your_ssh_user"
nas_path = "/path/on/nas"
cookies_file = "/path/to/your/apple-music-cookies-file.txt"

[profiles.work]
nas_host = "work-nas"
nas_user = "alice"
nas_path = "/srv/media/music"
cookies_file = "/home/alice/apple-cookies.txt"

[profiles.laptop]
nas_host = "localhost"
nas_user = "your_ssh_user"
nas_path = "/Users/you/Music"
cookies_file = "/Users/you/cookies.txt"
  • Choose a profile when running jamdl:
    • jamdl --profile work "https://music.apple.com/us/album/some-album/123456789"
    • Short form: jamdl -p work "https://music.apple.com/us/album/some-album/123456789"
  • If the requested profile is missing, jamdl falls back to default and lists available profiles.
  • Backwards compatibility: legacy single-profile configs (top-level keys without [profiles]) are still supported.

Usage

Once configured, you can download media by passing a URL to jamdl:

jamdl "https://music.apple.com/us/album/some-album/123456789"