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在使用JSON时需要注意的编码问题

    下面是详解Python在使用JSON时需要注意的编码问题的攻略: 1.背景介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于各种编程语言中。在Python中,我们可以使用内置的json模块实现JSON数据的解析和生成。但是,在使用Python解析或生成JSON数据时,可能会涉及到编码问题。 2. 编码…

    python 2023年5月31日
    00
  • Python实现自动签到脚本的示例代码

    下面先来更详细地讲解一下“Python实现自动签到脚本的示例代码”的完整攻略。 1. 确认签到页面和需要提交的表单信息 在实现自动签到脚本之前,需要先确认签到页面的URL、需要填写的提交表单信息以及如何发起签到请求。可以通过查看网页源代码或使用浏览器开发者工具来获取这些信息。 在确认好需要提交的表单信息之后,可以使用 requests 模块来发起签到请求。具…

    python 2023年5月19日
    00
  • Python中的 enumerate和zip详情

    当我们需要对一个序列进行循环迭代时,可以使用Python内置函数enumerate()和zip()来简化代码的书写。 enumerate() enumerate()函数接收一个序列作为参数,并返回一个枚举对象,其中每个元素都由该元素的索引和值组成。 下面是使用enumerate()函数的一些示例: fruits = [‘apple’, ‘banana’, ‘…

    python 2023年6月3日
    00
  • python 遍历字符串(含汉字)实例详解

    下面是关于“Python遍历字符串(含汉字)实例”的完整攻略。 需求描述 在Python程序中,遍历字符串是常见的操作,但是当字符串中含有汉字时,可能会出现乱码和编码错误等问题。本篇文章将介绍如何遍历包含汉字的字符串,并解决可能出现的编码问题。 解决方案 方案一:使用Unicode编码 Unicode是一种用于字母、数字、符号和文字的标准编码系统,它可以包含…

    python 2023年5月31日
    00
  • python 实现多线程下载视频的代码

    下面是 Python 实现多线程下载视频的完整攻略: 1. 确定下载视频的 URL 首先我们需要确定下载视频的 URL。可以通过在浏览器中右键点击视频,选择“复制视频地址”或“复制视频链接”(具体选项根据浏览器不同可能会有所不同),将视频的 URL 复制到剪贴板中,作为代码实现时使用的参数。 2. 导入必要的模块 在 Python 中实现多线程下载视频,需要…

    python 2023年5月19日
    00
  • Python中使用遍历在列表中添加字典遇到的坑

    下面是详细讲解“Python中使用遍历在列表中添加字典遇到的坑”的完整攻略。 问题描述 在Python中,我们有时候需要在列表中添加字典。比如要创建一个包含多个字典的列表,每个字典代表一本书,包含书名、作者、价格等信息。我们可以通过遍历的方式逐一添加字典。但是,如果不注意细节,就容易遇到一些问题,比如: 遍历过程中会重复添加相同的字典 添加一个字典后,其它字…

    python 2023年5月13日
    00
  • python 实现批量xls文件转csv文件的方法

    下面是详细的讲解“Python 实现批量 xls 文件转 csv 文件的方法”的攻略: 1. 准备工作 在开始代码实现前,需要确保你已经安装了 pandas 和 xlrd 这两个库。 你可以通过以下的命令行安装它们: pip install pandas pip install xlrd 2. 代码实现 导入需要的库 我们首先需要导入需要用到的库: impo…

    python 2023年6月3日
    00
  • Python基础Lists和tuple实例详解

    Python基础Lists和tuple实例详解 在Python编程中,列表(list)和元组(tuple)是两种常用的数据类型。它们都是序列类型,可以存储多个元素,并支持索引、切片等。本文详介绍Python基础Lists和tuple实例详解,包括语法、参数、返回值以及示例说明。 Lists Lists的创建 Python中,我们可以使用方括号[]来创建一个列…

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