Xiami Exporter 虾米数据导出和音乐下载工具

心不动则不痛 提交于 2021-01-16 19:37:30

项目地址: 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: 经历和记忆定义了目前的我们,对于这个愈发「赛博」的世界来说,数据如同灵魂的一部分,不可轻易舍弃,更不可被随意侵犯。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!