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

yizhihongxing

要在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中进行除法运算时,负数的取商的取整方式与正数稍有不同。本文将详细讲解Python对于负数的除法取商的取整方式,以及如何防止由此产生的不符合预期的结果。 Python 的除法运算 在Python中,除法运算符 / 用于计算两个数相除得到的结果。例如: 5 / 2 # 输出 2.5 在整数除法的场景中,P…

    python 2023年6月3日
    00
  • 详解常用查找数据结构及算法(Python实现)

    下面是关于“详解常用查找数据结构及算法(Python实现)”的完整攻略。 1. 查找算法简介 查找算法是一种在数据集合中查找特定元素算法。常见的查找算法包括线性查找、二分查找、哈希查找等。不同的查找算法适用不同的数据结构和数据类型。在实际应用中,我们需要根据具体的需求选择合适的查找算法。 2. Python实现查找算法 在Python中,可以使用不同的数据结…

    python 2023年5月13日
    00
  • 在Python的setuptools框架下生成egg的教程

    生成egg的教程可以分为以下几步: Step 1: 安装setuptools 在生成egg之前,我们需要先安装setuptools。可以通过以下命令安装setuptools: pip install setuptools Step 2: 创建Python模块 首先,我们需要创建一个Python模块。在本例中,我们创建一个名为”example”的Python模…

    python 2023年6月2日
    00
  • 基于Python实现开发钉钉通知机器人

    下面是基于Python实现开发钉钉通知机器人的完整攻略,包含以下几个步骤: 注册钉钉开发者账号 创建机器人 获取机器人Webhook地址并测试 编写Python代码实现机器人通知功能 详细说明如下: 注册钉钉开发者账号 首先需要注册一个钉钉开发者账号并登录进入开发者后台,如果已有账号则可以直接登录。 创建机器人 进入开发者后台的「机器人」页面,选择「自定义机…

    python 2023年5月23日
    00
  • Python网络编程基于多线程实现多用户全双工聊天功能示例

    Python网络编程基于多线程实现多用户全双工聊天功能示例 什么是Python网络编程? Python网络编程是指使用Python语言编写网络应用程序的技术。在Python网络编程中,使用Python标准库中的socket库来实现网络通信,通过socket库提供的接口,可以在不同的计算机之间建立连接,传输数据等。 多线程实现多用户全双工聊天功能 使用多线程可…

    python 2023年5月19日
    00
  • Python常用配置文件ini、json、yaml读写总结

    下面是Python常用配置文件ini、json、yaml读写总结的详细攻略。 1. 概述 在编写Python程序时,有时需要读取一些配置文件来获取程序执行需要的参数和数据。常见的配置文件格式有ini、json和yaml。在Python中,我们可以使用标准库或第三方库来读取和写入这些文件。本文将介绍如何使用Python标准库和第三方库来读写这三种常见的配置文件…

    python 2023年6月3日
    00
  • python实现银行账户系统

    Python实现银行账户系统攻略 系统需求 在实现银行账户系统前,我们需要明确系统的需求: 用户可以注册账户,并设置初始余额; 用户可以查询当前余额; 用户可以进行存款、取款等操作; 用户可以查询交易明细。 代码实现 我们可以通过Python的面向对象编程实现银行账户系统。具体实现过程如下: 定义 BankAccount 类,并在类中包含以下功能: 构造函数…

    python 2023年5月30日
    00
  • Django打印出在数据库中执行的语句问题

    一、简介 Django提供了一个非常好用的ORM,可以方便的操作数据库,但是有时候我们需要查看ORM生成的SQL语句,以便优化ORM的使用。本攻略将详细介绍如何在Django中打印执行的SQL语句。 二、打印SQL语句的方法 在Django中,打印出在数据库中执行的SQL语句非常简单,我们只需要在settings.py中设置DEBUG=True,然后在执行O…

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