Gamdl 完整配置指南:3 套身份模板快速搭出高质量 Apple Music 下载库
【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl
Gamdl 是一款面向 Apple Music 下载的命令行工具,支持歌曲、音乐视频与发布视频。本文聚焦进阶配置的四个痛点:质量组合怎么选、文件库怎么管、引擎与稳定性怎么平衡、高频错误怎么修,并给出三套拿来即用的配置。
先定身份:三套拿来即用的 Gamdl 配置
配置 Gamdl 时最容易犯的错,是想把不同场景的需求揉进同一组参数。更省事的做法是先明确自己是哪类用户,再定参数:
无损收藏党
- 输出路径:
~/Music/AppleMusic,按「艺术家 / 年份 / 专辑」三层归档 - 目录模板:
{album_artist}/{date:%Y}/{album} - 质量组合:
--song-codec-priority "alac,atmos,aac";ALAC 受 API 限制基本需要配合--use-wrapper才稳定可用
移动轻量党
- 输出路径:
~/MobileMusic - 目录模板:
{artist}/{album},并设--truncate 50控制文件名长度 - 质量组合:
--song-codec-priority "aac-he-web,aac-web",视频走720p + h264,单文件体积可控
内容创作者
- 输出路径:
~/Projects/Media/AppleMusic,与工程素材同盘管理 - 目录模板:
{artist}/{album},文件用--playlist-file-template "{playlist_title} - {date:%Y%m%d}"之类的模板保留版本信息 - 质量组合:
2160p + h265 + mp4。注意2160p只有 h265 流提供,且 4K 需要 Widevine L1.wvd或 PlayReady SL3000.prd设备
以无损收藏党为例,一条可落地的完整命令如下(批量抓取某艺术家全部专辑):
gamdl --use-wrapper \ --output-path "~/Music/AppleMusic" \ --album-folder-template "{album_artist}/{date:%Y}/{album}" \ --song-codec-priority "alac,atmos,aac" \ --music-video-resolution 1080p \ --artist-auto-select all-albums \ "ARTIST_URL"Gamdl 编解码器选择:场景 → 推荐组合决策表
不用逐个背编解码器,直接按播放场景查表:
| 使用场景 | 音频优先级 | 视频分辨率 | 视频编码 / 容器 |
|---|---|---|---|
| Hi-Fi / 家庭影院 | alac→atmos→aac(需--use-wrapper) | 1080p | h265,mp4 |
| 电脑日常播放 | aac→aac-web | 1080p | h264 / h265,m4v |
| 移动端 / 快速下载 | aac-web | 720p | h264,m4v |
| 存储紧张 | aac-he-web(64kbps) | 480p | h264,m4v |
| 4K 电视 | atmos→aac | 2160p(仅 h265 流) | h265,mp4,需 L1 / SL3K 设备 |
--song-codec-priority与--music-video-codec-priority都接受逗号分隔的优先级列表,gamdl 会按顺序取第一个可用流,所以写出降级链本身就是标准用法。拿不准时先用默认组合(aac-web+ 1080p h264),跑顺后再逐步上调。
用模板变量管好文件库 📁
模板系统控制所有文件夹与文件命名,常用变量压缩如下:
| 变量 | 含义 | 示例值 |
|---|---|---|
{album}/{album_artist} | 专辑名 / 专辑艺术家 | "Midnights" / "Taylor Swift" |
{artist} | 曲目艺术家(含合作艺人) | "A feat. B" |
{title}/{track}/{track_total} | 标题 / 轨号 / 总轨数 | "Snow On The Beach" / 4 / 13 |
{disc}/{disc_total} | 碟号 / 总碟数 | 1 / 2 |
{date:%Y-%m} | 发行日期(strftime 格式化) | 2022-10 |
{playlist_title}/{playlist_artist} | 播放列表名 / 创建者 | "Today's Hits" / "Apple Music" |
{media_type} | 媒体类型 | song / music-video |
数字变量支持 Python 格式化语法,{track:02d}会输出04。
--exclude-tags用于排除写盘的具体标签,逗号分隔,传all可跳过全部打标。把下面这段直接写进~/.gamdl/config.ini,文件库规则就能一次固化、长期生效:
[gamdl] output_path = ~/Media/AppleMusic album_folder_template = {album_artist}/{date:%Y}/{album} compilation_folder_template = Various Artists/{date:%Y}/{album} single_disc_file_template = {track:02d} - {title} multi_disc_file_template = {disc:02d}-{track:02d} {title} exclude_tags = comment,copyright,genre_id,rating truncate = 80几个高频小技巧:合辑专辑用compilation_folder_template单独收拢,避免散进各艺术家目录;exclude_tags = lyrics,comment能减小元数据体积;文件名超长报错时优先加truncate。
引擎与稳定性:yt-dlp 对比 N_m3u8DL-RE
| 维度 | yt-dlp(默认) | N_m3u8DL-RE |
|---|---|---|
| 切换方式 | --download-mode ytdlp | --download-mode nm3u8dlre |
| 速度 | 中等 | 更快,适合批量下载 |
| 稳定性 | 高,装完即用 | 中等,强依赖 FFmpeg |
| 额外依赖 | 无 | 需指定--nm3u8dlre-path与--ffmpeg-path |
yt-dlp 在 gamdl 中只承担文件下载过程本身,媒体流仍直接来自 Apple Music 服务器,API 层也内置了重试传输。弱网环境下与其硬扛高并发,不如先降一档质量、开日志观察:
gamdl --download-mode nm3u8dlre \ --nm3u8dlre-path /usr/local/bin/N_m3u8DL-RE \ --ffmpeg-path /usr/local/bin/ffmpeg \ --log-level DEBUG --log-file gamdl.log \ "URL"日常建议:关键专辑用默认ytdlp模式保稳定,大播放列表切nm3u8dlre抢速度,两者共用同一套质量参数,随时可互换。
三个高频错误的修复
1. 指定的编解码器不可用
- 症状:下载被跳过或报错,日志提示拿不到请求的流
- 原因:该曲在你的 storefront 地区没有对应流,或没启用 wrapper 就去抓
alac - 修复:把优先级改成降级链;确需
alac时补上--use-wrapper
2. 存储空间不足
- 症状:大播放列表下载到一半中断,留下半截文件
- 原因:1080p 视频加高码率音频单文件体积大,临时文件与成品同盘
- 修复:降分辨率 + 换高效音频,输出路径挪到外置盘
3. 元数据写入失败
- 症状:媒体文件本身完整,打标环节报错
- 原因:个别字段不兼容(lyrics、rating、storefront 等)
- 修复:用
--exclude-tags排除问题字段,实在不行用all跳过全部打标
三条问题的修复命令合在一起:
# 编解码器降级链 gamdl --song-codec-priority "aac,aac-web,aac-he-web" "URL" # 转存外置盘 + 低规格 gamdl --music-video-resolution 480p --song-codec-priority "aac-he-web" \ --output-path "/external/AppleMusic" "URL" # 排除问题标签(或改用 --exclude-tags all) gamdl --exclude-tags "lyrics,rating,comment" "URL"五分钟配置速查表:维度 × 身份
| 维度 | 无损收藏党 | 移动轻量党 | 内容创作者 |
|---|---|---|---|
| 输出路径 | ~/Music/AppleMusic | ~/MobileMusic | ~/Projects/Media/AppleMusic |
| 目录模板 | {album_artist}/{date:%Y}/{album} | {artist}/{album} | {artist}/{album} |
| 音频优先级 | alac,atmos,aac(+wrapper) | aac-he-web,aac-web | aac,aac-web |
| 视频组合 | 1080p · h265 ·mp4 | 720p · h264 ·m4v | 2160p · h265 ·mp4 |
| 下载引擎 | ytdlp | nm3u8dlre | ytdlp |
| 歌词 / 标签 | 保留 lrc、完整标签 | --no-synced-lyrics,exclude_tags = lyrics,comment | 默认 +--save-cover |
把常用组合固化成 alias,日常调用只敲一个词:
alias gamdl-hq='gamdl --song-codec-priority "alac,atmos,aac" --music-video-resolution 1080p' alias gamdl-fast='gamdl --song-codec-priority "aac-he-web" --music-video-resolution 720p --download-mode nm3u8dlre' alias gamdl-batch='gamdl --artist-auto-select all-albums --overwrite false'写在最后
没有一套参数通吃所有场景,最佳 Gamdl 配置取决于你的播放设备、存储预算与网络条件——从默认值出发,一次只调一个维度、用同一张专辑验证,比一次改十几个参数收敛得快得多。
延伸学习
- gamdl/cli/config_file.py:配置文件如何读取、与命令行参数合并并回写默认值
- gamdl/interface/enums.py:编解码器、分辨率、模板等全部枚举取值
- gamdl/downloader/base.py:下载器主流程与分片并发等下载侧细节
【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考