# 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: ```bash cargo install --path . ``` ### From a git repository You can also install it directly from a git repository: ```bash 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: ```toml # 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: ```toml # 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`: ```bash jamdl "https://music.apple.com/us/album/some-album/123456789" ```