96 lines
3.1 KiB
Markdown
96 lines
3.1 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 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"
|
|
```
|