📅  最后修改于: 2023-12-03 15:07:06.093000             🧑  作者: Mango
这个 Python 程序是一个 tkinter YT 下载器,它不仅支持下载 YT 视频,还可以选择具体的分辨率。以下是该程序的一些特点:
在开始使用该程序之前,请确保您已经安装了以下软件:
启动程序的方法如下:
python downloader.py
这将启动程序并打开 GUI 界面,您可以在此界面中进行视频下载。
该程序非常简单易用。
以下是下载器的主要代码:
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 下载器。如果您有任何技术问题或其他问题,请随时与我联系,我很乐意为您提供帮助!