项目地址: https://github.com/reorx/xiami_exporter
前言
虾米将在 2 月 5 日正式关闭,作为虾米曾经的用户,不舍属于自己的数据就此丢失,遂开发此工具,通过虾米网页端 API,尽可能将多种格式的数据完整保存下来,并规范数据库和文件系统存储结构,方便日后查询和使用。在此分享给有同样需求的朋友,愿大家都能保留属于自己的一份比特记忆。
可能有人会问,虾米官方不是提供了导出的方法吗,为何还要自己动手实现呢?首先,官方导出的数据非常简陋,以收藏歌曲为例,官方导出每首歌只有 songName
, albumName
, singers
三个字段,无论是用于溯源还是写入 metadata 都远远不足,只能作为聊胜于无的最后手段;其次,官方不提供歌曲音频文件的下载,对于只存在于虾米的歌曲,往后将非常难以寻找;最后,官方提供的 json 不便于查询和维护,建立一套完整的数据库表结构可以大大增进这方面的便利性,为日后基于这份数据创造其他的应用(如专辑、歌曲展示页面)提供了良好的基础。
功能
Xiami Exporter 目前已实现的功能包括:
- [x] 导出收藏歌曲为 json
- [x] 导出收藏艺人为 json
- [x] 导出收藏专辑为 json
- [x] 导出播放列表为 json (个人和收藏)
- [x] 将导出的数据整理至 sqlite 数据库
- [x] 下载已导出歌曲的 MP3 文件
- [x] 根据导出信息为 MP3 添加完整的 ID3 tag
- [x] 下载已导出歌曲的专辑、艺人的封面图片
即将实现的功能有:
- [ ] 下载已导出专辑的 MP3 文件
- [ ] 下载已导出播放列表的 MP3 文件
使用导出的 json 和下载的专辑封面可对 MP3 进行完整的 ID3 标注,示例见下图:
数据
Xiami Exporter 保存的数据有如下几类:
- json 数据文件: 歌曲、专辑、艺人、播放列表
- MP3 音频文件: 歌曲、专辑、播放列表
- jpg/png 图片文件: 专辑封面
- sqlite3 数据库文件: 歌曲、专辑、艺人、播放列表
默认在项目路径下创建 XiamiExports
目录,以便于检索的方式将以上数据分门别类,放置在各子目录下。
数据库中会包含 song, album, playlist 三个表格,目前完成了 song 的 schema,示例见下图:
FAQ
-
Q: 如何完成身份验证?
A: 通过导出 Chrome 中已登录账户的 cookie,不需要向本工具输入用户名和密码。
-
Q: 使用者需要什么知识和环境?
A: 基本的命令行操作常识,一台安装了 Python 3 的电脑(macOS 和 Linux 为佳,Windows 理论上支持,若有问题可以反馈 issues)
-
Q: 只能用一个月的项目值得这么做吗?
A: 经历和记忆定义了目前的我们,对于这个愈发「赛博」的世界来说,数据如同灵魂的一部分,不可轻易舍弃,更不可被随意侵犯。
来源:oschina
链接:https://my.oschina.net/reorx/blog/4906508