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写安全小工具之TCP全连接端口扫描器

    TCP全连接端口扫描器是一种利用TCP协议进行端口扫描的工具,通过模拟TCP连接,对目标主机的所有端口进行扫描,并分析响应数据,从而确定目标主机开放了哪些端口。 本文将详细介绍如何使用Python编写TCP全连接端口扫描器。 确定目标主机 首先,需要确定目标主机的IP地址或域名。可以使用Python中的socket模块中的gethostbyname函数将域名…

    python 2023年6月6日
    00
  • python实现银联支付和支付宝支付接入

    Python实现银联支付和支付宝支付接入攻略 简介 本攻略介绍使用Python实现银联支付和支付宝支付接入的具体步骤和示例代码。Python是一种高级编程语言,编写Python程序可以快速实现各种业务需求。 银联支付接入 步骤 银联支付接入的具体步骤如下: 1. 开通银联商户账号 开通银联商户账号可通过银联官网申请,获取商户号、私钥和公钥等重要配置信息。 2…

    python 2023年6月3日
    00
  • 详解python读写json文件

    下面是详解 Python 读写 JSON 文件的完整攻略: 什么是 JSON JSON(JavaScript Object Notation)是 JavaScript 对象表示法的一种轻量级文件格式。在许多应用程序中,我们可以使用 JSON 文件来存储和传输数据。 JSON 格式采用的是键值对的方式,由大括号 “{” 和 “}” 包含,键和值之间用冒号 “:…

    python 2023年6月3日
    00
  • python请求域名requests.(url = 地址)报错

    以下是解决Python请求域名requests.(url=地址)报错的完整攻略: 问题描述 在使用Python的requests模块请求域名时,有时会出现各种各样的错误,例如请求超时、请求被拒绝等。这些错误会导致程序无法正常运行。但是,有一些常见的错误可以通过一些简单的方法解决。 解决方法 可以使用以下步骤解决Python请求域名requests.(url=…

    python 2023年5月13日
    00
  • 使用Python实现音频双通道分离

    题目要求是使用Python实现音频双通道分离,我们需要采取以下步骤: 1. 导入必要的库 首先,我们需要导入必要的库。这里我们需要使用到numpy和librosa库。 import numpy as np import librosa 2. 读取音频文件 接下来,我们需要读取音频文件。这里我们以读取wav格式的音频文件为例,需要用到librosa库中的loa…

    python 2023年5月19日
    00
  • 详解在Python程序中使用Cookie的教程

    关于“详解在Python程序中使用Cookie的教程”的完整攻略,我可以为您提供以下内容: 一、什么是Cookie 简单来说,Cookie 就是一种在客户端(浏览器)中存储数据的技术。当用户访问某个网站时,网站会向用户的浏览器发送一个包含一些信息的 Cookie,浏览器将 Cookie 存储在本地的 Cookie 文件中。当用户再次访问该网站时,浏览器会将 …

    python 2023年6月3日
    00
  • Python:检查“字典”是否为空似乎不起作用

    【问题标题】:Python: Checking if a ‘Dictionary’ is empty doesn’t seem to workPython:检查“字典”是否为空似乎不起作用 【发布时间】:2023-04-06 13:36:02 【问题描述】: 我正在尝试检查字典是否为空,但它的行为不正常。它只是跳过它并显示 ONLINE 除了显示消息之外没有…

    Python开发 2023年4月7日
    00
  • python 伯努利分布详解

    Python伯努利分布详解 在概率论和统计学中,伯努利分布是一种二元随机变量的离散概率分布,用于描述只有两种可能结果的随机试验。本文将详细讲解Python伯努利分布的概念、公式、参数、应用场景和实现方法,并提供两个示例。 什么是伯努利分布? 伯努利分布是一种离散概率分布,用于描述只有两种可能结果的随机试验,例如抛硬币、掷骰子等。伯努利分布的随机变量X只有两个…

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