news 2026/11/4 2:12:41

163MusicLyrics 终极指南:网易云、QQ音乐歌词批量提取,LRC/SRT 一次配齐

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
163MusicLyrics 终极指南:网易云、QQ音乐歌词批量提取,LRC/SRT 一次配齐

163MusicLyrics 终极指南:网易云、QQ音乐歌词批量提取,LRC/SRT 一次配齐

【免费下载链接】163MusicLyrics云音乐歌词获取处理工具【网易云、QQ音乐】项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics

本地几百首 MP3 缺歌词?一首首去网页上复制再手改时间戳,一天都忙不完。163MusicLyrics 是一款覆盖网易云与 QQ 音乐的免费歌词提取工具,跑在 Windows、macOS、Linux 三大平台:输入歌曲 ID、专辑链接或关键词,直接产出带时间轴的 LRC / SRT 文件,单曲、专辑、整库目录全场景支持。

极速部署与初见体验 ⚡

不想折腾环境的话,项目 Release 里直接提供了五个平台目标的打包产物(win-x86、win-x64、linux-x64、osx-x64、osx-arm64),全部是自包含单文件,下载解压即用,机器上连 .NET 运行时都不用装。

自己动手编译也只要三条命令,前提是装好 .NET 9.0 SDK:

git clone https://gitcode.com/GitHub_Trending/16/163MusicLyrics cd 163MusicLyrics/cross-platform dotnet build MusicLyricApp.sln && dotnet run --project MusicLyricApp

技术栈一句话带过:C# 编写,目标框架 net9.0,界面基于 Avalonia 11.3.0,MVVM 架构配 CommunityToolkit.Mvvm 做绑定——所以 Windows 上写好的同一套 UI 代码,在 macOS 和 Linux 上原样可跑,不需要维护多套界面。

启动后主界面就是一个搜索工作台:输入区在上,结果表格在下,来源、歌手、专辑、时长逐列摆开,选中哪首,右侧立刻出歌词预览。把一条网易云分享链接粘进搜索框点一下,就能验证它到底好不好用。🎯

核心工作流:从单首到批量 🎯

如何精准定位?ID、链接、专辑通吃

最常见的场景是手头有 MP3,想补一份官方歌词。把播放器里的分享链接整段粘进搜索框,工具会自动从中解析出歌曲 ID;也可以直接输 ID,用英文逗号分隔一次贴多个。

查询对象不止单曲——专辑 ID 和歌单 ID 同样受理,工具先把专辑/歌单展开成歌曲列表,再逐首取歌词。这条解析逻辑集中在 SearchService:输入先判断是不是一个已存在的目录,是则走目录扫描分支,否则按逗号切分成 ID 列表,再逐条识别它到底是单曲、专辑还是歌单。单个 ID、一串 ID、整个文件夹,最终汇入同一条代码路径。

只记得关键词怎么办?模糊搜索加双平台聚合

另一类场景是"只记得某歌手唱过一首日文歌,完整歌名都记不清"。输入关键词,工具调平台搜索接口,把命中结果放进一个选择窗口,你挑出对的那首即可。

打开聚合搜索后,同一次输入会同时查网易云和 QQ 音乐两边,哪边有结果就显示哪边——对只在单一平台上架的歌尤其有用。

选中歌曲后,输出可以继续做文章:

  • LRC 直接进播放器,SRT 直接进字幕软件;
  • 外语歌可在设置里填彩云小译或百度翻译的密钥,译文与原文按交错、合并、分文件三种排版任选组合输出;
  • 中文歌可追加拼音行;
  • QQ 音乐的逐字歌词(KTV 式逐词点亮)也能取,打开逐字模式后,预览里每个字都有独立时间戳。

如何批量扫描文件夹?整库歌词一次处理完

📂 如果你的文件已经按歌曲 ID 命名(批量整理音乐库的人常这么干),直接把目录路径贴进搜索框:工具遍历目录,把每个文件名去掉扩展名后当作候选 ID 校验,合法的进查询队列,不合法的自动跳过,无需提前写任何脚本。

结果进入批量管理界面,每首歌的状态单独可查:无歌词的、网络报错的各有计数,末尾一行"累计 N 成功 N 失败"收尾——失败清单直接就是重试清单。

批量保存管理窗口里勾选目标歌曲,统一指定输出格式(LRC/SRT)、排版方式和文件编码,一次保存整批,保存结果按成功/跳过分开列出。

网络慢或在内网?代理模式一次配好

所有网络请求统一经由 NetworkClientFactory 创建,默认 30 秒超时;代理支持直连、带认证的 HTTP 代理、跟随系统代理三种模式,内网环境下在设置里配一次即可全局生效。发版侧,publish.sh 一条命令跑完五个平台目标,Windows 打 zip、其余打 tar.gz,文件名自动带版本号。

为什么它快且准(底层逻辑通俗化)⚡

重复查询为什么秒回?两层缓存在挡子弹

批量跑一两千首歌,最怕的是同一首被反复打接口。这个项目用两层缓存解决:

第一层在内存。MusicCacheableApi 基类把所有公开方法写成同一个模板:先查GlobalCache,命中直接返回;没命中才调子类真正发请求的Xxx0方法,成功后写回缓存。核心就一行套路——

GlobalCache.Process(平台, 缓存类型, 歌曲Key, () => 真正发请求的方法)

缓存 key 用"平台^ID"拼接,网易云和 QQ 音乐的同一首歌互不串扰。

第二层在磁盘。LocalSongCacheService 把每首歌的信息和歌词序列化成 JSON,按网易云_{songId}.json一首歌一个文件落盘,默认上限 128 MB,超出后从最旧的写入开始删。批量查询先查这层,命中就不再联网——所以一千首歌的歌单第二次跑,几乎全程是本地读文件的速度。而且缓存就是纯 JSON,用文本编辑器直接能看,排查"这首歌的歌词到底取了没有"不用写任何辅助脚本。

双语歌词时间戳对不齐?对齐逻辑分三步

拿过双语歌词的人都踩过这个坑:平台给的原文和译文时间戳经常差几十毫秒,偶尔还整行缺失。LyricUtils 里的对齐逻辑分三步:先按毫秒精确匹配;对不上的,在前后"匹配精度偏差"窗口内找最近的未匹配原文行,把译文时间戳修正过去;仍缺失的行,按配置的缺失规则留空或回填原文内容。

LRC 转 SRT 还有个隐藏细节:LRC 每行只有开始时间,SRT 却要"开始 → 结束"一对。SrtUtils.LrcToSrt用下一行的开始时间推导当前行的结束时间,末行延伸到歌曲总时长,乱序行和同一毫秒的多行都有专门分支处理。所以最终拿到的双语 LRC 不会"译文跑位",SRT 丢进字幕软件就是可用状态。

开发者视角与项目布局 🔧

对想读源码或做二次扩展的读者,cross-platform/MusicLyricApp/的核心结构非常克制:

cross-platform/MusicLyricApp/ ├── Core/Service/ # 平台API(网易云/QQ)、翻译、存储、搜索、更新服务 ├── Core/Utils/ # 歌词解析、LRC转SRT、渲染、拼音等纯函数工具 ├── Models/ # 数据模型、常量与配置 ├── ViewModels/ # MVVM 视图模型,CommunityToolkit.Mvvm 驱动绑定 └── Views/ # Avalonia XAML 视图与窗口

几个值得留意的点:

  • Core/Service/Music/下每个平台一对类:XxxApi是带缓存的对外门面,XxxNativeApi才真正拼 HTTP 请求,加新平台只需实现这对抽象;
  • ViewModels/按功能窗口拆分(搜索、批量、模糊、设置、格式转换),消息对象放在Messages/子目录里做窗口间通信;
  • 仓库根目录的archive-winform/是早期 WinForms 版本,留作演进对照,日常开发和运行只看cross-platform/这一侧;
  • 单测在cross-platform/MusicLyricApp.Tests/,重点覆盖歌词时间戳、纯文本歌词解析等纯逻辑模块。

【免费下载链接】163MusicLyrics云音乐歌词获取处理工具【网易云、QQ音乐】项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 2:12:26

用 REA 解剖 iOS IPA:4 步从哈希清单走到 dylib 加载追踪

用 REA 解剖 iOS IPA:4 步从哈希清单走到 dylib 加载追踪 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea 输入是一份 iOS 应用的 .ipa …

作者头像 李华
网站建设 2026/11/4 2:10:39

Mac 当主机,Linux 当服务器(23)grep 实战——在 10 万行日志里找一根针

摘要:grep 是日志分析的第一把刀,但很多人只会 grep 关键词,结果一屏刷几千行、想统计又数不出来。这篇把 grep 讲透:-c 统计、-n 定位、-v 排除、-i 忽略大小写、-E 扩展正则、-A/-B/-C 看上下文、-f 从文件读模式;再给三条实战管道(404 统计、IP 过滤、/posts/ 访问量)…

作者头像 李华
网站建设 2026/11/4 2:10:38

【AI智能体】Langchain 自定义中间件使用实战操作详解

目录 一、前言 二、Langchain 自定义中间件介绍 2.1 为什么需要自定义中间件 2.2 自定义中间件优势 2.3 hook函数(钩子函数) 介绍 2.3.1 钩子函数特点 2.3.2 LangChain的hook函数分类 三、自定义中间件使用 3.1 Node-style hooks 函数用法 3.1.1 基于装饰器的实现 3.…

作者头像 李华
网站建设 2026/11/4 2:10:37

Folia 安装教程:零门槛到歌词动画播放器跑起来

Folia 安装教程:零门槛到歌词动画播放器跑起来 【免费下载链接】folia-major 专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器 项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major Folia 是一款把歌词渲染成全屏动画的…

作者头像 李华
网站建设 2026/11/4 2:10:28

【零基础学AI】第 23 章课后练习与答案

第 23 章练习与答案 先完成题目,再看答案。代码从章节目录运行,使用已安装本章依赖的 Python。 🌈 关于《AI 零基础 36 讲》课后训练 📚 与正式讲解配套学习 本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正…

作者头像 李华