目录
Python实例题
题目
python-get-ximalaya-audioPython 获取喜马拉雅音频脚本
代码解释
get_audio_info 函数:
download_audio 函数:
主程序:
运行思路
注意事项
Python实例题
题目
Python获取喜马拉雅音频
python-get-ximalaya-audioPython 获取喜马拉雅音频脚本
import requests
import json
import os
# 设置请求头,模拟浏览器行为
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Referer': 'https://www.ximalaya.com/'
}
def get_audio_info(audio_id):
"""
根据音频 ID 获取音频的详细信息
:param audio_id: 音频 ID
:return: 音频详细信息的 JSON 数据
"""
api_url = f'https://www.ximalaya.com/revision/play/v1/audio?id={audio_id}&ptype=1'
try:
response = requests.get(api_url, headers=headers)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
print(f"请求出错: {e}")
return None
def download_audio(audio_url, save_path):
"""
下载音频文件
:param audio_url: 音频的下载链接
:param save_path: 保存音频的路径
"""
try:
response = requests.get(audio_url, headers=headers)
response.raise_for_status()
with open(save_path, 'wb') as f:
f.write(response.content)
print(f"音频已成功下载到 {save_path}")
except requests.RequestException as e:
print(f"下载音频时出错: {e}")
if __name__ == "__main__":
# 替换为你要下载的音频的 ID
audio_id = 'xxxxxx'
audio_info = get_audio_info(audio_id)
if audio_info and audio_info.get('ret') == 200:
audio_url = audio_info['data']['src']
# 创建保存音频的目录
save_dir = 'ximalaya_audios'
if not os.path.exists(save_dir):
os.makedirs(save_dir)
save_path = os.path.join(save_dir, f'{audio_id}.m4a')
download_audio(audio_url, save_path)
else:
print("未获取到有效的音频信息")
代码解释
-
get_audio_info
函数:- 根据音频 ID 构造 API 请求的 URL。
- 发送 HTTP 请求获取音频的详细信息,若请求成功则返回 JSON 数据。
- 处理请求异常,确保程序的健壮性。
-
download_audio
函数:- 发送请求下载音频文件。
- 将下载的音频内容保存到指定的文件路径。
- 处理下载过程中的请求异常。
-
主程序:
- 定义要下载的音频 ID。
- 调用
get_audio_info
函数获取音频信息。 - 若获取到有效的音频信息,提取音频的下载链接,创建保存音频的目录,调用
download_audio
函数下载音频。
运行思路
- 安装依赖库:确保已经安装了
requests
库,若未安装,可使用以下命令进行安装:
pip install requests
- 获取音频 ID:打开喜马拉雅音频详情页,从 URL 中获取音频的 ID。例如,音频详情页的 URL 为
https://www.ximalaya.com/xxx/xxxxxx/
,其中xxxxxx
就是音频 ID。 - 修改代码:将代码中的
audio_id
替换为你要下载的音频的 ID。 - 运行脚本:将上述代码保存为
get_ximalaya_audio.py
文件,在终端中运行:
python get_ximalaya_audio.py
- 查看结果:程序会在当前目录下创建一个名为
ximalaya_audios
的文件夹,里面包含下载的音频文件。
注意事项
- 版权问题:确保你有合法的权限下载和使用这些音频,避免侵犯版权。
- 反爬机制:喜马拉雅有反爬机制,可能会限制请求频率或返回验证码。可考虑使用代理 IP、设置请求间隔等方式应对。
- API 变化:喜马拉雅的 API 可能会随时变化,若代码无法正常工作,需要重新分析 API 请求。