我正在开发一个应用程序,该应用程序可以从某些网站抓取歌曲,并通过 Google 的 Youtube API 以编程方式在 YouTube 上“喜欢”它们。为了获取我正在寻找的视频 ID,我使用艺术家和歌曲标题执行 Google 搜索并解析结果。这个过程运行良好并返回有效的视频 ID(我已经手动测试过它们)。我遇到问题的地方是我根据视频 ID 点赞的代码,该代码基本上是直接从 google 的 YouTube API Python 示例中复制的:
def likeVideo(youtube, video_id):
channels_list_response = youtube.channels().list(
mine=True,
part="contentDetails"
).execute()
# Adding a video as a favorite or to the watch later list is done via the
# same basic process. Just read the list id of the corresponding playlist
# instead of "likes" as we're doing here.
liked_list_id = channels_list_response["items"][0]["contentDetails"]["relatedPlaylists"]["likes"]
body = dict(
snippet=dict(
playlistId=liked_list_id,
resourceId=dict(
kind="youtube#video",
videoId=video_id
)
)
)
youtube.playlistItems().insert(
part=",".join(body.keys()),
body=body
).execute()
print "%s has been liked." % video_id
Run Code Online (Sandbox Code Playgroud)
但是,我的应用程序抛出此错误:
apiclient.errors.HttpError: <HttpError 503 when requesting https://www.googleapis.com/youtube/v3/playlistItems?alt=json&part=snippet returned "Backend Error">
Run Code Online (Sandbox Code Playgroud)
通过谷歌开发论坛搜索发现这可能是谷歌方面的服务器端问题,但我不确定我的具体情况。有人看到可能出了什么问题吗?
编辑:过去几天我一直在使用这个应用程序,它似乎运行得不错;很少有 503 错误...但是,此时每个会话通常只执行一个 API 请求。当我第一次遇到这个错误时,它正在执行大约 6 个批处理。在执行批处理请求时是否会发生一些我应该考虑的事情?
它不会让我评论你的问题,我真的不认为这是一个答案,但也许只是需要考虑的事情。不久前,我正在开发一个项目,其中有一个包含 YouTube 视频 URL 的 CSV 列表。我想将视频标题放在 CSV 列表中的 URL 旁边。鉴于页面的标题是视频的标题,我利用 URLLIB 从列表中的 URL 中抓取页面,抓取标题,将其放入我的列表中,然后循环浏览下一个、下一个等等等。无论如何,我只得到了部分结果!只有大约一半的东西起作用了。事实证明,我使用 URLLIB 访问 YouTube 的速度太快了,他们的服务器一定是限制了我的速度,我实现了 5-15 秒的计时器,并得到了不同的结果。我在每个视频之间播放了 15 秒,并且能够获取每个页面标题。现在允许您使用我一无所知的 youtube API,但也许通过其 API 对 youtube 数据的调用也会以某种方式受到限制?我只是在这里吐槽,很抱歉将其作为答案发布,但我似乎找不到评论按钮!
编辑 - 为了尝试让这看起来更像是一个答案,请尝试利用时间模块在 API 调用之间休眠。
while 0 == 0
likeVideo(youtube, video_id)
time.sleep(15)
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助,或者至少对其他人有所帮助。祝你好运!
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |