问题描述
我正在尝试编写一个从 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()
,它会起作用。
解决方法
好吧,我不知道为什么,但我试着用另一种方式写它,我刚刚添加了它的修复
YouTube(line).streams.first().download(r'D:\Nueva carpeta (4)'