id = "gamdl" name = "Gamdl" homepage = "https://github.com/glomatico/gamdl" description = "A command-line app for downloading Apple Music songs, music videos and post videos." executables = ["gamdl"] [dotfiles] # https://github.com/glomatico/gamdl#configuration — the documented default # config file is ~/.gamdl/config.ini on Linux and %USERPROFILE%/.gamdl/config.ini # on Windows. The Homebrew Unix install therefore uses the home spelling. paths = ["~/.gamdl/config.ini"] exclude = [] secret = [] side_effect = false [commands] format = 1 label = "Download Apple Music" description = "Download songs, albums, playlists, artists or videos from Apple Music URLs. Wrapper, DRM, and filename template options are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "readme" kind = "manual" url = "https://github.com/glomatico/gamdl/blob/main/README.md" revision = "main 2026-10" evidence = """ | `--read-urls-as-txt`, `-r` | Read URLs from text files | `false` | | `--cookies-path`, `-c` | Cookies file path | `./cookies.txt` | | `--language`, `-l` | Metadata language | `en-US` | | `--cover-size` | Cover size in pixels | `1200` | | `--no-synced-lyrics` | Don't download synced lyrics | `false` | | `--synced-lyrics-only` | Download only synced lyrics | `false` | | `--music-video-resolution` | Max music video resolution | `1080p` | | `--output-path`, `-o` | Output directory path | `./Apple Music` | | `--download-mode` | Download mode | `ytdlp` | | `--no-config-file`, `-n` | Don't use a config file | `false` | Enable it with `--download-mode nm3u8dlre` """ [[commands.field]] id = "urls" label = "URLs or text files" type = "string" position = 0 multiple = true sources = ["readme"] [[commands.field]] id = "read_urls_as_txt" label = "Read URLs from text files" description = "Treat each positional argument as a text file of URLs." type = "boolean" option = ["--read-urls-as-txt", "-r"] sources = ["readme"] [[commands.field]] id = "cookies_path" label = "Cookies file" type = "path" option = ["--cookies-path", "-c"] path = { kind = "file", role = "input" } sources = ["readme"] [[commands.field]] id = "output_path" label = "Output directory" type = "path" option = ["--output-path", "-o"] path = { kind = "directory", role = "output" } sources = ["readme"] [[commands.field]] id = "language" label = "Metadata language" type = "string" option = ["--language", "-l"] suggestions = [{ value = "en-US", label = "en-US" }] sources = ["readme"] [[commands.field]] id = "download_mode" label = "Download mode" type = "enum" option = ["--download-mode"] choices = [{ value = "ytdlp", label = "yt-dlp" }, { value = "nm3u8dlre", label = "N_m3u8DL-RE" }] sources = ["readme"] [[commands.field]] id = "music_video_resolution" label = "Max music video resolution" type = "string" option = ["--music-video-resolution"] suggestions = [{ value = "1080p", label = "1080p" }] sources = ["readme"] [[commands.field]] id = "cover_size" label = "Cover size (pixels)" type = "integer" option = ["--cover-size"] sources = ["readme"] [[commands.field]] id = "no_synced_lyrics" label = "Skip synced lyrics" type = "boolean" option = ["--no-synced-lyrics"] sources = ["readme"] [[commands.field]] id = "synced_lyrics_only" label = "Synced lyrics only" type = "boolean" option = ["--synced-lyrics-only"] sources = ["readme"] [[commands.field]] id = "no_config_file" label = "Ignore config file" type = "boolean" option = ["--no-config-file", "-n"] sources = ["readme"] [[commands.task]] id = "download" label = "Download URLs" fields = ["urls", "cookies_path", "output_path", "language", "no_synced_lyrics"] required = ["urls"] [[commands.task]] id = "from-file" label = "Download from a URL list" set = { read_urls_as_txt = [true] } lock = ["read_urls_as_txt"] fields = ["urls", "read_urls_as_txt", "cookies_path", "output_path"] required = ["urls"] [[commands.group]] id = "basic" label = "Basic" fields = ["urls", "read_urls_as_txt", "cookies_path", "output_path", "language"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["download_mode", "music_video_resolution", "cover_size", "no_synced_lyrics", "synced_lyrics_only", "no_config_file"]