jamdl/README.md
Chaos Rogers 75bbc3d654 docs: add Profiles section with multi-profile config example
Co-authored-by: aider (openai/gpt-5) <aider@aider.chat>
2025-10-31 22:45:29 +00:00

95 lines
3 KiB
Markdown

# 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 SCP.
## 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)
## 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"
```