You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python 3.11从JSON中提取并下载指定集数的视频文件?

解决方案

问题分析

你的代码目前仅实现了视频链接提取,缺少下载功能,同时存在API数据结构访问路径错误的问题(Anilibria API的剧集资源路径并非entry['episode'])。

修改后的完整代码

import requests
from pathlib import Path

def download_video(url, save_path):
    # 流式下载大视频文件,避免内存占用过高
    with requests.get(url, stream=True) as r:
        r.raise_for_status()
        with open(save_path, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192):
                f.write(chunk)
    print(f"视频已保存至: {save_path}")

user_input = input("输入动漫名称: ")

url = f'https://api.anilibria.tv/v3/title/search?search={user_input}'
res = requests.get(url)
res.raise_for_status()
data = res.json()

titles_and_links = [] 

for entry in data['list']:
    try:
        title = entry['names']['ru']
        # 精准定位第1集:按需选择以下两种方式
        # 方式1:按列表顺序取第一个(默认对应第1集)
        first_episode = entry['player']['episodes'][0]
        # 方式2:通过episodeNumber字段精准匹配第1集
        # first_episode = next(ep for ep in entry['player']['episodes'] if ep['episodeNumber'] == 1)
        
        # 获取FHD清晰度的视频链接
        video_link = first_episode['sources']['fhd']

        data_item = {
            'title': title,
            'video_link': video_link
        }
        titles_and_links.append(data_item)
    except KeyError as e:
        print(f"跳过条目:缺失数据 - {e}")
    except StopIteration:
        print(f"跳过条目:未找到第1集")

# 遍历结果并下载
for item in titles_and_links:
    print(f"标题: {item['title']}")
    print(f"视频链接: {item['video_link']}")
    # 构造保存文件名,可按需调整编码避免乱码
    save_filename = f"{item['title']}_第1集.mp4"
    save_path = Path(save_filename)
    download_video(item['video_link'], save_path)
    print()

关键修改点

  1. 修正API数据路径:Anilibria API中,剧集资源存储在entry['player']['episodes']路径下,每个剧集的清晰度链接在sources字段内。
  2. 添加流式下载功能:使用stream=True分块写入文件,适合大体积视频,防止内存溢出。
  3. 精准匹配第1集:提供两种集数定位方式,可根据API返回的剧集排列情况选择。
  4. 友好的文件命名:用动漫标题+集数作为保存文件名,方便识别。

内容的提问来源于stack exchange,提问作者Molix228

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:33:36