我正在尝试做一个程序来下载带有 pytube 的播放列表的视频,但它不起作用

时间:2021-01-20 19:23:42

标签: python pytube

我正在尝试编写一个从 youtube 下载播放列表视频的程序,这是该程序:

from pytube import Playlist
from pytube import YouTube



playlist = Playlist('https://www.youtube.com/playlist?list=PLZ1u221jNfYGCxHU4RbChwG60X-_nq8HK')
print('Number of videos in playlist: %s' % len(playlist.video_urls))
for video_url in playlist.video_urls:
f = open (r'D:\Nueva carpeta (4)\lista_viejas.txt','a')
f.write("\n")
f.write(str(video_url))

f.close()

with open(r'D:\Nueva carpeta (4)\lista_viejas.txt', 'r') as file1:
with open(r'D:\Nueva carpeta (4)\lista_viejass.txt', 'r') as file2:
    with open (r'D:\Nueva carpeta (4)\output.txt', "w") as out_file:
        f2_lines = set(file2)
        for line in file1:
            if line not in f2_lines:
                
                yt = YouTube(str(line))
                video = yt.streams.first()
                video.download(r'D:\Nueva carpeta (4)')
                
                out_file.write(line)
                f2_lines.add(line)
                

我不知道为什么会在这部分出现此错误:

Exception has occurred: RegexMatchError
regex_search: could not find match for (?:v=|\/)([0-9A-Za-z_-]{11}).*
File "C:\Users\Andres\Desktop\Untitled-1.py", line 22, in <module>
yt = YouTube(str(line))



yt = YouTube(str(line))
                video = yt.streams.first()
                video.download(r'D:\Nueva carpeta (4)')
                

如果我将参数“line”更改为 line_prove=input(),它会起作用。

1 个答案:

答案 0 :(得分:0)

好吧,我不知道为什么,但我试着用另一种方式写它,我刚刚添加了它的修复

    YouTube(line).streams.first().download(r'D:\Nueva carpeta (4)'