中文 / English
⚠️ 注意⚠️ 本项目只提供歌单的迁移与转换功能,不具有音乐下载、传输、播放的能力,您需要自行使用其他方式来获取非加密格式(flac、mp3、wav等)的音乐文件。
现在,已经有大量用户将主力使用的音乐软件从在线音乐平台转为了本地音乐播放器,虽然歌曲可以很顺利且快速地进行迁移操作,但是无法将自己创建的歌单、或者其他用户的优秀歌单一并进行快速迁移操作,这个项目就是为了解决这个问题而诞生的。
本项目能够将用户保存在网易云音乐、QQ音乐、酷狗音乐、酷我音乐这4个在线音乐平台的歌单数据,转换成支持的本地音乐播放器 (目前支持:Salt Player、APlayer、Poweramp) 可识别的歌单格式,完成歌单的导入操作,方便用户快速从在线音乐平台迁移歌单到本地音乐播放器。
- 推荐:Android API Level 31(Android S, 12.0)及以上版本。
- 兼容:Android API Level 26(Android O, 8.0)及以上版本。
- 使用Jetpack Compose进行UI设计,界面简洁美观。
- 使用Salt UI为UI基础组件。
- 完全在本地进行歌单数据的转换,不会上传任何数据到服务器。
- 支持多种在线音乐平台的歌单数据,以及多种本地音乐播放器的歌单格式,可根据需要自行选择。
- 保留原歌单的排序方式,不会因为转换而改变原歌单的排序。
- 保留对椒盐歌单转换助手的支持,生成的结果文件仍可在电脑、平板等大屏设备上使用。
- 多语言支持,目前支持简体中文、英语、韩语。
- 干净无广告,且只在必要时(获取在线歌单数据、检查版本更新等操作)连接互联网。
- 提供自定义选项,支持部分Material 3特性。
- 💫 在App中登录音乐平台的账号,即可直接从对应平台在线获取歌单数据,无需再手动寻找数据库文件。
- 💫 设备已有Root权限的用户,可使用Root权限自动获取歌单来源App的数据库文件。
- 提供简单的音乐标签编辑功能。
- 支持部分标签的补全功能,可根据歌曲中已有的标签信息自动填充缺失标签信息。
- 提供丰富的,可自定义强度的,可关闭的触觉反馈。
- 支持调用UM的可执行文件,可直接在设备上使用UM的功能。(该功能仅供开发者学习研究使用。出于法律法规等相关因素的考虑,不会公开提供此功能)
- 更多特性,等待您的发现!
🛠️ 施工中……
本项目需要配合以下软件一起使用:
- 受支持的在线音乐平台的Android客户端(选择自己使用的一个或多个平台)
- 音乐标签
- 文件管理器(选择一个即可)
- Android虚拟机(当前设备未获取Root权限时需要,选择一个即可)
- Salt Player(或糖醋音乐) 或/与 APlayer 或/与 Poweramp
- 若当前设备有Root权限,直接在本项目的Release中下载最新版本的app-release.apk文件,安装即可。
- 若当前设备没有Root权限,在本项目的Release中下载最新版本的app-release.apk文件后:
- 打开歌单无界应用程序。
- 点击底部导航栏的设置按钮。
- 根据您的喜好与设备情况,进行相关设置:
- 动态取色:启用后,应用的主题颜色会根据您的壁纸进行动态取色 (仅支持Android 12+)。
- 主题模式:选择应用的主题模式(跟随系统、浅色、深色)。
- 使用Root权限:启用后,应用会使用Root权限自动获取歌单来源App的数据库文件 (仅支持设备已有Root权限的用户)。
- 选择加密服务器:在线获取某些平台的歌单数据时,需要先请求加密服务器将请求字符串加密,再向平台请求数据。提供3个加密服务器供选择,以备不时之需。
- 语言:选择应用的语言(简体中文、English、한국어)。
- 触感反馈:启用后,应用会在某些操作时进行震动反馈。
- 启动时检查更新:启用后,应用会在启动时检查是否有新版本。
☢️警告☢️
本步骤会覆盖您本地音乐的标签信息,请谨慎操作!
若您之前已经自行匹配(或修改)过歌曲的标签信息,可跳过本步骤。
若后续匹配结果不理想,再进行此步骤,并重新进行扫描即可。
- 将音乐文件保存在手机里(相信您已经完成这个步骤了)。
- 打开音乐标签APP。
- 点击右上角刷新按钮,令其扫描手机中的音乐文件。
- 点击左上角菜单按钮,点击弹出菜单底部的设置。
- 点击组合标签源,仅启用与歌单来源平台对应的数据源,点击确定(比如,歌单来源平台为网易云音乐,则只启用网易云标签源,其他标签源都应禁用,若歌单来源平台为酷狗音乐,则启用QQ与酷我标签源,且QQ的优先级高于酷我)。
- 返回到音乐标签主界面,点击右下角的编辑按钮,点击自动匹配标签。
- 在弹出的对话框中,仅勾选标题、艺术家、专辑,并同时启用其右侧的覆盖选项,按需调整“网络搜索线程数”,点击确定。
- 等待音乐标签批量匹配完成。
-
打开歌单无界应用程序。
-
点击底部导航栏的扫描按钮(应用打开默认处于本页面)支持的音乐格式。
-
若您需要将扫描结果导出,请启用导出结果开关(仅当您需要在其他设备上进行歌单转换操作时,才需要打开本开关),并选择文件格式:
- 在另一台Android设备上使用:选择数据库.db文件。
- 在电脑、平板等大屏设备上使用:选择文本.txt文件
-
点击开始按钮,并授予请求的权限(如果未授予的话)。
-
选择您设备中存放音乐文件的目录,方法如下表格所示:
-
等待应用扫描完成(完成后会有Toast与震动提示)。
ℹ️提示ℹ️
若您使用在线获取歌单数据功能,请跳转查看第4.3节 开始歌单转换的操作。
- 打开需要使用的在线音乐平台客户端APP。
- 登录账号。
- 依次点击进入自己的所有歌单(或者需要导出的歌单),并滑动到歌单页的最底部,加载当前歌单的所有歌曲。
- 重复上述步骤,直到所有要导出的歌单都加载过一次。
- 主动关闭在线音乐平台客户端(在软件菜单中选择关闭[推荐],或在多任务界面中将其划掉)。
(若设备已有Root权限,且在设置中启用了使用Root权限开关的用户,可跳过本步骤)
(若设备没有Root权限,需在虚拟机中进行本步骤)
-
打开文件管理器,授予Root权限,进入在线音乐平台客户端的数据目录,找到databases文件夹,找到指定的数据库文件。
若觉得各个软件的数据目录比较难找,可以使用MT管理器快速定位:点击左上角菜单-点击安装包提取-选择需要的音乐APP-点击数据目录1
,即可快速跳转到数据目录。展开数据路径
- 网易云音乐
- 数据目录:
/data/user/0/com.netease.cloudmusic/databases
- 数据库文件:
cloudmusic.db
- 数据目录:
- QQ音乐
- 数据目录:
/data/user/0/com.tencent.qqmusic/databases
- 数据库文件:
QQMusic
- 数据目录:
- 酷狗音乐
- 数据目录:
/data/user/0/com.kugou.android/databases
- 数据库文件:
kugou_music_phone_v7.db
- 数据目录:
- 酷我音乐
- 数据目录:
/data/user/0/cn.kuwo.player/databases
- 数据库文件:
kwplayer.db
- 数据目录:
- 网易云音乐
-
将数据库文件复制到外部存储空间的任意目录中(如Download、Document等)。
- 打开歌单无界应用程序。
- 点击底部导航栏的转换按钮。
- 选择歌单来源平台:
- 选择歌单来源App的数据库文件 (在线获取歌单、Root用户忽略)
- 选择歌单获取方式:
-
在线获取:在点击下一步按钮后,弹出的对话框中选择登录方式:
- 网页登录:软件将打开所选择的在线音乐平台的登录网页,您需要登录账号(扫码、输入账号密码皆可),登录成功后,点击确定按钮。
- Cookie登录:使用上次网页登录时保留的Cookie信息(若存在且未过期,软件会自动填写),或来自其他浏览器的Cookie信息登录,在输入框内输入Cookie信息,点击确定按钮。
展开各平台需要的Cookie信息
提供的Cookie包含必需信息即可,填写格式为:
key1=value1; key2=value2; key3=value3
,不需要填写path
、domain
等信息。如:
MUSIC_U=XXYYZZ998877; __csrf=aabbcc112233; uid=13811012138
- 网易云音乐:
MUSIC_U
、__csrf
、uid
(uid需要您自行获取) - QQ音乐:
uin
或wxuin
、qm_keyst
- 酷狗音乐:仅支持扫描二维码登录。(使用车机版的登录接口,需要使用酷狗APP扫码;或者酷狗账号绑定微信后,微信扫码关注“酷狗智能设备”公众号。)
- 酷我音乐:
Hm_Iuvt
-
数据库获取:选择歌单来源App的数据库文件。
-
- 选择使用本软件的扫描结果,还是来自其他设备的扫描结果。
- 选择转换后要导入的音乐播放器。
- 点击下一步按钮,并授予请求的权限(如果未授予的话)。
- 查看检测到的有效歌单,检查歌单名称、包含的歌曲数量是否正常,并勾选要转换的歌单,点击下一步按钮。
- 根据需要自定义转换选项。
- 点击预览转换结果按钮,等待转换完成(完成后会有震动提示)。
- 查看转换结果,可以使用筛选功能对结果进行相关筛选。
- 若对当前结果满意,可以直接点击保存转换结果按钮,选择要保存的转换状态,继续下一个歌单的转换操作(如果有的话)。
- 若对当前结果有点不满意,可以点击转换错误的歌曲,在您的本地曲库中搜索并修改转换的结果(点击对话框中的“歌名”、“歌手”、“专辑”项,可以快速输入该项内容到输入框中),或者从结果中删除某首歌曲。
- 若对当前结果非常不满意,可以点击重新修改参数按钮,或者直接返回,回到上一页,对转换选项进行相关修改后,再次尝试转换。
- 待之前选择的所有歌单均转换完成后,会跳转到“转换完成”页,可以点击复制目录路径按钮,便于直接使用文件管理器,前往查看结果文件;或者点击 打开[播放器名称] 按钮,直接打开对应的音乐播放器,进行歌单的导入操作。
- (仅歌单获取方式为在线获取才可使用,可选)点击“转换完成”页中的退出登录按钮,退出音乐平台的登录状态。(会导致在第4步时无法自动填写Cookie信息)
-
🌟 Salt Player(或糖醋音乐)
展开步骤
- 打开Salt Player(或糖醋音乐)。
- 点击左上角的菜单按钮,或向右滑动。
- 点击歌单项。
- 点击右上角的菜单按钮。
- 点击 导入歌单(.txt) 按钮。
- 选择生成的转换结果文件。
-
🌟 APlayer
展开步骤
- 打开APlayer。
- 点击左上角的菜单按钮。
- 点击设置项。
- 点击歌单导入项。
- 选择 从外部存储导入(.m3u) 。
- 选择生成的转换结果文件。
-
🌟 Poweramp
展开步骤
- 使用文件管理器(系统自带或第三方皆可),前往生成的转换结果文件所在的目录。
- 将所有.m3u8文件复制/移动到Poweramp的媒体库目录中。
- 打开Poweramp。
- 点击左下角的媒体库按钮。
- 点击播放列表项。
- 点击右上角的菜单按钮。
- 点击重新扫描/解析播放列表项。
- 打开歌单无界应用程序。
- 点击底部导航栏的设置按钮。
- 滑动到页面底部,点击关于按钮。
- 查看应用的相关信息:
- 应用图标
- 应用名称
- 应用版本
- 制作人员(包含❤️感谢名单❤️)
- 检查更新(手动)
- 开源代码许可证
- 打开Salt Convertor 电脑版
- 赞赏
- 联系开发者
- 加入QQ群
- 关注酷安
- 关注哔哩哔哩
- 查看本项目的GitHub仓库
- 查看本项目的GitLab仓库
- 查看本项目的Gitee仓库
- 已支持以下标签的编辑
- 标题(歌名)
- 艺术家(歌手)
- 专辑
- 专辑艺术家
- 专辑封面
- 流派
- 作词
- 作曲
- 编曲
- 发行年份
- 音轨号
- 碟号
- 歌词
- 已支持以下标签的自动补全
-
专辑艺术家
展开详细说明
该功能依赖于本地歌曲的「专辑」与「艺术家」标签信息。
获取每个歌曲文件的「专辑」标签,在本地歌曲中查找是否有其他歌曲属于同一张专辑,将同一张专辑所有歌曲的「艺术家」标签汇总,并按照
艺术家1/艺术家2/艺术家3
的格式,写入「专辑艺术家」标签中。- 例(本地音乐中有以下歌曲):
- 歌曲1:离别时刻 - 娄艺潇 - 离别时刻 爱情公寓5电视剧原声带
- 歌曲2:你的每个瞬间 - 成始璄 - 来自星星的你 OST - Part.7
- 歌曲3:走在冷风中 - 刘思涵 - 拥抱你
- 歌曲4:新婚礼进行曲 (进场篇) - 爱情公寓全体 - 离别时刻 爱情公寓5电视剧原声带
- 歌曲5:最好的礼物 - 李金铭 - 离别时刻 爱情公寓5电视剧原声带
- 歌曲6:你的每个瞬间 (Piano VER.) - 成始璄 - 来自星星的你 OST - Part.7
- 歌曲7:孤独的角落 - 韦正 - 离别时刻 爱情公寓5电视剧原声带
- 歌曲8:借过 - 印子月 - 旋风少女 电视剧原声带
- 进行「专辑艺术家」标签快速补全后:
- 歌曲1、4、5、7的「专辑」均为
离别时刻 爱情公寓5电视剧原声带
,故将这4首歌曲的「艺术家」汇总为娄艺潇/爱情公寓全体/李金铭/韦正
,并写入这4首歌的「专辑艺术家」标签中。 - 歌曲2、6的「专辑」均为
来自星星的你 OST - Part.7
,故将这2首歌曲的「艺术家」汇总为成始璄
,并写入这2首歌的「专辑艺术家」标签中。 - 歌曲3的「专辑」为
拥抱你
,故将该歌曲的「艺术家」汇总为刘思涵
,并写入该歌曲的「专辑艺术家」标签中。 - 歌曲8的「专辑」为
旋风少女 电视剧原声带
,故将该歌曲的「艺术家」汇总为印子月
,并写入该歌曲的「专辑艺术家」标签中。
- 歌曲1、4、5、7的「专辑」均为
- 例(本地音乐中有以下歌曲):
-
作词、作曲、编曲
展开详细说明
该功能依赖于本地歌曲的「歌词」标签信息。
获取每个歌曲文件的「歌词」标签,识别出歌词中保存的作词、作曲、编曲信息,并按照
人名1/人名2/人名3
的格式,分别写入「作词」、「作曲」、「编曲」标签中。- 目前支持以下歌词类型:
- [00:00.48]Written by
- [00:00.48]Lyrics by
- [00:00.48]Composed by
- [00:00.48]Arranged by
- [00:00.48]作词
- [00:00.48]作词 Lyrics
- [00:00.48]作詞
- [00:00.48]作曲
- [00:00.48]作曲 Composer
- [00:00.48]编曲
- [00:00.48]编曲 Arranger
- [00:00.48]编曲 Arrangement
- [00:00.48]編曲
- [00:00.48]词
- [00:00.48]詞
- [00:00.48]曲
若您发现作词、作曲、编曲的识别有遗漏或错误,请联系开发者。
- 目前支持以下歌词类型:
-
- OGG
- MP3
- FLAC
- MP4
- M4A
- M4P
- WMA
- WAV
- RA
- RM
- M4B
- AIF
- AIFF
- AIFC
- DSF
- DFF
程序认为两个字符串相同的相似度大小,详情:
若当前阈值为0.8:
-
相同
字符串1:想いの眠るゆりかご (回忆长眠的摇篮)
字符串2:想いの眠るゆりかご (回忆长眠的摇篮)
相似度:1.0 -
相同
字符串1:伤感 II
字符串2:伤感 I
相似度:0.8 -
不相同
字符串1:I'M OK
字符串2:I AM OK
相似度:0.7142857142857143 -
不相同
字符串1:BANG BANG BANG (뱅뱅뱅)
字符串2:BANG BANG BANG
相似度:0.7 -
不相同
字符串1:이 사랑 (这份爱) (Inst.)
字符串2:이 사랑 (这份爱)
相似度:0.5555555555555556 -
不相同
字符串1:aaabbbccc
字符串2:abcabcabc
相似度:0.33333333333333337
大部分音乐平台对外语歌曲信息的命名方式一般为: 外文 (中文翻译)
或外文 (歌曲来源、歌曲版本等)
。
如City Of Stars (From "La La Land" Soundtrack)
、CALL ME BABY (叫我) (Chinese Ver.)
、桜色舞うころ (樱花纷飞时)
。
启用此功能可以将字符串中的括号部分删去,只保留外文名,即:外文
。如:City Of Stars
、CALL ME BABY
、桜色舞うころ
,以此提高自动匹配成功率。
但需要注意,部分歌曲会在歌名后用括号注明歌曲版本:歌名 (歌曲版本)
。如曾经我也想过一了百了 (Live)
、TruE (Ed Ver.)
,在这种情况下,若启用了本功能,会将其变成:曾经我也想过一了百了
、TruE
,继而可能会出现匹配错误。
请您根据您的实际情况,决定是否使用本功能。
例如:
歌单中歌曲的信息如下:
歌名:小幸运
歌手:田馥甄
专辑:我的少女时代 电影原声带
本地歌曲的信息如下:
歌名:小幸运
歌手:田馥甄
专辑:我的少女时代 电影原声大碟
将歌曲的[歌名] [歌手] [专辑]拼接成一个字符串,进行匹配,找到相似度最大的歌曲。表格中将显示整体匹配的相似度。
本匹配方法将使用:
小幸运田馥甄我的少女时代 电影原声带
与
小幸运田馥甄我的少女时代 电影原声大碟
进行匹配,相似度结果为:89.47%。
将歌曲的[歌名] [歌手] [专辑]分别进行匹配, 找到相似度最大的歌曲。 表格中将显示每个匹配项的相似度。
本匹配方法将分别使用:
小幸运
与小幸运
田馥甄
与田馥甄
我的少女时代 电影原声带
与我的少女时代 电影原声大碟
进行匹配,相似度结果分别为:
- 100%
- 100%
- 84.62%
这两个平台的歌曲信息正确率较高,且较为完整、权威,可以有效提高自动匹配的成功率。
该平台歌曲信息不太符合规范,合唱歌曲的艺术家名使用、
分隔,且括号、斜杠的使用比较混乱,且非【我喜欢】歌单中歌曲的专辑信息不会保存到数据库中,导致匹配精确度下降,不太建议使用。
该平台歌曲信息不太符合规范,合唱歌曲的艺术家名使用&
分隔,且括号、斜杠的使用比较混乱,且有很多用户自行上传的歌曲,这些歌曲的标签信息大部分都不完整且不合规范,可能导致匹配精确度下降,不太建议使用。
-
移动端App:
- 打开网易云音乐APP,并登录。
- 点击屏幕下方中间的我的按钮。
- 点击您的头像或昵称。
- 点击右上角...,选择编辑资料,或直接点击编辑资料按钮。
- 点击最后一项账号和绑定设置
- 您的UID会显示在页面的最上方。
-
电脑端(或移动端浏览器使用电脑UA)网页版:
- 打开网易云音乐,并登录。
- 点击页面右上角的头像,点击弹出菜单中的我的主页项。
- 查看浏览器地址栏中的
/home?id=xxxxx
,xxxxx即为您的UID。
- 访问互联网 (
android.permission.INTERNET
):用于请求音乐平台服务器,在线获取歌单数据、检查更新、获取应用的更新日志、获取应用的更新信息。 - 控制设备的震动马达 (
android.permission.VIBRATE
):用于在某些操作时进行震动反馈。 - 读取音乐App的包名、应用名称等信息 (
<queries>...</queries>
):用于在选择歌单来源时,显示歌单来源App的图标、名称等信息。 - Android 11 (API 30) 及以上:
- 所有文件管理权限 (
android.permission.MANAGE_EXTERNAL_STORAGE
):从外置存储(/storage/emulated/0
)及其子目录中读取音乐文件,写入结果文件
- 所有文件管理权限 (
- Android 10 (API 29) 及以下:
- 读外置存储权限 (
android.permission.READ_EXTERNAL_STORAGE
):从外置存储(/storage/emulated/0
)及其子目录中读取音乐文件 - 写外置存储权限 (
android.permission.WRITE_EXTERNAL_STORAGE
):向下载目录(/storage/emulated/0/Download
)中写入结果文件
- 读外置存储权限 (
(统计开始于2024.2.9)