正如 Apple-Music-Electron repo 上简介里说的:

适用于Windows,Linux和macOS的非官方Apple Music应用程序,而无需安装iTunes或通过浏览器使用极其臃肿的Web应用程序。

这也是老灯在 Linux 下要这么一个 app 的原因。对于老灯来说,浏览器在大部分情况下都是用来浏览文档,调试代码。里面夹杂着一个在线音乐播放网站可不好找,特别是tab非常多的情况下。因此,有一个独立的 app 就非常重要的。哪怕只是拿 Electron 框架包裹一下 https://beta.music.apple.com/ , 老灯也觉得这类 app 非常有意义。Life changed.

功能简介

在 Github 上找到两个, 分别只有30多和10多个star, 两个老灯都试用了一下。

安装就不说了哈,直接 Github release 里下载相应的 rpm 或 deb 包安装即可。

cryptofyre/Apple-Music-Electron

https://github.com/cryptofyre/Apple-Music-Electron 各方面都比较出色,黑色界面,唯一的缺点是没有竖直滚动条。顶部播放条的艺人名称和歌曲名称可点击。老灯选择的是这个。

17hoehbr/apple-music-electron

https://github.com/17hoehbr/apple-music-electron 直接套用了 https://beta.music.apple.com/ 的主题,有竖直滚动条。缺点是顶部播放条的艺人名称和歌曲名称无法点击。

troublesoot

点击播放时弹出CONTENT_EQUIVALENT错误

解决办法: 重启 app 就好了。

原因是,Apple Music 使用了DRM加密, Electron wrapper 在首次启动的时候需要联网下载一个 Widevine DRM 解密模块。重启启动 app , 一般 libwidevinecdm.so 下载成功了,就可以正常播放了。

你可以通过查看 ~/.config/Apple Music/WidevineCDM 目录下的文件检测 DRM 模块是否下载成功。如:

❯ ls -lh ~/.config/Apple Music/WidevineCDM 
.rw-r--r-- ttys3 ttys3 8.9 MB Sun Mar  7 11:41:14 2021  libwidevinecdm.so
.rw-r--r-- ttys3 ttys3 479 B  Sun Mar  7 11:41:14 2021  LICENSE.txt
.rw-r--r-- ttys3 ttys3 375 B  Sun Mar  7 11:41:14 2021  manifest.json
❯ bat manifest.json
{
    "arch": "x64",
    "description": "Widevine Content Decryption Module",
    "manifest_version": 2,
    "name": "WidevineCdm",
    "os": "linux",
    "version": "4.10.1582.2",
    "x-cdm-codecs": "vp8,vp9.0,avc1,av01",
    "x-cdm-host-versions": "10",
    "x-cdm-interface-versions": "10",
    "x-cdm-module-versions": "4",
    "x-cdm-persistent-license-support": true
}
  ~/.config/Apple Music/WidevineCDM    

Failed to install Widevine component, Error 400

一般是由于网络问题,导致 Electronjs 自动下载 Widevine DRM 组件失败。

在安装了 Chrome 的 Linux 机器上,直接Copy Chrome 自带的 Widevine 组件即可.

在 Ubuntu 上这个位置是:

/opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so

# 先启动一次 app
# 然后创建目录 WidevineCDM
mkdir ~/.config/Apple\ Music/WidevineCDM/

❯ cp -v /opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so ~/.config/Apple\ Music/WidevineCDM/
'/opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so' -> '/home/ttys3/.config/Apple Music/WidevineCDM/libwidevinecdm.so

Chrome 打开 chrome://components/ 查看 “Widevine Content Decryption Module” 的版本号,老灯这里是“Version: 4.10.2209.0

然后在 ~/.config/Apple Music/WidevineCDM 下新建 manifest.json 内容如下:

{
    "arch": "x64",
    "description": "Widevine Content Decryption Module",
    "manifest_version": 2,
    "name": "WidevineCdm",
    "os": "linux",
    "version": "4.10.2209.0",
    "x-cdm-codecs": "vp8,vp9.0,avc1,av01",
    "x-cdm-host-versions": "10",
    "x-cdm-interface-versions": "10",
    "x-cdm-module-versions": "4",
    "x-cdm-persistent-license-support": true
}

启动一次 app, 然后关闭,再启动 就 OK 了。

已经播放过的歌曲缓存在哪里?

经过老灯的分析,这个目录是在 ~/.config/Apple Music/Cache

ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /home/ttys3/.config/Apple Music ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  305.0 MiB [##########] /Cache
   28.9 MiB [          ] /Service Worker
    8.9 MiB [          ] /WidevineCDM
    2.2 MiB [          ] /Code Cache
  448.0 KiB [          ] /Dictionaries
  300.0 KiB [          ] /GPUCache
  120.0 KiB [          ] /File System
  108.0 KiB [          ] /IndexedDB
   52.0 KiB [          ]  QuotaManager
   40.0 KiB [          ] /Local Storage
   32.0 KiB [          ] /databases
   28.0 KiB [          ]  Cookies
   28.0 KiB [          ] /Session Storage
    8.0 KiB [          ] /blob_storage
    8.0 KiB [          ] /Downloads
    8.0 KiB [          ]  TransportSecurity
e   4.0 KiB [          ] /Crash Reports
    4.0 KiB [          ]  Network Persistent State
    4.0 KiB [          ]  Preferences
    0.0   B [          ]  QuotaManager-journal
    0.0   B [          ]  Cookies-journal

我的系统是英文界面的,如何强制 Apple Music 显示中文?

这其实是老灯的需求,系统语言习惯设置成英文。但是,对于一些奇怪的歌曲名称,尤其是中国传统民族乐器经典曲目,我相信没几个人看到英文名称能翻译成中文。

这个也简单,修改启动命令,添加 LANG=zh_CN.UTF-8 环境变量即可。

sudo sed -i 's|Exec="/opt|Exec=env LANG=zh_CN.UTF-8 "/opt|' /usr/share/applications/apple-music-electron.desktop


❯ bat /usr/share/applications/apple-music-electron.desktop
[Desktop Entry]
Name=Apple Music
Exec=env LANG=zh_CN.UTF-8 "/opt/Apple Music/apple-music-electron" %U
Terminal=false
Type=Application
Icon=apple-music-electron
StartupWMClass=Apple Music
Comment=Unofficial Electron wrapper for Apple Music created by @cryptofyre
Categories=AudioVideo;

refs

Widevine DRM 介绍 https://zh.wikipedia.org/wiki/Widevine

关于 DRM 音频转换成 mp3 或 flac, 好像工具挺多的,比如 TuneFab iTunes Audio Converter (收费)