通过歌曲名获取网易云原文+翻译歌词

歌词api

歌词api地址

https://music.163.com/api/song/lyric

参数os,id,tv,lv
其中 tv 返回翻译和时间轴信息, lv 返回原文和时间轴信息

os 查询值可以固定为 pcid 为歌曲id
(id可以通过下面的 “查找歌曲id” 获取)

示例

GET https://music.163.com/api/song/lyric?os=pc&id=1900172235&lv=-1

可得到包含时间轴信息的歌词(json)

GET https://music.163.com/api/song/lyric?os=pc&id=1900172235&tv=-1

可得到包含时间轴信息的翻译(json)

json格式为:

{
    "sgc": false,
    "sfy": false,
    "qfy": false,
    "transUser": {
        "id": 3954145,
        "status": 99,
        "demand": 1,
        "userid": 286296639,
        "nickname": "Crazy_Knight",
        "uptime": 1473236549828
    },
    "lyricUser": {
        "id": 3954139,
        "status": 99,
        "demand": 0,
        "userid": 45478087,
        "nickname": "color-9",
        "uptime": 1473236549828
    },
    "lrc": {
        "version": 15,
        "lyric": "[00:00.617]这个世上没有比假花更美的花\n[00:05.748]因为它完全是由虚假所构成\n 其他歌词省略"
    },
    "code": 200
}

其中歌词每行通过 \n 标记换行

示例提取

import json
 
# 假设 data 是从接口获取的 json 字符串
data = '''{
    "lrc": {
        "version": 15,
        "lyric": "第一行歌词\n第二行歌词\n第三行歌词"
    }
}'''
 
obj = json.loads(data)
lyric_text = obj['lrc']['lyric']  # 提取歌词
lines = lyric_text.split('\n')    # 可选 按行拆分

查找歌曲id

上面提到查找歌词需要歌曲id

通过下列方法可以查找到歌曲id

搜索api

https://music.163.com/api/search/get

参数:
type 固定为1(表示查找歌曲
s 为你想要搜索的歌曲名称
limit 为返回的歌曲数量

示例

GET https://music.163.com/api/search/get/?s=フォニイ;可不&type=1&limit=2

返回格式为:

{
    "result": {
        "注": "这里省略了很多信息,这里只展示最核心的",
        "songs": [
            {
                "注": "这是第1首歌的信息",
                "id": 1900172235,
                "name": "フォニイ",
                "artists": [
                    {
                        "注": "这里是歌手信息,暂时省略"
                    },
                    {
                        "注": "这里是歌手信息,暂时省略"
                    }
                ],
                "album": {
                    "注": "这里是专辑信息,暂时省略"
                },
                "注1": "这是歌曲信息,暂时省略"
            },
            {
                "注": "这是第2首歌的信息",
                "id": 1864969357,
                "name": "フォニイ(偽物/phony)(翻自 可不)",
                "artists": [
                    {
                        "注": "这里是歌手信息,暂时省略"
                    },
                    {
                        "注": "这里是歌手信息,暂时省略"
                    }
                ],
                "album": {
                    "注": "这里是专辑信息,暂时省略"
                },
                "注1": "这是歌曲信息,暂时省略"
            }
        ],
        "hasMore": true,
        "songCount": 10
    },
    "code": 200
}

示例提取

import json
 
data = '''json字符串'''
obj = json.loads(data)
 
songs_info = []
for song in obj['result']['songs']:
    song_id = song['id']
    # 歌手昵称列表
    artist_names = [artist.get('name', '未知') for artist in song['artists']]
    songs_info.append({'id': song_id, 'artists': artist_names})
 
# 输出
for info in songs_info:
    print(f"歌曲ID: {info['id']}, 歌手昵称: {', '.join(info['artists'])}")

示例输出:

歌曲ID: 1900172235, 歌手昵称: 可不, ツミキ
歌曲ID: 1864969357, 歌手昵称: Yvan叶子, 翼と実TsubasatMi

总结

通过以上两个方法,分两步就可以通过歌曲名称获取到对应的歌词和翻译以及时间轴信息

上一篇 Open Claw爆火?AI跟风焦虑?我们该做什么?
丙氨酸

丙氨酸管理员

与其等春来 不如追花去

本月创作热力图

AeroCore图片
文章目录