要在Python中使用百度音乐搜索API下载指定歌曲的LRC歌词,可以按照以下步骤进行:
1. 准备工作
首先,需要在百度开发者官网中,申请一个百度音乐开发者账号,然后创建一个音乐应用,以获取调用百度音乐API所需的access_token。
2. 搜素指定歌曲
在获取了access_token之后,就可以使用百度音乐API进行歌曲搜索了。搜索API的地址为“http://tingapi.ting.baidu.com/v1/restserver/ting”,可以使用Python的requests库进行GET请求,获得搜索结果。
例如:
import requests
access_token = "your_access_token"
song_name = "许嵩 - 幻听"
url = f"http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&method=baidu.ting.search.common&format=json&query={song_name}&page_no=1&page_size=1&showtype=1&version=2.1.0&token={access_token}"
response = requests.get(url)
# 处理搜索结果数据
result = response.json()
song_id = result['song_list'][0]['song_id']
以上代码中,我们使用了Python的f-string特性,将歌曲名称等参数动态插入到URL中,然后通过requests库获取了搜索结果数据,并从中解析出了歌曲ID。
3. 下载LRC歌词
接下来,就是下载LRC歌词的过程了。百度音乐API提供了获取歌词地址的API,地址形式为"http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&method=baidu.ting.song.lry&format=json&songid={song_id}&version=2.1.0&token={access_token}"。同样使用requests库进行GET请求即可。然后将获取到的歌词内容保存为txt文件即可。
例如:
lrc_url = f"http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&method=baidu.ting.song.lry&format=json&songid={song_id}&version=2.1.0&token={access_token}"
lrc = requests.get(lrc_url).json()['lrcContent']
# 保存为txt文件
with open(f"{song_name}.txt", 'w', encoding='utf-8') as f:
f.write(lrc)
以上是基本步骤,下面给出一个完整的演示代码,包含从搜索到下载歌词的完整过程。
import requests
import re
# 歌名和token
song_name = "许嵩 - 幻听"
access_token = "your_access_token"
# 搜索歌曲,获取歌曲id
search_url = f"http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&method=baidu.ting.search.common&format=json&query={song_name}&page_no=1&page_size=1&showtype=1&version=2.1.0&token={access_token}"
response = requests.get(search_url)
result = response.json()
if result['error_code'] != 22000:
print(result.get('error_message', '未知错误'))
exit(-1)
song_id = result['song_list'][0]['song_id']
print(f'歌曲id:{song_id}')
# 获取歌词
lrc_url = f"http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&method=baidu.ting.song.lry&format=json&songid={song_id}&version=2.1.0&token={access_token}"
response = requests.get(lrc_url).json()
if response['error_code'] != 22000:
print(response.get('error_message', '未知错误'))
exit(-1)
lrc = response['lrcContent']
print('歌词:', lrc)
# 歌词保存为txt文件
with open(f"{song_name}.txt", 'w', encoding='utf-8') as f:
f.write(lrc)
print(f'歌词已保存为 {song_name}.txt')
另外还有一个简单的示例,是对上述过程的封装,可以直接指定歌曲名称和API token,获取对应歌曲的歌词文本。
import requests
import re
def get_lrc(song_name, access_token):
# 搜索歌曲,获取歌曲id
search_url = f"http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&method=baidu.ting.search.common&format=json&query={song_name}&page_no=1&page_size=1&showtype=1&version=2.1.0&token={access_token}"
response = requests.get(search_url)
result = response.json()
if result['error_code'] != 22000:
return result.get('error_message', '未知错误')
song_id = result['song_list'][0]['song_id']
# 获取歌词
lrc_url = f"http://tingapi.ting.baidu.com/v1/restserver/ting?from=webapp_music&method=baidu.ting.song.lry&format=json&songid={song_id}&version=2.1.0&token={access_token}"
response = requests.get(lrc_url).json()
if response['error_code'] != 22000:
return response.get('error_message', '未知错误')
lrc = response['lrcContent']
return lrc
这样,使用者只需要调用get_lrc
函数,传入歌曲名称和access_token即可获取该歌曲的LRC歌词。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中使用百度音乐搜索的api下载指定歌曲的lrc歌词 - Python技术站