☰
Gamdl 配置指南:6 个关键设置,把 Apple Music 下载整理成你想要的样子
2026/10/21 1:12:14 网站建设 项目流程

Gamdl 配置指南:6 个关键设置,把 Apple Music 下载整理成你想要的样子

【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl

gamdl(Glomatico's Apple Music Downloader)是一款命令行工具,用来下载 Apple Music 的歌曲、音乐视频和 post 视频,输出的是已解密、带元数据和封面的本地文件,下载完就能直接在播放器里使用。它的下载行为几乎全部可配置:文件存哪、文件夹怎么命名、视频要多清晰、音频用哪个编码,都能按需调整。这篇文章按实际使用流程讲 6 件事:装好之后的第一步、保存目录怎么指定、文件夹模板怎么改、4K 视频怎么拿、音频编码怎么选,最后是去重和提速,以及常见报错的处理方式。所有信息均以项目源码为准。

第一次运行:从 pip 安装到下载第一首歌

gamdl 依赖三样东西:Python 3.10+、一个有效的 Apple Music 订阅、以及登录 music.apple.com 后导出的 Netscape 格式 cookies 文件。装好并放好 cookies 后,直接把链接丢给它就能用:

pip install gamdl gamdl -c ./cookies.txt "Apple Music 歌曲或专辑链接"

这一条命令完成安装和首次下载;-c指定 cookies 文件位置,缺省找当前目录下的cookies.txt。

第一次运行时,gamdl 会在~/.gamdl/config.ini(Windows 上为%USERPROFILE%\.gamdl\config.ini)自动创建配置文件,并把所有参数以默认值写入,后续改动直接编辑这个文件即可。注意它是 INI 格式,参数名用下划线,写在一个[gamdl]段里:

[gamdl] output_path = ~/Music/Apple Music music_video_resolution = 720p

保存后下次运行即生效,不用每次都在命令里重复。优先级规则是:命令行参数 > 配置文件 > 内置默认值,这个逻辑实现在配置文件加载模块中——凡是命令行已经显式给出的参数,配置文件里的值会被直接忽略。所以固定设置写进config.ini,临时改动用命令行参数,两者不冲突。

一行命令指定保存目录,顺带记住三个路径参数

默认情况下,下载内容会放进当前目录下的./Apple Music文件夹。想把文件集中管理到固定位置,用--output-path(短参数-o):

gamdl -o ~/Music/Apple_Downloads "Apple Music 链接"

效果就是所有下载都落到你指定的目录,目录不存在会自动创建。和路径相关的还有两个参数,建议一起了解:

参数默认值作用
--output-path/-o./Apple Music最终文件的保存目录
--temp-path.下载和解密过程中的临时文件存放位置
--overwrite关闭目标文件已存在时是否覆盖

其中--temp-path容易被忽略:默认值是.,也就是临时文件会先落在你执行命令的目录里,下完才整理成最终文件。如果你一次下载整个艺人的曲库,中途临时文件可能占掉几个 GB,把它指到空闲空间大的盘上会更稳妥。而--overwrite默认关闭时,已存在的文件会被跳过并打印一条提示,适合防止误覆盖;想强制覆盖就加上该参数。路径参数的定义和默认值都在命令参数定义与下载器基类中可以查到。

文件夹和文件名不用默认的:自定义专辑目录模板

默认结构是"艺人/专辑"两级文件夹,文件名带两位序号:{album_artist}/{album}目录下是{track:02d} {title}.m4a。如果你的曲库命名习惯不同——比如想按年份分目录、或者想要"专辑 (艺人)"这种顺序——模板参数可以改:

gamdl --album-folder-template "{album_artist}/{album} - {date:%Y}" "链接"

这条命令让每个专辑文件夹名后面带上发行年份。模板支持{artist}、{album}、{title}、{track}、{date:%Y-%m}等变量,完整清单见下载器基类的路径生成逻辑。常用模板对照:

参数默认值适用场景
--album-folder-template{album_artist}/{album}有专辑信息的歌曲
--compilation-folder-templateCompilations/{album}合辑(Compilation)
--playlist-folder-templatePlaylists/{playlist_artist}歌单下载
--single-disc-file-template{track:02d} {title}单曲碟文件名
--multi-disc-file-template{disc}-{track:02d} {title}多碟专辑文件名

两个配套的清理参数值得知道:--truncate限制文件名最大长度(应对 Windows 260 字符路径上限),--exclude-tags排除不想写入的元数据字段,传all则完全跳过打标。

拿到 4K 音乐视频:分辨率上限、编码与 DRM 设备的组合

音乐视频默认按1080p下载,--music-video-resolution指定的是分辨率上限而不是精确值。挑选逻辑在音乐视频流选择逻辑中:先筛掉超过上限的档位,再取最接近上限的那一路,同分辨率下带宽更高者优先。也就是说写720p拿到的是"不超过 720p 的最高画质",而写2160p在源站提供 4K 时才会真正拿到 4K。

可用档位分两档(定义见分辨率枚举):

  • H.264:240p、360p、480p、540p、720p、1080p
  • 仅 H.265:1440p、2160p

所以想上 4K,编码优先级里必须有h265(默认值就是h264,h265,H.264 没货时自动落到 H.265,一般不用动)。真正的门槛是 DRM 设备:4K 流要求 Widevine L1 的.wvd设备文件,或 PlayReady SL3000(SL3K)的.prd设备文件,通过--wvd-path或--prd-path提供;没有 L1 设备时最多只能拿到 1080p。想省空间时也可以反着用:

gamdl --music-video-resolution 720p --music-video-remux-format mp4 "音乐视频链接"

这一条把画质压到 720p 上限,并把容器格式从默认的m4v改成通用性更好的mp4。下载过程中,视频和音频两条加密流会被分别拉下来,再由项目自带的 Rust 原生扩展 ammuxer 完成解密与封装,拼成单个媒体文件——注意这里的"remux"只是重新封装,不做转码,输出音质与源流一致。

音频编码怎么选:默认 AAC 256kbps 不是唯一选项

歌曲默认使用aac-web流(AAC 256kbps、44.1kHz),这是兼容性和体量的平衡点。gamdl 并不在本地把音频转成 MP3 或 FLAC——所谓"选编码",是在 Apple 提供的多路流里挑选原始码流,输出仍是 MP4 家族容器(.m4a/.m4v/.mp4)。可选编码及特点:

编码规格适用场景
aac-web(默认)AAC 256kbps / 44.1kHz通用,兼容性最好
aac-he-webAAC-HE 64kbps / 44.1kHz省空间,车载或大曲库
aacAAC 256kbps / 最高 48kHz非 Web 流,采样率略高
atmosDolby Atmos 768kbps追求沉浸式听感
ac3AC3 640kbps需要多声道的场景
alac无损,最高 24-bit/192kHz存档级无损

--song-codec-priority接受逗号分隔的优先级列表,按顺序尝试,前一个在该歌曲上不可用时自动降级:

gamdl --song-codec-priority atmos,aac --synced-lyrics-format lrc "歌曲链接"

这条命令先尝试 Atmos,拿不到就退回 AAC,同时下载逐字歌词。一个重要的例外:alac需要配合 wrapper 服务(--use-wrapper)才基本可用,不开 wrapper 时 CLI 会直接警告"可能因 API 限制而失败"。另外用ask可以进入交互式选择,让你现场看可选流再挑。歌词格式有lrc(默认)、srt(时间戳更精确)、ttml(Apple 原生格式,多数播放器不认)三种,对应--synced-lyrics-format。编码枚举与优先级匹配逻辑分别在歌曲接口和编码枚举中。

进阶两招:跳过重复下载,换更快的下载引擎

日常用多了之后,两个进阶参数最实用。

--database-path指定一个 SQLite 数据库文件,把每次下载成功的媒体注册进去;再次下载相同链接时,已入库的条目会被直接过滤跳过,适合反复扫描整个艺人或歌单做增量补齐:

gamdl --database-path ./my_library.db "艺人链接"

--download-mode nm3u8dlre把文件下载环节从默认的 yt-dlp 换成 N_m3u8DL-RE 引擎(注意 yt-dlp 在此项目里本来就只是下载库,媒体仍来自 Apple 服务器)。需要本机装好该可执行文件和 FFmpeg,不在 PATH 里就用--nm3u8dlre-path、--ffmpeg-path指定位置。

还有几个按需开启的小开关:--save-cover把封面另存为独立图片文件(用raw原始封面格式时它必须开着);--save-playlist额外保存 M3U8 歌单文件;--artist-auto-select music-videos让艺人链接自动只下 MV,免去交互式点选。

常见问题:四个高频报错的处理方式

Permission denied / 路径写不进去。--output-path和--temp-path在解析时就会校验可写性,报错多半是指定了系统目录或没有写权限的路径。换一个你自己拥有的目录即可。

指定了 4K 却只下到 1080p。先确认有没有给--wvd-path提供 Widevine L1 的.wvd或--prd-path提供 SL3000 的.prd;其次 4K 流只有 H.265 编码,--music-video-codec-priority里必须保留h265。部分视频源本身也没有 4K 档,属正常现象。

ALAC 下载失败。没开--use-wrapper时 ALAC 大概率拿不到(API 限制)。要么启用 wrapper 服务,要么把优先级改成alac,aac之类的组合,让它失败时自动落到 AAC。

配置文件改了不生效。三个检查点:参数是否写在[gamdl]段下;参数名是否用下划线(output_path而不是output-path);该参数这次是否又被命令行参数覆盖了——命令行优先,覆盖是正常行为而非 bug。

把config.ini里的固定偏好(输出目录、分辨率、编码优先级)定好之后,日常使用基本就是"链接 + 一两个临时参数"的形态。曲库管理、4K 收藏、无损存档,这三类需求都能在这几个开关之间覆盖到,剩下的就是按自己的播放设备把编码档位对齐。

【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询