python中使用百度音乐搜索的api下载指定歌曲的lrc歌词

要在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技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python实现的一只从百度开始不断搜索的小爬虫

    Python实现的一只从百度开始不断搜索的小爬虫 简介 本文介绍如何使用Python编写一个可以从百度开始不断搜索的小爬虫,并获取搜索结果中的信息。 实现步骤 安装相关库 我们需要使用requests和beautifulsoup4库进行网页的爬取和解析。可以通过以下命令安装: pip install requests beautifulsoup4 网页的爬取…

    python 2023年5月14日
    00
  • Python爬虫实现爬取京东手机页面的图片(实例代码)

    Python爬虫实现爬取京东手机页面的图片 在Python中,实现爬取京东手机页面的图片是一个常见的需求。以下是一个示例,介绍了如何使用Python爬虫实现爬取京东手机页面的图片。 示例一:使用requests库获取京东手机页面的HTML代码 以下是一个示例,使用requests库获取京东手机页面的HTML代码: import requests url = …

    python 2023年5月15日
    00
  • 使用 sphinx 自动记录 python 类、模块

    【问题标题】:Using sphinx to auto-document a python class, module使用 sphinx 自动记录 python 类、模块 【发布时间】:2023-04-04 06:36:01 【问题描述】: 我已经安装了Sphinx 以记录我正在处理的一些 Python 模块和类。虽然标记语言看起来很不错,但我还没有设法自动…

    Python开发 2023年4月6日
    00
  • 四种Python机器学习超参数搜索方法总结

    关于“四种Python机器学习超参数搜索方法总结”的完整攻略,我将从以下几个方面进行讲解: 超参数的概念与搜索方法 网格搜索(Grid Search)的原理和Python代码示例 随机搜索(Random Search)的原理和Python代码示例 贝叶斯优化(Bayesian Optimization)的原理和Python代码示例 遗传算法(Genetic …

    python 2023年6月3日
    00
  • python3 打印输出字典中特定的某个key的方法示例

    当我们需要在 Python3 中打印输出字典中特定的某个key时,可以使用字典变量名加上中括号来获取该值。具体方法如下: my_dict = {‘name’: ‘Lucy’, ‘age’: 18, ‘gender’: ‘female’} print(my_dict[‘name’]) # 输出结果为Lucy 上述代码中,我们创建了一个名为 my_dict 的字…

    python 2023年5月13日
    00
  • Python基础之dict和set的使用详解

    Python基础之dict和set的使用详解 简介 在Python中,字典和集合是非常常用的数据结构,它们提供了快速的数据访问和查找。本文将详细讲解字典和集合的基本用法以及常用操作。 字典(dict)的使用 字典是一种无序可变的序列,使用键值对存储数据。在Python中,字典使用花括号{}表示,例如: d = { ‘name’: ‘Tom’, ‘age’: …

    python 2023年5月13日
    00
  • Python 词典(Dict) 加载与保存示例

    接下来我将为你详细讲解 Python 词典(Dict) 加载与保存示例的完整攻略。 什么是 Python 词典(Dict)? Python 中的词典(Dict)是一种无序、可变的集合数据类型,用于存储以键-值对形式保存的数据。 以下是一种简单的词典示例: person = {‘name’: ‘Alice’, ‘age’: 25, ‘country’: ‘Ca…

    python 2023年5月13日
    00
  • python 与GO中操作slice,list的方式实例代码

    下面是关于Python和Go中操作slice和list的方式的详细攻略,包含两个示例说明。 Python中操作list和slice的方式 创建list和slice 在Python中,我们可以使用方括号[]`来创建一个list或slice。下面是示例: # 创建一个list my_list = [1, 2, 3, 4, 5] # 创建一个slice my_sl…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部