使用youtube_dl通过if和elif语句下载youtube视频

时间:2019-02-22 19:40:47

标签: python python-3.x

我希望使用if和elif语句下载带字幕或不带字幕的视频。当前只有我的第一个选项有效,尽管选择了第二个选项,但选择第二个选项时,第一个选项仍在运行。

当前,我的实现是:

import youtube_dl

def switch_demo(x):

    switcher = {

                1: "With Subtitles", 
                2: "Without Subtitles", 
    }


    return switcher.get(x,"Invalid Option")

x = int(input("Select the option\n1.With Subtitles\n2.Without Subtitles\n\n"))

print(switch_demo(x))

link=input('Please enter a url link\n')


if switch_demo(1):

    ydl_opts = {"writesubtitles": True}

    with youtube_dl.YoutubeDL(ydl_opts) as ydl:

        ydl.download([link])

elif switch_demo(2):

    ydl_opt = {}

    with youtube_dl.YoutubeDL(ydl_opt) as ydl:

        ydl.download([link])

我希望能够在两个选项都起作用的情况下下载带或不带字幕的视频。

2 个答案:

答案 0 :(得分:0)

您没有将x传递给该函数,因此您永远都不会改变结果,也就是说我已经重新编写了您的代码。

import youtube_dl

switcher = {
    1: "With Subtitles",
    2: "Without Subtitles",
    }


def switch_demo(x):
    return switcher.get(x, False)


print("Select an option")
print(*["#{} {}".format(i + 1, switcher[i + 1]) for i in range(max(switcher.keys()))], sep = "\n")
option = int(input("> "))
link = input('Please enter a url link\n')

useSubtitles = switch_demo(x)

ydl_opts = {"writesubtitles": useSubtitles}

with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([link])

答案 1 :(得分:0)

您使用函数switch_demo返回值作为条件来驱动if语句。问题是python将任何非null值视为真实语句,因此这就是您的第二选择永远无法运行的原因