WALKMAN 也要用网易云!- 教你优雅地在播放器上听歌

去年也不知道为啥买了台 WALKMAN ZX-300A,看了下主流的塞歌方案也就两种:

  1. 自己找无损资源往里塞
  2. 从流媒体平台下下来再自己塞进去

第一种的话嫌麻烦,第二种的话也不简单,尤其是现在网易云还在整自己的加壳格式,更何况还没歌词(ZonyLrcToolsX 这玩意儿能用嘛)和封面,无奈只好自己写一个了

之前用 Python 写了一个还算稳定的版本,可以在这里查看,最近正好有空就用 Node.js 又写了一遍,有一定的性能提升和新功能,本文讲的就是这个 Node 版本

虽然起名用的是 WALKMAN,不过理论来讲别的品牌的 MP3 也是可以使用的,欢迎回报可用的设备型号~

Features

  • 下载用户歌单
  • 填充音乐元数据 (封面、标题、歌手、专辑、发行年份)
  • 下载并格式化歌词及翻译
  • 允许排除 / 附加歌单
  • 为本地文件夹生成列表
  • 登陆后下载无损格式音乐
  • 自定义下载质量 (默认最高[若未开通会员仅可下载少量无损歌曲])
  • 多线程处理
  • 下载错误自动重试
  • 处理云端歌单变动
  • 合并歌词原文与翻译
  • 下载专辑
  • 处理播放器端列表变动
  • 指定为某几个歌单生成组合列表

依赖

Quick Start

  1. 打开终端,准备好 SD 卡并切换到其根目录下
  2. 输入 git clone --depth=1 -b node https://github.com/isXiaoLin/CloudMan.git
  3. 输入 cd CloudMan && cp .env.example .env && npm i
  4. 使用你最爱的编辑器打开 .env 文件并修改用户名和密码
  5. 输入 npm start
  6. 漫长超短的等待

如果不想自行构建,可以在这里下载预构建的版本,放置于 .env 文件的同一级目录下运行即可

配置文件

# 日志等级
cm_logLevel = info

# 是否为 /MUSIC 目录中的文件夹生成播放列表
cm_generatePlaylistFile = true

# NeteaseCloudMusicApi 服务地址
# 若未自建则无需更改
cm_api = https://cm.api.xiaolin.in
# 网易云手机账号
cm_phone = 13912345678
# 网易云密码
cm_password = 123456

# 附加的歌单 (用,分割)
cm_extraPlaylist = 
# 排除的歌单 (用,分割)
cm_excludePlaylist = 

# 是否下载收藏的专辑
cm_downloadSubAlbum = false
# 附加的专辑 (用,分割)
cm_extraAlbum = 
# 排除的专辑 (用,分割)
cm_excludeAlbum = 

# 下载音质
cm_bitRate = 999000

# 是否将歌词与翻译合并为一行
cm_mergeTranslation = false

# 处理/下载歌曲的并发数
cm_playlistConcurrency = 3

截图

播放列表

播放界面

歌词界面

工作原理

可能有些人会对工作原理有点好奇,这里简单写一下,也方便提 PR (小声

首先是生成要下载的所有歌曲列表,接下来生成两个队列:下载队列和处理/复制队列 (分开是为了防止 SD 卡爆炸)

下载方面没有用之前的多线程下载,因为感觉用处不大

至于处理的话使用到了 node-id3metaflac-js2 这两个库,用于将歌曲信息和封面写进文件里,最后将处理好的文件从系统缓存文件夹复制进设备

SensMe 及 Music Center for PC

这几天试用了一下 Sony 官方的 Music Center for PC, 发现其实还算好用,尤其是元数据补充得非常齐并且准确率也很高 (这也太高了吧 (碎碎念

这个项目是用网易云得数据所以没法比得嘛 (自我安慰

但是依然是可以进行 SensMe 分析的!只用打开 Music Center for PC,在文件->导入文件夹中选择 WALKMAN-SD 中的MUSIC/CloudMan文件夹,然后全选右键点击获取未知元素就可以啦!

碎碎念

感觉这玩意儿应该是用 MP3 的刚需才对呀但为啥没人写呢.webp

希望写这玩意儿能帮助到有设备的各位,因为是日常使用的程序所以应该会保持一直更新,有点子/有时间的时候可能会加一些新功能,如果有 Feature request 欢迎提 IS 或者 PR 哦

项目地址:GitHub (有帮助的话可以点颗小星星嘛

enjoy~

本文采用 CC BY-NC-SA 4.0 许可协议。转载和引用时请注意遵守协议、注明出处!