我不知道这里有什么问题,它只接受 if 语句中的第一个条件,如果我输入 480p 或 720p,它会向我打印“无效选择”,如果您能找到这让我发疯的问题。我正在尝试制作一个可以解决我遇到的日常问题的小项目,即从 youtube 下载视频,我知道有很多与此类似的代码,但我只阅读了库文档并花时间来制作它不看任何指南。
from pytube import *
import ffmpeg
userurl = (input("Enter a youtube video URL : "))
q = str(input("Which quality you want ? 360p,480p,720p,1080p,4K,Flh :")).lower
yt = YouTube(userurl)
print ("Title of the video : ",yt.title)
def hd1080p():
global q
print(yt.streams.filter(mime_type="video/mp4", res="1080p", adaptive = True, fps = 60))
v = yt.streams.get_highest_resolution()
print("Downloading HD 1080p video")
v.download()
print("Video downloaded")
return
def hd720p():
global q
print(yt.streams.filter(file_extension= 'mp4',res="720p", progressive=True, fps = 60))
yd= yt.streams.get_highest_resolution()
print("Downloading HD 720p video")
yd.download()
print("Finished.")
return
def l480p():
global q
print(yt.streams.filter(file_extension= 'mp4',res="480p", progressive=True, fps = 60))
yd= yt.streams.get_highest_resolution()
print("Downloading 480p video")
yd.download()
print("Finished.")
return
def l360p():
global q
print(yt.streams.filter(file_extension= 'mp4',res="360p", progressive=True,fps = 60))
yd= yt.streams.get_highest_resolution()
print("Downloading 360p video")
yd.download()
print("Finished.")
return
def hd4k():
global q
print(yt.streams.filter(mime_type="video/mp4", res="2160p", adaptive = True))
v = yt.streams.get_highest_resolution()
print("Downloading 4k video")
v.download()
print("Video downloaded")
return
if q == "1080" or q == "1080p":
hd1080p()
elif q == "720" or q == "720p":
hd720p()
elif q == "480" or q == "480p":
l480p()
elif q == "360" or q == "360p":
l360p()
elif q == "4" or q == "4k":
hd4k()
else:
print("invalid choice")
""" yt.streams.filter(mime_type="audio")
a = yt.streams.get_audio_only()
print("Downloading audio")
a.download()
print("audio downloaded")"""
答案 0 :(得分:1)
我忘记调用方法 q.lower(),我调用它时没有带括号。 感谢@Chris Doyle