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

如何用Python调用YouTube API逐个更新多视频/直播(通过ID列表)

YouTube API批量更新直播隐私状态的解决方案

原脚本的问题在于更新请求写在遍历循环的外面,只会处理循环结束后最后一个(或测试时的第一个)直播ID,要实现批量更新,必须把更新逻辑放到遍历每个直播ID的循环内部,逐个发起更新请求(因为YouTube API确实不支持批量更新)。

修正后的完整代码

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

def main():
    # 假设credentials已通过授权流程正确获取
    youtube = build('youtube', 'v3', credentials=credentials)
    
    # 分页获取所有直播ID,避免只处理前100条
    next_page_token = None
    while True:
        # 发起直播列表查询,只请求ID字段减少数据量
        list_request = youtube.liveBroadcasts().list(
            part="id",
            broadcastStatus="all",
            broadcastType="all",
            maxResults=100,
            pageToken=next_page_token
        )
        try:
            list_response = list_request.execute()
        except HttpError as e:
            print(f"获取直播列表出错: {e}")
            break
        
        # 遍历当前页的每个直播,逐个更新隐私状态为未列出
        for item in list_response["items"]:
            broadcast_id = item["id"]
            print(f"正在处理直播ID: {broadcast_id}")
            
            try:
                # 发起更新请求
                update_request = youtube.liveBroadcasts().update(
                    part="status",
                    body={
                        "id": broadcast_id,
                        "status": {
                            "privacyStatus": "unlisted"
                        }
                    }
                )
                update_result = update_request.execute()
                print(f"更新成功: {update_result['id']} 已设为未列出")
            except HttpError as e:
                print(f"更新直播 {broadcast_id} 失败: {e}")
        
        # 检查是否有下一页数据,没有则退出循环
        next_page_token = list_response.get("nextPageToken")
        if not next_page_token:
            print("所有直播处理完成")
            break

if __name__ == "__main__":
    main()

关键修改说明

  • 移更新逻辑到循环内:把liveBroadcasts().update()调用放到遍历直播项的循环里,每个ID单独发起请求,实现批量处理
  • 分页处理:通过nextPageToken循环获取所有直播,解决原脚本只能处理前100条的限制
  • 优化请求字段:将列表查询的part改为id,只获取必要数据,提升请求效率
  • 异常捕获:添加HttpError捕获,单个请求失败不会导致整个脚本崩溃,同时输出错误信息便于排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:41:57