当前位置: 首页 > 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 请求。
http://www.dtcms.com/a/178776.html

相关文章:

  • 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网关应用实践
  • 2025年3月青少年机器人技术等级考试(二级)实际操作真题试卷
  • 从单智到多智:深度拆解基于MetaGPT的智能体辩论
  • Kafka消息不丢失处理
  • leetcode 3342. 到达最后一个房间的最少时间 II 中等
  • IC ATE集成电路测试学习——PLL测试(一)
  • 2025年前端在线协同编辑技术研究
  • 使用Compose编排工具搭建Ghost博客系统
  • 《易语言学习大全》
  • maven如何搭建自己的私服(LINUX版)?
  • ubuntu 22.04 换源