Skip to content

Latest commit

 

History

History
399 lines (298 loc) · 17.1 KB

README_CLI.md

File metadata and controls

399 lines (298 loc) · 17.1 KB

中文 / English

cover

椒盐歌单助手

命令行(CLI)版


⚠️请注意⚠️

  • 由于Windows终端的字符编码有问题,故CLI版无法在Windows上使用,只能在Linux、Mac OS等系统上使用。
    • 如果你的歌单中的歌曲信息全为ASCII字符,那也可以在Windows上使用CLI版。
  • 本项目相比前后端重构版,缺失了:
    • 友好的用户界面
    • 选择匹配模式(默认为分离
    • 自定义是否启用歌手匹配专辑匹配

需要使用的硬件与软件

硬件

  • 电脑 *1 (系统不限,安装了Java运行环境[JRE]即可)
  • Android设备:
    • 若使用的主力设备已获取Root权限,则只需要一台即可,无视后文中主力机与备用机的区分。
    • 若使用的主力设备未获取Root权限,则需要两台设备:
      • 一台获取了Root权限的Android设备,真机或虚拟机皆可,后文中称其为备用设备
      • 一台主力Android设备,后文中称其为主力设备

软件

本项目需要配合以下软件一起使用:

使用方法

Note

强烈推荐您将本README文件完整阅读后,再进行相关操作!

0. 准备工作

安装上述软件

  • 在线音乐平台客户端文件管理器,安装到有Root权限的设备(或虚拟机)上。
  • 音乐标签获取ID3标签椒盐音乐、文件管理器(可选),安装到主力设备上。

1. 获取在线音乐平台的歌单数据

(在备用设备上操作)

  1. 打开需要使用的在线音乐平台客户端APP。
  2. 登录账号。
  3. 依次点击进入自己的所有歌单(或者需要导出的歌单),并滑动到歌单页的最底部,加载当前歌单的所有歌曲。
  4. 重复上述步骤,直到要所有导出的歌单都加载过一次
  5. 主动关闭在线音乐平台客户端(在软件菜单中选择关闭[推荐],或直接在后台界面中将其划掉)。
  6. 打开文件管理器,授予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
  7. 将数据库文件发送到电脑上。

2. 获取本地音乐的标签(ID3 Tag)信息

Warning

本步骤会覆盖您本地音乐的ID3标签信息,请谨慎操作

若您之前已经自行匹配(或修改)过歌曲的ID3信息,可跳过本步骤。

若后续匹配结果不理想,再重新进行此步骤即可。

(在主力设备上操作)

  1. 将音乐文件保存在手机里(相信您已经完成这个步骤了)。
  2. 打开音乐标签APP。
    1. 点击右上角刷新按钮,令其扫描手机中的音乐文件。
    2. 点击左上角菜单按钮,点击弹出菜单底部的设置
    3. 点击组合标签源仅启用与歌单来源平台对应的数据源,点击确定(比如,歌单来源平台为网易云音乐,则只启用网易云标签源,其他标签源都应禁用,若歌单来源平台为酷狗音乐,则启用QQ与酷我标签源,且QQ的优先级高于酷我)。
    4. 返回到音乐标签主界面,点击右下角的编辑按钮,点击自动匹配标签
    5. 在弹出的对话框中,仅勾选标题、艺术家、专辑,并同时启用其右侧的覆盖选项,按需调整“网络搜索线程数”,点击确定。
    6. 等待音乐标签批量匹配完成。
  3. 打开获取ID3标签APP。
    1. 点击下方的选择目录按钮,根据提示授予所需权限。
    2. 选择音乐存放的目录(具体选择方式请查看这里),点击屏幕底部的使用此文件夹,在弹出的对话框中点击允许
    3. 等待软件扫描并导出手机中音乐的ID3标签信息。
    4. 前往软件的导出目录(手机存储目录中的Download)查看导出的ID3标签信息文件本地音乐导出.txt
    5. 将导出的ID3标签信息文件发送到电脑上。

3. 进行歌单转换操作

(在电脑上操作)

  1. 运行本项目(怎么运行?以下方式三选一即可)。
    • 使用Java IDE(如IntelliJ IDEA、Eclipse等)从源码运行(需要电脑已配置JDK [Java开发工具包])。
    • 使用Maven从源码编译、构建,并运行JAR包。
    • 下载并运行JAR包(需要电脑已安装JRE [Java运行环境])。
  2. 新建SQLite目录,并将步骤1.6中获取到的数据库文件复制进去 (可选,注意不要更改数据库的文件名)
    • 若从源码运行,则在项目根目录下新建SQLite目录。
    • 若从JAR包或EXE文件运行,则在JAR包或EXE文件同级目录下新建SQLite目录。
  3. 根据本项目的提示,进行文字输入或选择操作。
  4. 等待您选择的所有歌单转换完成。
  5. 使用本地或在线的Markdown编辑器,查看转换过程中在项目根目录生成的日志文件ConvertLog.md,查看转换过程是否出现错误或意外。(可选)
  6. 获取转换结果文件(文件名为歌单的名称),将其发送到主力Android设备上。
    • 若从源码运行,则在项目根目录下的Result目录中。
    • 若从JAR包或EXE文件运行,则在JAR包或EXE文件同级目录下的Result目录中。

4. 将歌单导入椒盐音乐

(在主力设备上操作)

  1. 打开椒盐音乐APP。
  2. 右滑或点击右上角菜单按钮,进入菜单,点击歌单
  3. 点击导入歌单 (.txt)
  4. 逐个选择转换结果文件,将其导入到椒盐音乐中。
  5. 在椒盐音乐中查看导入的歌单。

其他事项

项目的使用与运行

1. 使用Java IDE(如IntelliJ IDEA、Eclipse等)从源码运行

  1. 克隆或下载本项目的源码。
git clone [email protected]:Winnie0408/SaltPlayerConverter.git
  1. 使用Java IDE打开本并信任项目。
  2. 打开项目根目录下的pom.xml文件,使用IDE自带的Maven工具下载项目所需的依赖。(推荐配置Maven源为阿里云或其他国内镜像,以加快下载速度)。
  3. 运行项目中的src/main/java/Main.java文件。

2. 使用Maven从源码编译、并运行JAR包

  1. 克隆或下载本项目的源码。
git clone [email protected]:Winnie0408/SaltPlayerConverter.git
  1. 进入项目目录,使用Maven编译项目。(推荐配置Maven源为阿里云或其他国内镜像,以加快下载速度)。
mvn clean package
  1. 等待编译完成,控制台输出BUILD SUCCESS,进入项目中的target目录,运行以.jar结尾的文件。
java -jar [FileName].jar

3. 下载并运行JAR包

  1. 在项目的Release页面,找到最新版本,下载以.jar结尾的文件。
  2. 运行刚刚下载的JAR包。
java -jar [FileName].jar

配置Maven镜像源

Windows

  • 使用自行安装的Maven
    1. 在Maven的安装目录中,找到并打开conf/settings.xml文件(没有的话就自行创建一个)。
    2. 在该文件的<mirrors></mirrors>节点中添加子节点。
  • 使用IDE自带的Maven
    1. 进入C:\Users\[Username]\.m2目录,找到并打开settings.xml文件(没有的话就自行创建一个)。
    2. 在该文件的<mirrors></mirrors>节点中添加子节点。

Linux

  1. 进入/etc/maven/conf目录,找到并打开settings.xml文件。
  2. 在该文件的<mirrors></mirrors>节点中添加子节点。

可用子节点(添加一个或多个皆可)

  • 阿里云
<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>
  • 网易
<mirror>
    <id>netease</id>
    <url>http://maven.netease.com/repository/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
  • 中国科学技术大学USTC
<mirror>
    <id>ustc</id>
    <url>http://mirrors.ustc.edu.cn/maven/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

完整配置文件示例

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
        <!-- 阿里云仓库 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>


        <!-- 中央仓库1 -->
        <mirror>
            <id>repo1</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>https://repo1.maven.org/maven2/</url>
        </mirror>


        <!-- 中央仓库2 -->
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>https://repo2.maven.org/maven2/</url>
        </mirror>

        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>https://search.maven.org/</url>
        </mirror>
    </mirrors>

</settings>

配置文件

本项目在运行时会读取并写入项目根目录下的config.properties文件,当该文件不存在时会自动创建。

配置文件的格式

配置名=配置值

(如:version=0.99enableStatistic=true

可使用的配置项

  • uuid: 为这台电脑生成的唯一ID。将程序第一次运行,且enableStatistic值不为false时生成。 强烈不建议您手动修改本项的值。
  • enableStatistic: 是否启用统计数据发送功能。
    • true: 启用统计数据发送功能,程序会在每转换完一个歌单后,向统计分析服务器发送本次转换的相关统计信息,该信息不包含您的任何敏感信息,只会发送部分程序运行效率相关的数据(包含哪些数据?)
    • false: 禁用统计数据发送功能,程序不会向统计分析服务器发送任何数据,不会连接互联网;若第一次运行程序时就将其值设置为false,则不会生成uuid
    • 配置文件中不包含该项 或 值为其他文本: 同true
  • .*DatabasePath: 用于保存您上一次输入的数据库文件的绝对路径。若您将数据库文件存放在项目的SQLite目录下,并在程序运行时直接回车,则该项不会生成。
  • musicOutputPath: 用于保存您上一次输入的本地音乐导出.txt文件的绝对路径。
  • enableParenthesesRemoval: 是否启用括号内容去除功能。启用此功能可以大幅提升外语歌曲的识别正确率(为什么?)
    • true: 启用括号内容去除功能。
    • false: 禁用括号内容去除功能。
    • 配置文件中不包含该项 或 值为其他文本: 忽略本项的值,并在运行时询问用户是否启用括号内容去除功能。

发送的统计数据

  • 当前电脑的唯一ID
  • 开始转换的时间
  • 结束转换的时间
  • 歌单来源
  • 当前歌单包含的歌曲数量
  • 匹配成功的歌曲数
  • 自动匹配成功歌曲数量
  • 使用的相似度阈值
  • 括号去除是否启用
  • 专辑匹配是否启用
  • 最终保存了多少首歌曲

括号内容去除

大部分音乐平台对外语歌曲信息的命名方式一般为: 外文 (中文翻译)外文 (歌曲来源、歌曲版本等)。如City Of Stars (From "La La Land" Soundtrack)CALL ME BABY (叫我) (Chinese Ver.)桜色舞うころ (樱花纷飞时)

启用此功能可以将字符串中的括号部分删去,只保留外文名,即:外文。如:City Of StarsCALL ME BABY桜色舞うころ,以此提高自动匹配成功率。

但需要注意,部分歌曲会在歌名后用括号注明歌曲版本:歌名 (歌曲版本)。如曾经我也想过一了百了 (Live)TruE (Ed Ver.),在这种情况下,若启用了本功能,会将其变成:曾经我也想过一了百了TruE,继而可能会出现匹配错误

请您根据您的实际情况,决定是否使用本功能。

音乐平台的选择

网易云音乐 与/或 QQ音乐

这两个平台的歌曲信息正确率较高,且较为完整、权威,可以有效提高自动匹配的成功率。

酷狗音乐

该平台歌曲信息不太符合规范,合唱歌曲的艺术家名使用分隔,且括号、斜杠的使用比较混乱,且非【我喜欢】歌单中歌曲的专辑信息不会保存到数据库中,导致匹配精确度下降,不太建议使用。

酷我音乐

该平台歌曲信息不太符合规范,合唱歌曲的艺术家名使用&分隔,且括号、斜杠的使用比较混乱,且有很多用户自行上传的歌曲,这些歌曲的ID3信息大部分都不完整且不合规范,可能导致匹配精确度下降,不太建议使用。

相似度阈值

程序认为两个字符串相同的相似度大小,详情:

若当前阈值为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

赞助与支持

🥰🥰🥰

如果这个项目对您有所帮助,您可以给我一颗免费的⭐,或者请我喝杯咖啡!
非常感谢您的支持!
⬇️⬇️⬇️
Sponsorship.jpg