Python-youtube dl每次强制登录
我想使用youtube dl从需要登录的站点下载多个文件 我遇到的问题是,youtube dl登录第一个视频时没有问题,但不会再次登录下一个视频 每次调用函数时,如何强制youtube dl登录每个视频?可能会重置,每次都停止youtube dlPython-youtube dl每次强制登录,python,youtube-dl,Python,Youtube Dl,我想使用youtube dl从需要登录的站点下载多个文件 我遇到的问题是,youtube dl登录第一个视频时没有问题,但不会再次登录下一个视频 每次调用函数时,如何强制youtube dl登录每个视频?可能会重置,每次都停止youtube dl def video_download(path, url): ydl = youtube_dl.YoutubeDL( { 'outtmpl': path + '.mp4',
def video_download(path, url):
ydl = youtube_dl.YoutubeDL(
{
'outtmpl': path + '.mp4',
'format': 'bestvideo+bestaudio/best',
'username': email,
'password': password,
# 'quiet': True
})
with ydl:
ydl.download([url])
time.sleep(45)
该函数实际上是在循环中调用的,因为我为每个文件/视频设置了tmpl
不同的实例,第一个正在工作,下一个不再登录。
我需要每次登录都要重复
<youtube_dl.YoutubeDL.YoutubeDL object at 0x0000000004E74C18>
<youtube_dl.YoutubeDL.YoutubeDL object at 0x00000000032BED68>
WARNING: Unable to download kaltura session JSON: HTTP Error 401: UNAUTHORIZED
<youtube_dl.YoutubeDL.YoutubeDL object at 0x0000000004D6D898>
WARNING: Unable to download kaltura session JSON: HTTP Error 401: UNAUTHORIZED
Terminal/Output:
<youtube_dl.YoutubeDL.YoutubeDL object at 0x00000000050E4C18>
**[safari] Downloading login form
[safari] Login successful**
[safari] 9781787283664/video1_1: Downloading webpage
.............................
<youtube_dl.YoutubeDL.YoutubeDL object at 0x000000000337DD68>
[safari] 9781787283664/video1_2: Downloading webpage
[safari] 9781787283664/video1_2: Downloading kaltura session JSON
WARNING: Unable to download kaltura session JSON: HTTP Error 401: UNAUTHORIZED
我假设,由于您需要多个视频,您的URL参数将以列表的形式出现,例如['url1','url2','url3']。如果是这种情况,您应该能够使用for循环在每个元素上循环,并在每个元素上调用download函数
def video_download(path, url):
ydl = youtube_dl.YoutubeDL(
{
'outtmpl': path + '.mp4',
'format': 'bestvideo+bestaudio/best',
'username': email,
'password': password,
'cachedir': False,
'noplaylist': True
# 'quiet': True
})
for i in url:
ydl.download(i)
我使用的这个工具还有一个命令行版本,非常方便 为什么不使用命令行 您可以对文件名和文件夹位置进行个性化设置,并确保每次运行
youtube dl
命令时都会进行身份验证(如果给定了-u
和-p
参数)
尝试以下方法:
import os
def video_download(path="c:\\mydir\\myfile", url="http://myvideo./url"):
#user information
user="myuser"
pwd="mypwd"
#build cmd line
cmd="youtube-dl -u "+user+" -p "+pwd+' -o "'+path+'" '+url
#execute commande line
os.system(cmd)
[...]
您提供的链接是播放列表链接?不。我只想从注册站点一个接一个地下载文件(设置位置和标题),但youtube dl只记录第一个文件,不记录其他文件;因此,我收到以下文件的授权error@user3541631嗨,请查一下我的最新消息answer@user3541631,请添加“windows”标记该函数实际上是在循环中调用的,因为我为每个文件/视频设置了TMPL。请注意,我有path和url作为参数,所以我不需要使用I。请参见上文“我更新了问题”。@A Stefani请参见我更新的问题和CMD的问题在引用文件名时是否尝试使用双引号字符(“)而不是简单引号(”)字符,在windows下执行代码时,还需要转义所有(\)在filename path…Filepath之前:“D:\DevProj\DownloadCourses\Safari\…”变为“D:\\DevProj\\DownloadCourses\\Safari\\…”,这是windows下文件名的最佳方法:诀窍是使用前斜杠输入所有文件名字符串,然后让os.path.normpath()将其更改为反斜杠。
import os
def video_download(path="c:\\mydir\\myfile", url="http://myvideo./url"):
#user information
user="myuser"
pwd="mypwd"
#build cmd line
cmd="youtube-dl -u "+user+" -p "+pwd+' -o "'+path+'" '+url
#execute commande line
os.system(cmd)
[...]