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

使用yt-dlp下载Twitch剪辑后,如何查询对应直播的游戏信息?

解决Twitch剪辑所属直播游戏信息的获取问题

有两个可行的方案可以获取Twitch剪辑对应的直播游戏信息,以下是具体实现:

方案1:利用yt-dlp的extract_info提取元数据

yt-dlp在处理Twitch链接时,会抓取到比单纯下载更多的元数据,其中就包含剪辑所属的游戏信息。你可以修改现有代码,先调用extract_info获取完整信息,再提取游戏字段,同时不影响下载功能:

from yt_dlp import YoutubeDL

def download_clip(link: str):
    clip_id = get_clip_slug(link)
    url = f'https://clips.twitch.tv/{clip_id}'

    ydl_opts = {'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'}
    try:
        with YoutubeDL(ydl_opts) as ydl:
            # 先提取剪辑的完整元数据
            clip_info = ydl.extract_info(url, download=False)
            # 提取游戏信息,字段通常是'game'或'category'
            game_name = clip_info.get('game') or clip_info.get('category')
            if game_name:
                print(f"该剪辑所属游戏:{game_name}")
            # 执行下载
            ydl.download([url])
    except Exception as e:
        print(f"出错:{str(e)}")

如果game或category字段不存在,可以打印clip_info的所有键,查看实际存储游戏信息的字段名称——不同版本的yt-dlp可能字段名略有差异。

方案2:调用Twitch官方API获取精准数据

如果yt-dlp的元数据无法满足需求,可以直接调用Twitch的API来获取剪辑关联的直播游戏信息:

  1. 首先需要在Twitch开发者平台注册应用,获取你的Client ID(无需OAuth令牌,公开接口可匿名调用)
  2. 用剪辑ID调用/clips接口,获取剪辑对应的VOD ID和主播ID
  3. 再用VOD ID调用/videos接口,获取该VOD所属的游戏信息

示例代码:

import requests

def get_clip_game_info(clip_id: str, client_id: str):
    # 1. 获取剪辑基础信息
    clip_url = f"https://api.twitch.tv/helix/clips?id={clip_id}"
    headers = {"Client-ID": client_id}
    response = requests.get(clip_url, headers=headers)
    clip_data = response.json()['data'][0]
    
    # 2. 获取关联VOD的游戏信息
    vod_id = clip_data.get('video_id')
    if not vod_id:
        return "该剪辑未关联完整VOD"
    
    vod_url = f"https://api.twitch.tv/helix/videos?id={vod_id}"
    vod_response = requests.get(vod_url, headers=headers)
    vod_data = vod_response.json()['data'][0]
    return vod_data.get('game_name')

# 在你的download_clip函数中调用
def download_clip(link: str):
    clip_id = get_clip_slug(link)
    # 替换为你的Client ID
    client_id = "YOUR_TWITCH_CLIENT_ID"
    game_name = get_clip_game_info(clip_id, client_id)
    print(f"该剪辑所属游戏:{game_name}")
    
    # 原下载逻辑...

注意:Twitch API有调用频率限制,需要根据你的使用场景控制请求次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:20:17