Lyricify 家族中的 .NET 歌词工具库,为 Lyricify 歌词相关功能竭力打造,提供歌词解析、生成、搜索、解密和优化处理。
| 格式 | 解析 | 生成 | 说明 |
|---|---|---|---|
| Lyricify Syllable | ✓ | ✓ | Lyricify 逐字歌词 |
| Lyricify Lines | ✓ | ✓ | Lyricify 逐行歌词 |
| LRC | ✓ | ✓ | 标准逐行歌词 |
| QRC | ✓ | ✓ | QQ 音乐逐字歌词 |
| KRC | ✓ | ✓ | 酷狗逐字歌词 |
| YRC | ✓ | ✓ | 网易云音乐逐字歌词 |
| TTML | ✓ | — | 逐行、逐字;支持 Apple Music 扩展 |
| Spotify (JSON) | ✓ | — | 未同步、逐行或逐字歌词 |
| Musixmatch (JSON) | ✓ | — | 未同步、逐行或逐字歌词 |
ParseHelper 和 GenerateHelper 分别提供统一的解析、生成入口;TypeHelper 用于自动识别格式、转换类型以及获取格式的显示名称。
格式识别还支持 QRC (XML)、网易云音乐完整 YRC (JSON) 和 Apple Music (JSON) 等原始封装类型。
SearchHelper 支持下表中的全部来源,可根据标题、艺人、专辑和时长查找最匹配的歌曲。
| 来源 | 歌词能力 | 其他常用接口 | 凭据要求 |
|---|---|---|---|
| QQ 音乐 | 获取歌词及翻译 | 歌曲、专辑、歌单和播放链接 | 无需配置 |
| 网易云音乐 | 获取 LRC、YRC 等歌词数据 | 歌曲、专辑和歌单 | 无需配置 |
| 酷狗音乐 | 搜索歌词并获取 KRC | 歌曲搜索 | 无需配置 |
| 汽水音乐 | 从曲目详情获取歌词信息 | 曲目详情 | 无需配置 |
| Apple Music | 获取 TTML 歌词 | 曲目搜索 | 获取歌词必须提供 Media User Token;Access Token 自动获取 |
| Musixmatch | 获取逐字、逐行或未同步歌词及翻译 | 曲目匹配 | User Token 自动获取,也可手动设置 |
| Spotify | 获取未同步、逐行或逐字歌词 | 曲目搜索 | 必须提供 sp_dc Cookie |
| LRCLIB | 获取同步或纯文本歌词 | 按曲目信息搜索、按 ID 查询 | 无需配置 |
SearchHelperProviderHelper在线接口依赖对应服务的可用性,返回结果也可能受到账号权限和地区限制。
在解决方案目录中添加项目引用:
dotnet add path/to/YourProject.csproj reference Lyricify.Lyrics.Helper/Lyricify.Lyrics.Helper.csproj
using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;
var rawLyrics = File.ReadAllText("lyrics.txt");
var lyricsData = ParseHelper.ParseLyrics(rawLyrics); // 自动识别格式
if (lyricsData is not null)
{
var lrc = GenerateHelper.GenerateString(lyricsData, LyricsTypes.Lrc);
Console.WriteLine(lrc);
}
已知原始格式时,也可以显式传入类型:
var lyricsData = ParseHelper.ParseLyrics(rawLyrics, LyricsRawTypes.Qrc);
using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;
using Lyricify.Lyrics.Searchers.Helpers;
using SearchSource = Lyricify.Lyrics.Searchers.Searchers;
var track = new TrackMultiArtistMetadata
{
Title = "RUNAWAY",
Artists = new() { "OneRepublic" },
Album = "RUNAWAY",
AlbumArtists = new() { "OneRepublic" },
DurationMs = 143264,
};
var match = await SearchHelper.Search(
track,
SearchSource.LRCLIB,
CompareHelper.MatchType.Medium);
var lyrics = await ProviderHelper.LRCLIBApi.Get(
track.Title,
track.Artist!,
track.Album,
track.DurationMs / 1000d);
Console.WriteLine(lyrics?.SyncedLyrics);
其他在线来源可通过 ProviderHelper 中相应的 QQMusicApi、NeteaseApi、KugouApi、SodaMusicApi、AppleMusicApi、MusixmatchApi 和 SpotifyApi 访问。
Musixmatch 默认使用 Android API,也可以在创建实例时通过配置委托选择桌面 API,或注入自己的请求发送函数:
var mobileApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api();
var desktopApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api(
options => options.UseDesktop());
var searcher = new MusixmatchSearcher(desktopApi);
Lyricify.Lyrics.Helper/
├─ Decrypter/ # QRC、KRC 解密
├─ Generators/ # 歌词生成
├─ Helpers/ # 统一入口、歌词优化与通用帮助类
├─ Models/ # 歌词、时间轴和曲目元数据模型
├─ Parsers/ # 歌词解析
├─ Providers/Web/ # 在线服务接口与响应模型
└─ Searchers/ # 歌曲搜索与匹配
Lyricify.Lyrics.Demo/
├─ Program.cs # 使用示例
└─ RawLyrics/ # 示例歌词
Lyricify Lyrics Helper 是 Lyricify 家族的开源成员之一,专注于为 Lyricify 系列应用及其他项目提供可复用的歌词处理能力。
本项目基于 Apache License 2.0 开源。
欢迎开发者在自己的项目中引用本库。使用、复制、修改或分发本项目代码时,请遵守 Apache License 2.0,并履行许可证规定的相关义务。
如果希望对本项目进行改进、翻译或衍生开发,推荐直接 fork 本仓库并在此基础上继续维护,而非另行创建项目;同时建议保留原仓库名称或 Lyricify 标识,以便识别项目来源。
特别感谢 @cnbluefire 和 @Raspberry Kan 提供的帮助与支持。
Lyricify 家族中的 .NET 歌词工具库,为 Lyricify 歌词相关功能竭力打造,提供歌词解析、生成、搜索、解密和优化处理。
| 格式 | 解析 | 生成 | 说明 |
|---|---|---|---|
| Lyricify Syllable | ✓ | ✓ | Lyricify 逐字歌词 |
| Lyricify Lines | ✓ | ✓ | Lyricify 逐行歌词 |
| LRC | ✓ | ✓ | 标准逐行歌词 |
| QRC | ✓ | ✓ | QQ 音乐逐字歌词 |
| KRC | ✓ | ✓ | 酷狗逐字歌词 |
| YRC | ✓ | ✓ | 网易云音乐逐字歌词 |
| TTML | ✓ | — | 逐行、逐字;支持 Apple Music 扩展 |
| Spotify (JSON) | ✓ | — | 未同步、逐行或逐字歌词 |
| Musixmatch (JSON) | ✓ | — | 未同步、逐行或逐字歌词 |
ParseHelper 和 GenerateHelper 分别提供统一的解析、生成入口;TypeHelper 用于自动识别格式、转换类型以及获取格式的显示名称。
格式识别还支持 QRC (XML)、网易云音乐完整 YRC (JSON) 和 Apple Music (JSON) 等原始封装类型。
SearchHelper 支持下表中的全部来源,可根据标题、艺人、专辑和时长查找最匹配的歌曲。
| 来源 | 歌词能力 | 其他常用接口 | 凭据要求 |
|---|---|---|---|
| QQ 音乐 | 获取歌词及翻译 | 歌曲、专辑、歌单和播放链接 | 无需配置 |
| 网易云音乐 | 获取 LRC、YRC 等歌词数据 | 歌曲、专辑和歌单 | 无需配置 |
| 酷狗音乐 | 搜索歌词并获取 KRC | 歌曲搜索 | 无需配置 |
| 汽水音乐 | 从曲目详情获取歌词信息 | 曲目详情 | 无需配置 |
| Apple Music | 获取 TTML 歌词 | 曲目搜索 | 获取歌词必须提供 Media User Token;Access Token 自动获取 |
| Musixmatch | 获取逐字、逐行或未同步歌词及翻译 | 曲目匹配 | User Token 自动获取,也可手动设置 |
| Spotify | 获取未同步、逐行或逐字歌词 | 曲目搜索 | 必须提供 sp_dc Cookie |
| LRCLIB | 获取同步或纯文本歌词 | 按曲目信息搜索、按 ID 查询 | 无需配置 |
SearchHelperProviderHelper在线接口依赖对应服务的可用性,返回结果也可能受到账号权限和地区限制。
在解决方案目录中添加项目引用:
dotnet add path/to/YourProject.csproj reference Lyricify.Lyrics.Helper/Lyricify.Lyrics.Helper.csproj
using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;
var rawLyrics = File.ReadAllText("lyrics.txt");
var lyricsData = ParseHelper.ParseLyrics(rawLyrics); // 自动识别格式
if (lyricsData is not null)
{
var lrc = GenerateHelper.GenerateString(lyricsData, LyricsTypes.Lrc);
Console.WriteLine(lrc);
}
已知原始格式时,也可以显式传入类型:
var lyricsData = ParseHelper.ParseLyrics(rawLyrics, LyricsRawTypes.Qrc);
using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;
using Lyricify.Lyrics.Searchers.Helpers;
using SearchSource = Lyricify.Lyrics.Searchers.Searchers;
var track = new TrackMultiArtistMetadata
{
Title = "RUNAWAY",
Artists = new() { "OneRepublic" },
Album = "RUNAWAY",
AlbumArtists = new() { "OneRepublic" },
DurationMs = 143264,
};
var match = await SearchHelper.Search(
track,
SearchSource.LRCLIB,
CompareHelper.MatchType.Medium);
var lyrics = await ProviderHelper.LRCLIBApi.Get(
track.Title,
track.Artist!,
track.Album,
track.DurationMs / 1000d);
Console.WriteLine(lyrics?.SyncedLyrics);
其他在线来源可通过 ProviderHelper 中相应的 QQMusicApi、NeteaseApi、KugouApi、SodaMusicApi、AppleMusicApi、MusixmatchApi 和 SpotifyApi 访问。
Musixmatch 默认使用 Android API,也可以在创建实例时通过配置委托选择桌面 API,或注入自己的请求发送函数:
var mobileApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api();
var desktopApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api(
options => options.UseDesktop());
var searcher = new MusixmatchSearcher(desktopApi);
Lyricify.Lyrics.Helper/
├─ Decrypter/ # QRC、KRC 解密
├─ Generators/ # 歌词生成
├─ Helpers/ # 统一入口、歌词优化与通用帮助类
├─ Models/ # 歌词、时间轴和曲目元数据模型
├─ Parsers/ # 歌词解析
├─ Providers/Web/ # 在线服务接口与响应模型
└─ Searchers/ # 歌曲搜索与匹配
Lyricify.Lyrics.Demo/
├─ Program.cs # 使用示例
└─ RawLyrics/ # 示例歌词
Lyricify Lyrics Helper 是 Lyricify 家族的开源成员之一,专注于为 Lyricify 系列应用及其他项目提供可复用的歌词处理能力。
本项目基于 Apache License 2.0 开源。
欢迎开发者在自己的项目中引用本库。使用、复制、修改或分发本项目代码时,请遵守 Apache License 2.0,并履行许可证规定的相关义务。
如果希望对本项目进行改进、翻译或衍生开发,推荐直接 fork 本仓库并在此基础上继续维护,而非另行创建项目;同时建议保留原仓库名称或 Lyricify 标识,以便识别项目来源。
特别感谢 @cnbluefire 和 @Raspberry Kan 提供的帮助与支持。