Python-youtube dl每次强制登录

Python-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',

我想使用youtube dl从需要登录的站点下载多个文件

我遇到的问题是,youtube dl登录第一个视频时没有问题,但不会再次登录下一个视频

每次调用函数时,如何强制youtube dl登录每个视频?可能会重置,每次都停止youtube dl

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)

    [...]