在 Youtube API (Python) 中捕获 "Video already in playlist." 错误

Catch "Video already in playlist." error in Youtube API (Python)

我在 Python 脚本中使用 youtube.playlistItems().insert function。我知道一些视频已经在目标播放列表中,这会导致错误

raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 409 when requesting https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&alt=json returned "Video already in playlist.">

我怎样才能捕捉到这个错误并跳过有问题的视频?我搜索了 insert help doc and the errors 文档,但找不到我的访问请求的适当属性(.error.httperror 无效)。

谢谢

您应该能够捕捉到异常并像这样继续:

try:
    youtube.playlistItems().insert()
except googleapiclient.errors.HttpError:
    pass

我看了一下 API,认为 insert() 的配额成本值得考虑。 insert() 方法花费 50,list() 方法花费 1。根据请求的数量,在尝试插入重复项之前检查现有播放列表项目的列表可能是明智的。

current_items = youtube.playlistItems().list()
if item_to_insert not in current_items:
    youtube.playlistItems().insert(item_to_insert)

此策略的价值完全取决于重复的比例和您支付 API 成本的意愿。另外,我不是建议你为每个插入调用 list(),最好调用一次 list() 然后批量插入,这只是一个简单的例子。