从导入的python包调用函数的正确方法?

2024-04-26 18:15:39 发布

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

正在尝试从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

尝试了多种导入和引用模块的方法,但都没有成功:(

下面是相关文件-https://github.com/ytdl-org/youtube-dl/blob/695720ebe81166b3ee249eb3916e3c7819ef57a8/youtube_dl/extractor/youtube.py#L2005-L2006

以上代码错误:AttributeError: 'module' object has no attribute '_decrypt_signature'


Tags: 函数代码httpscomidurlyoutubevideo
1条回答
网友
1楼 · 发布于 2024-04-26 18:15:39

你所指的是YoutubeIE类的方法

您必须导入它,创建一个实例,然后调用它,但是作为@rdas statet,以u开头的方法通常是内部方法,这些方法在包的更高版本中可能会更改,调用也可能不安全。 但如果没有其他方法,可以从以下代码开始:

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)

您可以这样调用该方法,但代码失败,因为“\u downloader”实例变量设置不正确。所以一般来说,它调用方法,但你必须弄清楚,如何正确初始化对象。init()方法的注释表明,可以在yt=YoutubeIE()行中直接传递downloader对象。你知道吗

相关问题 更多 >