当前位置: 首页 > news >正文

Python实例题:Python获取喜马拉雅音频

目录

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 Nonedef 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__":# 替换为你要下载的音频的 IDaudio_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 请求。

相关文章:

  • laravel 使用异步队列,context带的上下文造成反序列化出问题
  • day05_java中常见的运算符
  • python学生作业提交管理系统-在线作业提交系统
  • Hutool的`BeanUtil.toBean`方法详解
  • 自定义Widget开发:自定义布局实现
  • Spring Boot Controller 如何处理HTTP请求体
  • 力扣刷题Day 42:缺失的第一个正数(238)
  • javaStream流toMap小坑
  • 算法与数据结构 - 常用图算法总结
  • 视频编解码学习六之视频采集和存储
  • C++算法(19):整数类型极值,从INT_MIN原理到跨平台开发实战
  • 大模型备案材料解析:模型服务协议涵盖内容
  • SpringBoot+Dubbo+Zookeeper实现分布式系统步骤
  • 【hadoop】Sqoop数据迁移工具的安装部署
  • 车载网络TOP20核心概念科普
  • 如何使用极狐GitLab 软件包仓库功能托管 ruby?
  • 3.2.3 掌握RDD转换算子 - 2. 过滤算子 - filter()
  • 按摩椅的机芯类型和材质
  • vue中router和route的区别
  • 矿井设备通信破局:ModbusTCP转DeviceNet网关应用实践
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 罗氏制药全新生物制药生产基地投资项目在沪启动:预计投资20.4亿元,2031年投产
  • 化学家、台湾地区“中研院”原学术副院长陈长谦逝世
  • 酒店取消订单加价卖何以屡禁不绝?专家建议建立黑名单并在商家页面醒目标注
  • 紧盯大V、网红带货肉制品,整治制售假劣肉制品专项行动开展
  • 又一日军“慰安妇”制度受害者去世,大陆登记在册幸存者仅剩7人