中文 / English
现在,已经有大量用户将主力使用的音乐软件从在线音乐平台转为了本地音乐播放器,虽然歌曲可以很顺利且快速地进行迁移操作,但是无法将自己创建的歌单、或者其他用户的优秀歌单一并进行快速迁移操作,这个项目就是为了解决这个问题而诞生的。
- 原计划基于CLI实现,但由于Windows终端的编码问题,导致无法正常显示中文/韩文/日文等字符,所以现在改为使用前后端分离来实现。
- 重构版 前端仓库:SaltPlayerConverterFrontEnd
- 重构版 后端仓库:SaltPlayerConverterBackEnd
- Android版 仓库:歌单无界 于2024年1月23日正式上线啦!🎉🎉🎉
- 若您出于各种原因不太想使用前后端重构版,并能够使用Linux或者Mac OS系统,那么您可以使用CLI版,匹配的核心算法是相同的,详情请查看CLI版README。
哔哩哔哩(已被B站下线):椒盐音乐 歌单助手 使用指北
YouTube:椒盐音乐 歌单助手 使用指北
酷友@TianMiao8152
友情提供的(国内可访问):视频教程直链 或 视频教程在线播放
QQ群友这是一个名字
友情提供的(国内可访问):视频教程直链
- 电脑或其他中大屏(普通平板大小及以上)横屏设备 *1
- Android设备:
- 若使用的主力设备已获取Root权限,则只需要一台即可,无视后文中主力机与备用机的区分。
- 若使用的主力设备未获取Root权限,则需要两台设备:
- 一台获取了Root权限的Android设备,真机或虚拟机皆可,后文中称其为备用设备。
- 一台主力Android设备,后文中称其为主力设备。
本项目需要配合以下软件一起使用:
- 现代的浏览器(拥有一个即可)
- Google Chrome
- Microsoft Edge
- Firefox
- Safari
- Opera
- 系统自带的浏览器
- 受支持的在线音乐平台的Android客户端(均为普通版本,选择自己使用的一个或多个平台)
- 音乐标签
- 获取音乐的标签信息(下载Release页面中的app-release.apk即可)
- 文件管理器(选择一个即可)
- Android虚拟机(当前使用的主力设备未获取Root权限时需要,选择一个即可)
- 椒盐音乐(或糖醋音乐)
Note
强烈推荐您将本README文件完整阅读后,再进行相关操作!
安装上述软件
- 在线音乐平台客户端与文件管理器,安装到有Root权限的设备(或虚拟机)上。
- 音乐标签、获取音乐标签、椒盐音乐、文件管理器(可选),安装到主力设备上。
- 现代的浏览器,安装到电脑或其他中大屏设备上。
(在备用设备上操作)
- 打开需要使用的在线音乐平台客户端APP。
- 登录账号。
- 依次点击进入自己的所有歌单(或者需要导出的歌单),并滑动到歌单页的最底部,加载当前歌单的所有歌曲。
- 重复上述步骤,直到要所有导出的歌单都加载过一次。
- 主动关闭在线音乐平台客户端(在软件菜单中选择关闭[推荐],或直接在后台界面中将其划掉)。
- 打开文件管理器,授予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
- 数据目录:
- 网易云音乐
- 将数据库文件发送到电脑或其他中大屏设备上。
Warning
本步骤会覆盖您本地音乐的标签信息,请谨慎操作!
若您之前已经自行匹配(或修改)过歌曲的标签信息,可跳过本步骤。
若后续匹配结果不理想,再重新进行此步骤即可。
(在主力设备上操作)
- 将音乐文件保存在手机里(相信您已经完成这个步骤了)。
- 打开音乐标签APP。
- 点击右上角刷新按钮,令其扫描手机中的音乐文件。
- 点击左上角菜单按钮,点击弹出菜单底部的设置。
- 点击组合标签源,仅启用与歌单来源平台对应的数据源,点击确定(比如,歌单来源平台为网易云音乐,则只启用网易云标签源,其他标签源都应禁用,若歌单来源平台为酷狗音乐,则启用QQ与酷我标签源,且QQ的优先级高于酷我)。
- 返回到音乐标签主界面,点击右下角的编辑按钮,点击自动匹配标签。
- 在弹出的对话框中,仅勾选标题、艺术家、专辑,并同时启用其右侧的覆盖选项,按需调整“网络搜索线程数”,点击确定。
- 等待音乐标签批量匹配完成。
(在主力设备上操作)
- 打开获取音乐标签APP。
- 点击下方的选择目录按钮,根据提示授予所需权限。
- 选择音乐存放的目录(具体选择方式请查看这里),点击屏幕底部的使用此文件夹,在弹出的对话框中点击允许。
- 等待软件扫描并导出手机中音乐的标签信息。
- 前往软件的导出目录(手机存储目录中的Download目录)查看导出的标签信息文件本地音乐导出.txt。
- 将导出的标签信息文件发送到电脑或其他中大屏设备上。
(在电脑或其他中大屏设备上操作)
- 打开椒盐歌单助手页面。(或使用其他运行项目的方法)
- 按照您的意愿,开启或关闭允许发送统计数据(会发送哪些数据?),点击开始按钮。
- 选择歌单来源,点击下一步。
- 上传本地音乐导出.txt文件,点击下一步。
- 上传数据库文件,点击下一步。
- 选择您本次要转换的歌单,点击下一步。
- 根据您的需要,在页面左侧调整匹配的参数与设置,然后点击预览歌单按钮。
- 在页面右侧查看匹配结果,若您对匹配结果不满意,可以重新调整参数与设置并再次点击预览歌单按钮,若您对匹配结果满意,点击导出歌单。
- 若自动匹配的结果无法很好地满足您的需求,您可点击跳转到第一个匹配失败的项按钮,表格就会自动滚动并展开第一个匹配失败歌曲的详情,根据您的需要点击:
- 相同按钮:详情中展示的匹配结果正确(只是相似度没达到您设置的阈值要求)。(点击按钮立即生效)
- 编辑按钮:详情中展示的匹配结果错误,且您的本地歌曲中有歌单中对应的歌曲,您可以在弹窗中手动修改匹配结果。(在弹出的弹框中点击确认按钮后,该操作才生效)
- 放弃按钮:详情中展示的匹配结果错误,且您的本地歌曲中无歌单中对应的歌曲,您可以放弃匹配该歌曲。(在弹出的弹框中点击确认按钮后,该操作才生效)
- 弹框中可以开启放弃当前歌单所有自动匹配失败的歌曲,若您启用该项,则该歌单中所有自动匹配失败(表格最右侧列为红色的否)的歌曲项将从表格(转换结果)中删除。
- 重复第9步,直至当前歌单所有(自动匹配失败的)歌曲您都检查过一遍,点击保存当前歌单按钮,在弹窗中选择要保存的类型,并预览转换结果,完成后点击保存,保存完成后会自动开始下一个歌单的匹配操作。
- 若您不想转换当前歌单了,可以点击放弃当前歌单按钮,会自动开始下一个歌单的匹配操作。
- 若您第6步中选择的所有歌单全部匹配完成,会弹出匹配完成弹框,点击确认按钮,会跳转到下载转换结果页面。
- 在下载转换结果页面,点击下载转换结果按钮,即可下载包含转换结果的压缩文件。
- 您看选择手动删除您本次转换操作中使用的所有文件:数据库文件、本地音乐导出文件、转换结果压缩文件(若您没有手动删除,这些文件也将在3天后自动删除)。
- 将压缩文件(解压后)发送到主力设备上。
(在主力设备上操作)
- 打开椒盐音乐APP。
- 右滑或点击右上角菜单按钮,进入菜单,点击歌单。
- 点击导入歌单 (.txt)。
- (将压缩文件解压,)逐个选择压缩文件中的转换结果文件,将其导入到椒盐音乐中。
- 在椒盐音乐中查看导入的歌单。
过程比较繁琐,不推荐普通用户使用,故不在本项目的README中介绍,对项目感兴趣的大佬可见:
前端:SaltPlayerConverterFrontEnd
- 运行命令,从Docker Hub拉取镜像,使用镜像创建并运行容器
(推荐)
docker run -d -it --shm-size=2G -p 45999:45999 -p 46000:46000 -e TZ=Asia/Shanghai --name salt-converter hwinzniej/salt-converter:latest
或
docker run -d -it --shm-size=2G --net=host -e TZ=Asia/Shanghai --name salt-converter hwinzniej/salt-converter:latest
- 打开浏览器,访问
http://127.0.0.1:45999/
- 若
45999
或/与46000
端口被占用,可手动修改容器映射到宿主机的端口。如:修改为55999
与56000
:
docker run -d -it --shm-size=2G -p 55999:45999 -p 56000:46000 -e TZ=Asia/Shanghai --name salt-converter hwinzniej/salt-converter:latest
- 若您的机器内存小于2G,可能需要修改共享内存的大小。如:改为
1G
:
docker run -d -it --shm-size=1G -p 45999:45999 -p 46000:46000 -e TZ=Asia/Shanghai --name salt-converter hwinzniej/salt-converter:latest
- 若需要停止容器,可使用
docker stop salt-converter
- 若需要启动容器,可使用
docker start salt-converter
不包含您的任何隐私数据,仅包含以下信息:
- 当前会话的Session ID(随机生成)
- 开始转换的时间
- 结束转换的时间
- 匹配模式(总体/分离)
- 歌单来源
- 当前歌单包含的歌曲数量
- 匹配成功的歌曲数
- 自动匹配成功歌曲数量
- 使用的相似度阈值
- 括号去除是否启用
- 歌手匹配是否启用
- 专辑匹配是否启用
- 最终保存了多少首歌曲
例如:
歌单中歌曲的信息如下:
歌名:小幸运
歌手:田馥甄
专辑:我的少女时代 电影原声带
本地歌曲的信息如下:
歌名:小幸运
歌手:田馥甄
专辑:我的少女时代 电影原声大碟
将歌曲的[歌名] [歌手] [专辑]拼接成一个字符串,进行匹配,找到相似度最大的歌曲。表格中将显示整体匹配的相似度。
本匹配方法将使用:
小幸运田馥甄我的少女时代 电影原声带
与
小幸运田馥甄我的少女时代 电影原声大碟
进行匹配,相似度结果为:89.47%。
将歌曲的[歌名] [歌手] [专辑]分别进行匹配, 找到相似度最大的歌曲。 表格中将显示每个匹配项的相似度。
本匹配方法将分别使用:
小幸运
与小幸运
田馥甄
与田馥甄
我的少女时代 电影原声带
与我的少女时代 电影原声大碟
进行匹配,相似度结果分别为:
- 100%
- 100%
- 84.62%
大部分音乐平台对外语歌曲信息的命名方式一般为: 外文 (中文翻译)
或外文 (歌曲来源、歌曲版本等)
。如City Of Stars (From "La La Land" Soundtrack)
、CALL ME BABY (叫我) (Chinese Ver.)
、桜色舞うころ (樱花纷飞时)
。
启用此功能可以将字符串中的括号部分删去,只保留外文名,即:外文
。如:City Of Stars
、CALL ME BABY
、桜色舞うころ
,以此提高自动匹配成功率。
但需要注意,部分歌曲会在歌名后用括号注明歌曲版本:歌名 (歌曲版本)
。如曾经我也想过一了百了 (Live)
、TruE (Ed Ver.)
,在这种情况下,若启用了本功能,会将其变成:曾经我也想过一了百了
、TruE
,继而可能会出现匹配错误。
请您根据您的实际情况,决定是否使用本功能。
这两个平台的歌曲信息正确率较高,且较为完整、权威,可以有效提高自动匹配的成功率。
该平台歌曲信息不太符合规范,合唱歌曲的艺术家名使用、
分隔,且括号、斜杠的使用比较混乱,且非【我喜欢】歌单中歌曲的专辑信息不会保存到数据库中,导致匹配精确度下降,不太建议使用。
该平台歌曲信息不太符合规范,合唱歌曲的艺术家名使用&
分隔,且括号、斜杠的使用比较混乱,且有很多用户自行上传的歌曲,这些歌曲的标签信息大部分都不完整且不合规范,可能导致匹配精确度下降,不太建议使用。
程序认为两个字符串相同的相似度大小,详情:
若当前阈值为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
🥰🥰🥰