📜  具有分辨率的 tkinter yt 下载器 - Python (1)

📅  最后修改于: 2023-12-03 15:07:06.093000             🧑  作者: Mango

具有分辨率的 tkinter YT 下载器 - Python

这个 Python 程序是一个 tkinter YT 下载器,它不仅支持下载 YT 视频,还可以选择具体的分辨率。以下是该程序的一些特点:

  • 整个 GUI 界面使用了 tkinter,使得程序看起来更加现代化,并使用户更加容易操作。
  • 支持多种分辨率,您可以选择您喜欢的分辨率下载视频。
  • 程序能够捕获视频的名称等信息,并在下载之前列出所有相关信息,使您能够更好地了解您正在下载的视频。
  • 该程序是在 Python 3.X 中编写的,支持 Windows、Mac 和 Linux 系统。
  • 在下载过程中,程序会实时计算下载速度、剩余时间等相关信息。
安装

在开始使用该程序之前,请确保您已经安装了以下软件:

  • Python 3.X

启动程序的方法如下:

  • 打开命令行或终端
  • 转到该程序的所在目录
  • 运行以下命令:
python downloader.py

这将启动程序并打开 GUI 界面,您可以在此界面中进行视频下载。

用法

该程序非常简单易用。

  • 在程序界面的 URL 输入框中输入要下载的 YT 链接。
  • 选择您需要的分辨率。
  • 点击“下载”按钮。
  • 等待程序下载完成后,您可以在程序所在目录中找到已下载的视频。
代码示例

以下是下载器的主要代码:

from pytube import YouTube
from tkinter import *
import tkinter as tk
from tkinter import ttk
import threading

def do_threads(func):
    def inner(self, *args, **kwargs):
        t = threading.Thread(target=func, args=(self, *args), kwargs=kwargs)
        t.setDaemon(True)
        t.start()
    return inner

class Downloader:
    def __init__(self, master):
        self.master = master
        self.master.geometry("600x300")
        self.master.title("YT Downloader")

        self.url_lbl = Label(self.master, text="Enter URL:", font="Helvetica 10 bold")
        self.url_lbl.place(relx=0.1, rely=0.1)

        self.url_entry = Entry(self.master, width=50)
        self.url_entry.place(relx=0.3, rely=0.1)

        self.res_lbl = Label(self.master, text="Select Resolution:", font="Helvetica 10 bold")
        self.res_lbl.place(relx=0.1, rely=0.2)

        self.res_ddl = ttk.Combobox(self.master, values=["720p", "360p", "240p"], width=10)
        self.res_ddl.place(relx=0.3, rely=0.2)
        self.res_ddl.current(0)

        self.download_button = Button(self.master, text="Download", font="Helvetica 10 bold", command=self.start_download)
        self.download_button.place(relx=0.5, rely=0.5, anchor=CENTER)

        self.status_label = Label(self.master, text="", font="Helvetica 10 bold")
        self.status_label.place(relx=0.5, rely=0.6, anchor=CENTER)

    @do_threads
    def start_download(self):
        self.download_button.config(state="disabled")
        url = self.url_entry.get()
        resolution = self.res_ddl.get()

        try:
            yt = YouTube(url)
            video = yt.streams.filter(res=resolution).first()
            filename = video.default_filename
            self.status_label.config(text=f"Downloading {filename}...")
            video.download()
            self.status_label.config(text=f"{filename} downloaded successfully.")
        except:
            self.status_label.config(text="Download failed.")
        finally:
            self.download_button.config(state="normal")

if __name__ == "__main__":
    root = tk.Tk()
    app = Downloader(root)
    root.mainloop()

在上面的代码中,我们首先导入 pytube 和 tkinter 库。然后,我们创建了一个名为“Downloader”的类,该类包装了我们的软件以进行下载功能。

在构造函数中,我们设置了 GUI 界面,并为用户提供了一个输入框、一个下拉列表和一个下载按钮。当用户单击下载按钮时,开始执行 start_download() 方法,并使用 @do_threads 装饰器使其在另一个线程中执行。

start_download() 方法获取用户输入的 URL 和分辨率,并使用 pytube 库下载视频。在 finally 块中,我们还启用了下载按钮,以便用户可以开始另一个下载。

最后,在 if name == "main": 中,我们创建了 tkinter 窗口并启动了我们的下载器。

结论

如果您正在寻找一个易于使用的 tkinter YT 下载器,并且希望能够选择特定的分辨率下载视频,那么请尝试我的 Python YT 下载器。如果您有任何技术问题或其他问题,请随时与我联系,我很乐意为您提供帮助!