163MusicLyrics:网易云与QQ音乐批量提取带时间轴歌词的完整指南
【免费下载链接】163MusicLyrics云音乐歌词获取处理工具【网易云、QQ音乐】项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics
本地 MP3 想配上 LRC(带时间戳的歌词格式)文件?逐首复制粘贴太耗时。163MusicLyrics 是一款免费工具,从网易云音乐和 QQ 音乐提取歌词,支持单曲、专辑、歌单与目录批量扫描,直接产出 LRC 或 SRT 文件。
它是什么:.NET 9 + Avalonia 的跨平台歌词提取工具
163MusicLyrics 用 C# 编写,目标框架 .NET 9.0,界面基于 Avalonia UI 11.3.0(让同一套代码在 Windows、macOS、Linux 上运行的 UI 框架),按 MVVM 模式组织,视图模型放在cross-platform/MusicLyricApp/ViewModels/,与界面绑定借助 CommunityToolkit.Mvvm 8.2.1 完成。不想编译的话,Release 页提供五个平台目标的预编译包(win-x86、win-x64、linux-x64、osx-x64、osx-arm64),下载即用。仓库里另有一个archive-winform/目录,是早期 WinForms 版本,只作演进参考。
如何编译运行:两条命令出第一个结果
装好 .NET 9.0 SDK 后,克隆仓库并进入cross-platform/目录:
git clone https://gitcode.com/GitHub_Trending/16/163MusicLyrics cd 163MusicLyrics/cross-platform && dotnet build MusicLyricApp.sln && dotnet run --project MusicLyricApp启动后在搜索框贴一个网易云歌曲链接、点搜索,右侧立刻能看到歌词预览——这一步就能判断它是否合用。🎯
按你的使用场景走一遍核心功能
整体流程只有三步:搜到歌 → 按需求加工(翻译、排版、格式转换)→ 单曲或批量保存。下面按具体场景说明入口在哪。
手里有一首 MP3,想找它的官方歌词
精确查询入口支持四种输入:整段分享链接(自动解析出歌曲 ID)、单个 ID、英文逗号分隔的多个 ID,以及专辑 ID 或歌单 ID——后两种会先展开成歌曲列表再逐首取词。解析逻辑集中在 SearchService:输入先判断是不是一个存在的目录,是则走目录扫描,否则按逗号切分成 ID 列表。结果以表格列出歌名、歌手、专辑、时长,点哪首右侧就显示哪首的预览。
只记得一句歌词,连完整歌名都没有
切到关键词搜索模式,输入任意片段即可,命中结果会放进一个选择窗口,你从里面挑对的那首。再打开聚合模糊搜索,同一次输入会同时查网易云和 QQ 音乐两边,哪边有歌就显示哪边——对只在单一平台上架的歌很有用。
外语歌想要中英对照
输出端继续可选:格式选 LRC(给播放器)或 SRT(直接进字幕软件);在设置页填入彩云小译或百度翻译的密钥,译文可与原文按交错、合并、分文件三种排版组合输出;中文歌可追加拼音行;QQ 音乐的逐字歌词(KTV 那种逐字点亮格式)打开后预览里每个字都带独立时间戳。
为什么同一批歌第二次跑会快很多
核心原因是两层缓存。内存层在 MusicCacheableApi 基类:每个公开方法都先查全局缓存,未命中才调子类的真正请求方法,成功后写回,模板长这样——
return GlobalCache.Process(Source(), CacheType.LYRIC_VO, GlobalUtils.GetSongKey(displayId, isVerbatim), () => GetLyricVo0(id, displayId, isVerbatim));缓存 key 按"平台^ID"拼接,网易云和 QQ 音乐的同一首歌互不串扰。磁盘层由 LocalSongCacheService 负责:每首歌的信息和歌词序列化成网易云_{songId}.json落盘,默认上限 128 MB,超出后从最旧文件开始删。批量查询先查这层,命中不再联网——一千首歌的歌单第二次跑,基本就是本地读文件的速度。缓存是纯 JSON,用文本编辑器就能排查某首歌到底取了没有。
译文常遇到的"时间戳对不上号"问题,LyricUtils 的处理分三步:先按毫秒精确匹配;失配的行在"匹配精度偏差"窗口内找最近的未匹配原文行,把译文时间戳修正过去;仍缺失的按配置的规则留空或回填原文。LRC 转 SRT 也有个细节:LRC 每行只有开始时间,SRT 却要"开始→结束"一对,SrtUtils.LrcToSrt用下一行的开始时间推导当前行结束时间,末行延伸到歌曲总时长。所以拿到的双语 LRC 不会"译文跑位",SRT 丢进字幕软件即可用。
进阶:目录批量、统一保存与内网代理
文件已按歌曲 ID 命名时,直接把目录路径贴进搜索框:工具遍历目录,把文件名去掉扩展名后当候选 ID 校验,合法的进查询队列,不合法的自动跳过。每首歌的状态单独可查,无歌词的、网络报错的各计数,末尾一行"N 成功 N 失败"收尾,失败清单直接就是重试清单。
批量保存窗口里勾选目标歌曲,统一指定格式(LRC/SRT)、排版和文件编码一次落盘,结果按成功/跳过分开列出。
网络请求统一由 NetworkClientFactory 创建,默认 30 秒超时,代理支持直连、带认证的 HTTP 代理、跟随系统三种模式,内网环境在设置里配一次即全局生效。发版侧,publish.sh 一条命令打出全部五个目标,每个都是自包含单文件,Windows 打 zip、其余打 tar.gz,文件名自动带版本号。
适合谁用,以及源码从哪看
本地有一批来自网易云或 QQ 音乐的歌曲,想批量配上 LRC/SRT、想要双语歌词、或给视频配字幕的人,基本就是为目标人群。想二次开发的话,平台 API 与搜索、缓存服务在Core/Service/,歌词解析与 LRC 转 SRT 在Core/Utils/,MVVM 视图模型在ViewModels/,测试套件在MusicLyricApp.Tests/,从这里入手改起来最顺。
【免费下载链接】163MusicLyrics云音乐歌词获取处理工具【网易云、QQ音乐】项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考