【问题标题】:Python: Youtube DATA API refresh playlist in loopPython:Youtube DATA API循环刷新播放列表
【发布时间】:2020-03-09 16:36:36
【问题描述】:

我的 YouTube 数据 API 有问题。我有一个循环,它从播放列表中获取一个 videoid 下载此视频并将其从播放列表中删除。 但是在下一个循环中,程序要下载相同的视频,因为再次执行的列表返回,视频没有被删除(但实际上是)。 有什么方法可以刷新播放列表,而无需每次循环都进行 OAuth?

while True:
    request = youtube.playlistItems().list(
        part="contentDetails",
        maxResults=1,
        playlistId="myPlaylistksdjfksjdfks"
    )
    response = request.execute()
    test = response['items']
    test2 = test[0]
    idvid = test2['id']
    test3 = test2['contentDetails']
    videoid = test3['videoId']

    videourl = 'https://www.youtube.com/watch?v=' + videoid

    ydl_opts = {
        'format': 'bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
    }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([videourl])

    delquest = youtube.playlistItems().delete(
            id=idvid
        )
    delquest.execute()

希望有人能帮忙

【问题讨论】:

  • 欢迎来到 StackOverflow。发布代码时,将其粘贴到编辑窗口中,选择它,然后单击{} 小部件将其呈现为代码。

标签: python loops youtube youtube-data-api


【解决方案1】:

也许您需要在删除条目和下一个查询之间留出时间。

与其一次要求一个,不如要求一个更大的数字,然后循环遍历所有生成的视频 ID。然后稍等片刻,让系统有时间响应,然后再去。

另外,为了避免重击服务器,只要 playlistitems 查询返回零条目,请在再次检查之前休眠一段时间(例如,至少 60 秒。)

【讨论】:

  • 我如何在没有用户交互的情况下重复 oAuth?以后应该是我的 raspi 上的机器人......我没有在 python 中找到这样做的方法
  • 无论如何您都必须弄清楚这一点,因为身份验证会超时。但很抱歉,我不知道答案。我也觉得奇怪的是,如果没有新的 OAuth,结果不会改变。更有可能的是,您需要给删除时间,我会相应地调整我的答案。
猜你喜欢
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
相关资源
最近更新 更多