python if else 语句只返回第一个条件

时间:2021-01-21 18:40:22

标签: python

我不知道这里有什么问题,它只接受 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")"""

1 个答案:

答案 0 :(得分:1)

我忘记调用方法 q.lower(),我调用它时没有带括号。 感谢@Chris Doyle