youtube-dl不会报告正确的下载文件

时间:2015-05-05 20:01:47

标签: python youtube youtube-dl

我在Python程序中使用youtube-dl作为模块而不是命令行。它工作得很好,除非我下载(具有讽刺意味)一些YouTube视频 - 特别是那些音频被编码为视频的单独文件的视频。基本上,我需要最终文件的名称,但是在重新复制之前我得到了两个文件的名称。根据youtube-dl文档,您可以使用hooks获取最终文件名:

filename:最终文件名(始终存在)

tmpfilename:我们当前正在写入

的文件名

似乎'文件名'应该为我提供从下载和组合的音频和视频创建的文件的名称。但它没有那样做。

这是我的代码:

def my_hook(d):
    if d['status'] == 'finished':
    print "\nYour video has been downloaded!"
    filelocation = d['filename']
    print filelocation

def download_video(url, archival_location, asset):
    global mountpoint

    # Put Location and filename to save in a variable
    destination = archival_location + asset + ".%(ext)s"
    # options for youtubedl
    ydl_opts = {
        'logger' : MyLogger(),
        'progress_hooks': [my_hook],
        'outtmpl' : destination
    }
    try:
        # Lets download it now
        with YoutubeDL(ydl_opts) as ydl:
            ydl.download([url])
            print ""
    except:
        print "Error with downloader. Most likely Unsupported URL"
        #check and see if we mounted a drive
        if mounted:
            unmount(mountpoint)
        # Exit the program           
        exit()

该计划还有更多内容,但这是相关的一点。以下是从YouTube下载视频时的输出:

  

您的视频已下载!   /Volumes/RR261-GOING-POSTAL_1/RR261_Archival_Footage/RR261_A999_Erase_Please.f243.webm

     

您的视频已下载!   /Volumes/RR261-GOING-POSTAL_1/RR261_Archival_Footage/RR261_A999_Erase_Please.f141.m4a

现在我的程序会失败,因为变量filelocation指向m4a文件,一旦ffmpeg完成它就会消失。如何让youtube-dl报告最终文件?或者我是以错误的方式来做这件事的?有没有其他方法来获取ffmpeg创建的路径和文件名?我的程序没有调用ffmpeg,youtube-dl模块会这样做,而且我也不知道它在stdout中做了什么。

0 个答案:

没有答案