# 千千静听歌词服务器 **Repository Path**: StarsSky/ttplayerLrcSearch ## Basic Information - **Project Name**: 千千静听歌词服务器 - **Description**: 千千静听歌词服务器 本地运行,数据来自qq音乐和网易云音乐 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2025-02-13 - **Last Updated**: 2025-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 千千静听歌词服务器 #### 介绍 千千静听歌词服务器 本地运行,数据来自qq音乐和网易云音乐 #### 软件架构 软件架构说明 Springboot #### 安装教程 1. 下载源代码 2. 运行 mvn package 打包成jar文件 3. 运行jar文件 4. 修改千千静听的 **AddIn/ttp_lrcsh.dll** 文件,使其中一个服务器地址指向 **Localhost:8098** 5. 启动千千静听,选择你修改过的哪个服务器即可搜索歌词 #### 使用说明 1. 默认每个接口查询50条结果(如果支持的话,目前两个接口都支持),如果需要修改,修改application.yml文件里面的pageNum即可,目前不支持单个接口修改 2. 网易云的接口在未登录的情况下只能返回20条结果,如果需要更多的返回结果,需要登录自己的网易云账号,提起cookie里面的MUSIC_U放到application.yml文件里面 3. 关于有效性,该程序实现了从本地直接调用音乐平台的接口来给千千静听续命,不依托第三方服务器,只相当代替你去搜索歌词,理论上只要你还能访问qq音乐、网易云这些网站就能一直续下去 #### 二次开发帮助 1. 设计上支持更多的搜索引擎,只需要实现MusicLrcSearch这个接口就会自动调用,目前不支持搜索引擎排序 2. 目前为了解决千千静听查询歌曲返回数据的歌词id不支持英文,使用了一个数据类 BuffData 来转义、存放临时的搜索结果,每记录到一首新歌曲就会占用一点内存空间,如果需要修改成在线服务,请自行设计解决方案。(重启程序会清空BuffData,作为单机运行影响不大) 3. 接口支持双语lrc的话,可以选择继承LRCDispose这个类,里面有合并双语歌词的方法doTrans - 例如:原文lrc ```lrc [00:21.74]長い長い2秒間のため\n[00:27.40]あたしは口を閉じた\n[00:33.09]少し経って波音が響く\n[00:38.85]かき消されない様に勇気出した\n[00:44.71]-\n[01:07.62]うだる暑さと詰まらない声\n[01:13.13]窓から見える青さ\n[01:18.79]まどろんでは頑張ってるフリで\n[01:24.60]何気なくきみを見る\n[01:30.40]誰もが欲しがる\n[01:33.17]愛と恋の答え\n[01:36.05]何度考えても解らない\n[01:40.85]きみと全力疾走手をとって\n[01:47.26]ふたり逃げ出した帰り道\n[01:52.62]胸が鳴って顔が熱くて\n[01:58.57]どうかどうか手を離さないで\n[02:10.27]-\n[02:52.99]苦しくなって\n[02:58.64]くすぐったくて\n[03:04.35]でも優しくて\n[03:10.05]出てくる言葉がいっぱいで\n[03:15.81]ため息が出ちゃう\n[03:21.31]息を切らして立ち止まる\n[03:27.23]青に滲んだ赤い絵の具\n[03:32.53]きみの満点の笑顔向けて\n[03:38.69]背伸びした\n[03:40.97]好きよ\n[03:42.08]-\n[03:42.64]きみと全力疾走手をとって\n[03:50.01]ふたり逃げ出して遠くまで\n[03:55.37]答えがたとえ違ってても\n[04:01.54]どうかどうか手を離さないで\n[04:12.59]そう\n[04:15.78]まだ\n[04:17.30]走っていく\n[04:19.67]きみと\n[04:21.18]-\n ``` - 例如:译文lrc ```lrc [by:Yukkuri_b]\n[00:21.74]为这长长的二秒\n[00:27.40]我紧闭双唇\n[00:33.09]过了一会响起浪声\n[00:38.85]为不被抹消 鼓起了勇气\n[00:44.71]♪\n[01:07.62]闷热的夏日和千篇一律的声音\n[01:13.13]透窗映入满眼的青\n[01:18.79]打盹装作有在努力\n[01:24.60]看着若无其事的你\n[01:30.40]无论谁都渴求\n[01:33.17]爱与恋的答案\n[01:36.05]考虑多少次都得不出来\n[01:40.85]与你牵手全力疾跑\n[01:47.26]一起逃出的归路\n[01:52.62]心跳加速 脸颊发热\n[01:58.57]请千万千万 别把手放开\n[02:10.27]♪\n[02:52.99]有些难受起来\n[02:58.64]心痒难耐\n[03:04.35]却如此温柔\n[03:10.05]积了那么多想要倾诉\n[03:15.81]叹了出来\n[03:21.31]气息慌乱 停下脚步\n[03:27.23]沁了青的红水彩\n[03:32.53]向着你满分的笑颜\n[03:38.69]踮起脚\n[03:40.97]喜欢喔\n[03:42.08]♯\n[03:42.64]与你牵手全力疾走\n[03:50.01]一起逃到世界尽头\n[03:55.37]就算得出了错误答案\n[04:01.54]也千万千万 别把手放开\n[04:12.59]对\n[04:15.78]再次\n[04:17.30]放开脚步\n[04:19.67]和你一起\n[04:21.18]♪\n ``` - 例如:输出lrc ```lrc [00:21.74]長い長い2秒間のため 为这长长的二秒 [00:27.40]あたしは口を閉じた 我紧闭双唇 [00:33.09]少し経って波音が響く 过了一会响起浪声 [00:38.85]かき消されない様に勇気出した 为不被抹消 鼓起了勇气 [00:44.71]- ♪ [01:07.62]うだる暑さと詰まらない声 闷热的夏日和千篇一律的声音 [01:13.13]窓から見える青さ 透窗映入满眼的青 [01:18.79]まどろんでは頑張ってるフリで 打盹装作有在努力 [01:24.60]何気なくきみを見る 看着若无其事的你 [01:30.40]誰もが欲しがる 无论谁都渴求 [01:33.17]愛と恋の答え 爱与恋的答案 [01:36.05]何度考えても解らない 考虑多少次都得不出来 [01:40.85]きみと全力疾走手をとって 与你牵手全力疾跑 [01:47.26]ふたり逃げ出した帰り道 一起逃出的归路 [01:52.62]胸が鳴って顔が熱くて 心跳加速 脸颊发热 [01:58.57]どうかどうか手を離さないで 请千万千万 别把手放开 [02:10.27]- ♪ [02:52.99]苦しくなって 有些难受起来 [02:58.64]くすぐったくて 心痒难耐 [03:04.35]でも優しくて 却如此温柔 [03:10.05]出てくる言葉がいっぱいで 积了那么多想要倾诉 [03:15.81]ため息が出ちゃう 叹了出来 [03:21.31]息を切らして立ち止まる 气息慌乱 停下脚步 [03:27.23]青に滲んだ赤い絵の具 沁了青的红水彩 [03:32.53]きみの満点の笑顔向けて 向着你满分的笑颜 [03:38.69]背伸びした 踮起脚 [03:40.97]好きよ 喜欢喔 [03:42.08]- ♯ [03:42.64]きみと全力疾走手をとって 与你牵手全力疾走 [03:50.01]ふたり逃げ出して遠くまで 一起逃到世界尽头 [03:55.37]答えがたとえ違ってても 就算得出了错误答案 [04:01.54]どうかどうか手を離さないで 也千万千万 别把手放开 [04:12.59]そう 对 [04:15.78]まだ 再次 [04:17.30]走っていく 放开脚步 [04:19.67]きみと 和你一起 [04:21.18]- ♪ [by:Yukkuri_b] ``` #### 关于千千静听原本的请求和响应 1.千千静听在搜索的时候,会采用GET请求访问 ttp_lrcsh.dll 里面存放的地址,发送参数为 ```JSON {"ci":"...电脑特征码...","sh?Artist":"...歌手...","Title":"...歌曲名...","Flags":"...服务器序号(1/2)..."} ``` 其中,歌手和歌曲名会经过UNICODE编码,需要自己解码。响应数据格式为 ```XML ``` 3.千千静听在下载歌词的时候,会采用GET请求访问 ttp_lrcsh.dll 里面存放的地址(与上一个地址相同,发送参数不同),发送参数为 ```JSON {"dl?Id":"...歌曲id...","ci":"...电脑特征码...","Code":"...歌曲特征码..."} ``` 下载接口目前本项目只使用了id字段。响应数据直接返回lrc歌词文本即可