目录

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 请求。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐