如何通过验证视频ID来防止youtubedl中出现“HTTPS不支持”错误?

2024-04-28 07:40:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pafy模块检索youtube视频音频的url。 Pafy本身使用youtube dl模块连接到youtube。 视频Id在url部分:'/watch?v=视频ID'

我存储了这些视频的videoId,但有时一个视频不再可用,因此我需要进行检查。 我试图实施的检查未能捕捉到一些边缘情况,比如我国对这段视频的版权禁令。在

我已经试过两件事了。 使用youtube oEmbed API和youtube官方API。在

import requests


YT_API_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

answers = []
answers2 = []

def isValidVid(vId):

    add = f'https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v={str(vId)}'
    answer = requests.get(add)

    answers.append(answer)

    state = answer.ok
    if not state:
        print(f'{vId} has become invalid ')
    return state



def isValidVid2(vId):

    add = f'https://www.googleapis.com/youtube/v3/videos?part=id&id={vId}&key={YT_API_KEY}'
    answer = requests.get(add)

    answers2.append(answer)

    state = answer.ok
    if not state:
        print(f'{vId} has become invalid ')
    return state

vIds=['x26LZrX_vuI', #copyright blocked in my country
    'tRqCOIsTx8M', #works fine
    ]

for vid in vIds:
    isValidVid(vid)
    isValidVid2(vid)

for a,b in zip(answers,answers2):
    print(a.content.split(','),'\n')
    print(b.content.split(','),'\n'*2)

运行此截取的结果将得到以下输出(抱歉,看起来很难看):

^{pr2}$

如果我在使用validationfunctions之后使用pafy来检索音频资源的url,那么在使用youtube dl时会出现一个错误,我认为这与提供无效视频Id时会出现的错误相同:

mrl = pafy.new(vIds[0]).url

OSError: ERROR: HTTP is not supported.

我想有更多的陷阱比版权禁令,如私人视频,如果你有一些技巧,我正在听!在

谢谢你的帮助!在


Tags: answerhttpsaddapiurl视频youtubewww