首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 音樂播放器自動獲取歌詞:百度 API 方案

     編輯:程式設計綜合問答

方案選型

方案優點缺點推薦指數
百度音樂 API曲庫大、返回標準 LRC、官方文檔需申請 Key、有頻率限制★★★★★
網易云/ QQ 音樂 非官方 API免費、歌詞格式豐富不穩定、可能侵權、需逆向簽名算法★★★☆☆
本地歌詞文件匹配離線、零成本覆蓋率低、需用戶手動下載★★☆☆☆

百度 API 實現步驟

  1. 註冊 百度開發者平台,創建應用獲取 API Key。
  2. 調用搜索接口獲取歌曲 ID:
    GET https://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query=歌名
  3. 調用歌詞接口:
    GET https://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.song.lry&songid=歌曲ID
  4. 解析 JSON 中的 lrcContent 字段,即標準 LRC 格式。
    [00:12.34]歌詞行1\n[00:15.67]歌詞行2

C# 核心代碼

public async Task GetLyricAsync(string songName) {
    using (var http = new HttpClient()) {
        // 1. 搜索歌曲 ID
        var searchUrl = $"https://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query={Uri.EscapeDataString(songName)}";
        var searchJson = await http.GetStringAsync(searchUrl);
        var songId = JObject.Parse(searchJson)["song"]?[0]?["songid"]?.ToString();
        if (string.IsNullOrEmpty(songId)) return null;

        // 2. 獲取歌詞
        var lrcUrl = $"https://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.song.lry&songid={songId}";
        var lrcJson = await http.GetStringAsync(lrcUrl);
        return JObject.Parse(lrcJson)["lrcContent"]?.ToString();
    }
}

// LRC 解析示例
public List<(TimeSpan Time, string Text)> ParseLrc(string lrc) {
    var regex = new Regex(@"\[(\d{2}):(\d{2})\.(\d{2})\](.*)");
    return lrc.Split('\n')
        .Select(line => regex.Match(line))
        .Where(m => m.Success)
        .Select(m => (Time: new TimeSpan(0, int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value), 0, int.Parse(m.Groups[3].Value)*10),
                      Text: m.Groups[4].Value.Trim()))
        .ToList();
}

參考資源

避坑指南

  • 接口可能返回 HTML 錯誤頁,需判斷 Content-Type 為 application/json。
  • 高併發請緩存歌詞結果 (Redis/MemoryCache),避免觸發限流。
  • 歌詞版權屬原作者,商業應用需獲取授權。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved