尝试从youtube-dl
包中导入Youtube签名解密功能,但无法使用它,如下面的代码所示:
import youtube_dl.extractor.youtube
video_id = 'HRfNqYoO9EU'
player_url="https://www.youtube.com/yts/jsbin/player_ias-vfl49f_g4/en_US/base.js"
unsig= 'ALgxI2wwRgIhAN3cG9UXPZSyZcwx2fTOFvbKT_5CAb475HUHuTjSjOw-AiEAjaY1JtcKuHMQkHyCt5cKGBqazj7mpR4EQ1nwGYvhkEc='
signature = youtube_dl.extractor.youtube._decrypt_signature(unsig, video_id, player_url)
print signature
尝试了多种导入和引用模块的方法,但没有一种:(
以上代码错误:AttributeError: 'module' object has no attribute '_decrypt_signature'
答案 0 :(得分:0)
您所指的是类YoutubeIE的方法
您必须先导入它,创建一个实例,然后再调用它,但是作为@rdas statet,以_开头的方法通常是内部方法,这些方法可能会在软件包的更高版本中更改,并且调用时也可能不安全。 但是,如果没有其他方法,您可以从以下代码开始:
from youtube_dl.extractor.youtube import YoutubeIE
import youtube_dl.extractor.youtube as yt
help(yt)
yt=YoutubeIE()
video_id = 'HRfNqYoO9EU'
player_url="https://www.youtube.com/yts/jsbin/player_ias-vfl49f_g4/en_US/base.js"
unsig= 'ALgxI2wwRgIhAN3cG9UXPZSyZcwx2fTOFvbKT_5CAb475HUHuTjSjOw-AiEAjaY1JtcKuHMQkHyCt5cKGBqazj7mpR4EQ1nwGYvhkEc='
signature = yt._decrypt_signature(unsig, video_id, player_url)
print(signature)
您可以用这种方式调用方法,但是代码失败,因为“ _downloader”实例变量的设置不正确。因此,通常它会调用该方法,但您必须弄清楚如何正确初始化该对象。 init ()方法的注释建议,您可以直接在yt = YoutubeIE()行中传递下载程序对象。