#! Завантажувач з Youtube
from tkinter import *
import customtkinter
from customtkinter import * # <- import the CustomTkinter module
from CTkMessagebox import CTkMessagebox
from pytube import YouTube
from pytube.cli import on_progress
from pytube.exceptions import VideoUnavailable
class YoDowloader(customtkinter.CTk):
def on_closing(self):
msg = CTkMessagebox(title="Exit?", message="Закрити програму?",
icon="question", option_1="Скасувати", option_2="Ні", option_3="Так")
if msg.get() == "Так":
self.after_cancel(self)
self.destroy()
def addType(self):
print(self.radio_var.get())
def v_prog(self, stream, chunk, toEnd):
#print(stream.filesize,"$$$$$$$$$$$")
size = (1-(toEnd/stream.filesize))*100
#print(chunk, "++++++++++++")
#print(round(size,1), "%")
self.info.configure(text=f"Завантажено: {round(size,1)} %")
self.update()
def test (self):
line = "https://www.youtube.com/watch?v=" #32
def download (self):
#print(self.project.get())
#self.info.configure(text="Завантажую...")
#if self.test() == True:
line = "https://www.youtube.com/watch?v="
link = self.project.get()
if link.startswith(line):
try:
video = YouTube (link, on_progress_callback=self.v_prog)
except VideoUnavailable:
print(f'Video is unavaialable, skipping.')
else:
Dtype = int(self.radio_var.get())
if Dtype == 2:
self.stream = video.streams.get_audio_only()
else:
self.stream = video.streams.get_highest_resolution()
self.stream.download()
self.info.configure(text="Завантаження виконано")
self.insert.delete(0, 100)
else:
CTkMessagebox(title="Помилка", message="Недійсна адреса",
icon="question", option_1="Ок")
def __init__(self):
super().__init__()
customtkinter.set_appearance_mode("System") # Modes: "System" (standard), "Dark", "Light"
self.geometry("670x150+100+100")
self.help = CTkLabel (master = self,text = 'Вставте посилання на Youtube відео')
self.help.place(x=20, y=10)
self.project = StringVar()
self.insert = CTkEntry(master = self, textvariable = self.project, width=400)
self.insert.place(x=20, y=40)
self.radio_var = IntVar(value=0)
self.radiobutton_1 = customtkinter.CTkRadioButton(self, text="Відео",
command=self.addType, variable= self.radio_var, value=1)
self.radiobutton_2 = customtkinter.CTkRadioButton(self, text="Аудіо",
command=self.addType, variable= self.radio_var, value=2)
self.radiobutton_1.place(x=450, y=40)
self.radiobutton_2.place(x=450, y=80)
self.btn5 = CTkButton(master = self, text = "Завантажити", command = self.download)
self.btn5.place(x=20, y=100)
self.info = CTkLabel (master = self, text = "")
self.info.place(x=20, y=70)
self.protocol("WM_DELETE_WINDOW",self.on_closing)
if __name__=="__main__":
yo = YoDowloader()
yo.mainloop()
Коментарі
Дописати коментар