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

Python调用YouTube API查询自定义ID频道订阅数无items标签如何解决

问题根因

你混淆了YouTube两种频道ID的适用场景:

  • 接口id参数仅支持查询UC开头的原生频道ID
  • 你传入的自定义频道ID(格式多为@xxx或用户自定义的短标识)无法被id参数识别,所以返回空结果集报错

修复方案

1. 接口参数调整

查询自定义ID的频道时,将请求参数替换为forHandle={自定义ID},该参数专门用于匹配用户自定义的频道标识。

2. 新增异常兼容逻辑

对API返回结果做非空判断,避免直接索引items字段抛出异常。

修复后参考代码

import urllib.request
import json

API_KEY = "你的API密钥"

def get_subscriber_count(channel_identifier):
    # 先判断是原生UC ID还是自定义ID,选择对应参数
    if channel_identifier.startswith("UC"):
        url = f"https://www.googleapis.com/youtube/v3/channels?part=statistics&id={channel_identifier}&key={API_KEY}"
    else:
        # 自定义ID如果带@前缀可以先去掉,forHandle支持带@和不带@两种格式
        handle = channel_identifier.lstrip("@")
        url = f"https://www.googleapis.com/youtube/v3/channels?part=statistics&forHandle={handle}&key={API_KEY}"
    
    data = urllib.request.urlopen(url).read()
    res = json.loads(data)
    
    # 先判断结果是否为空
    if res["pageInfo"]["totalResults"] == 0:
        raise ValueError("未查询到对应频道信息,请检查传入的频道ID是否正确")
    
    subs = int(res["items"][0]["statistics"]["subscriberCount"])
    return subs

# 测试示例:原生ID查询
# print(get_subscriber_count("UC8butISFwT-Wl7EV0hUK0BQ"))
# 测试示例:自定义ID查询,支持带@和不带@
# print(get_subscriber_count("@freecodecamp"))
# print(get_subscriber_count("freecodecamp"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:06:00