使用Python调用YouTube API取消视频点赞遇问题求助
批量取消视频点赞的API调试与实现方案
单个视频取消点赞失败的常见排查点
- 鉴权权限不足:取消点赞属于用户敏感操作,必须使用包含修改权限的身份凭证(如OAuth 2.0 Token),而非只读权限的API密钥。检查Token的权限范围,比如是否包含
likes.modify类权限。 - 视频ID解析错误:获取点赞列表时,确认返回的字段是正确的视频ID(部分API返回嵌套结构,如
id.videoId而非直接id),打印日志核对ID是否与实际视频一致。 - 请求方式/端点错误:不同平台的取消点赞API要求的请求方法(POST/DELETE/PUT)、端点路径差异很大。比如部分平台需用
POST请求并传入rating=none参数,而非直接调用DELETE接口。 - 请求参数缺失:除视频ID外,可能需在请求头指定
Content-Type: application/json,或通过参数关联当前用户,遗漏会导致请求被拒绝。
单个视频取消点赞示例代码(以通用视频API逻辑为例)
import requests # 替换为你的有效授权Token ACCESS_TOKEN = "your_valid_access_token" # 从点赞列表获取的目标视频ID TARGET_VIDEO_ID = "target_video_id_from_liked_list" # 1. 获取已点赞视频列表 def fetch_liked_videos(): api_url = "https://api.example.com/v1/user/liked-videos" headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"} params = {"limit": 50} # 单次请求返回的最大数量 response = requests.get(api_url, headers=headers, params=params) if response.status_code != 200: print(f"获取点赞列表失败: {response.json()}") return [] # 根据实际API返回结构提取视频ID return [video["id"] for video in response.json()["data"]] # 2. 取消单个视频点赞 def cancel_like(video_id): api_url = f"https://api.example.com/v1/videos/{video_id}/like" headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"} # 部分平台用DELETE,部分用POST传取消参数,根据实际API调整 response = requests.delete(api_url, headers=headers) if response.status_code in (200, 204): print(f"已取消视频 {video_id} 的点赞") else: print(f"取消点赞失败: {response.json()}") # 测试单个视频操作 test_video_id = fetch_liked_videos()[0] cancel_like(test_video_id)
批量取消的循环实现
import time def batch_cancel_likes(): liked_videos = fetch_liked_videos() if not liked_videos: print("未找到已点赞的视频") return for video_id in liked_videos: cancel_like(video_id) # 加延时避免触发API限流 time.sleep(1) # 处理分页:如果点赞视频超过单次请求上限,需循环获取下一页数据 # 示例:检查返回的next_token,继续请求直到所有数据获取完成 batch_cancel_likes()
额外注意事项
- 限流与重试:所有公开API都有请求频率限制,批量操作必须添加延时;遇到
429限流错误时,根据返回的Retry-After头设置等待时间,或实现最多3次的重试逻辑。 - 分页处理:若点赞视频数量超过API单次返回的最大条数,需通过返回的分页标识(如
nextPageToken)循环获取全部数据,避免遗漏。
内容的提问来源于stack exchange,提问作者Stuxy
相关产品推荐
相关产品推荐

