Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- from tkinter import filedialog, messagebox
- import pytube
- import ctypes
- from tkinter.ttk import Combobox
- # Função para minimizar a janela do terminal
- def minimize_window():
- # Obtém o identificador da janela do terminal
- hwnd = ctypes.windll.kernel32.GetConsoleWindow()
- # Minimiza a janela do terminal
- ctypes.windll.user32.ShowWindow(hwnd, 6) # 6 representa o comando para minimizar a janela
- # Exibe mensagem informando que o programa está sendo executado
- print("O programa está sendo executado. A janela do terminal foi minimizada.")
- # Minimiza a janela do terminal
- minimize_window()
- def download_video():
- # Obtém a URL digitada na caixa de texto
- video_url = entry.get()
- # Verifica se o campo de texto está vazio
- if not video_url:
- messagebox.showwarning("Aviso", "Por favor, informe a URL do vídeo do YouTube.")
- return
- try:
- # Cria um objeto 'YouTube' com a URL do vídeo
- youtube = pytube.YouTube(video_url)
- # Obtém todas as resoluções disponíveis para o vídeo
- resolutions = [stream.resolution for stream in youtube.streams.filter(progressive=True).order_by('resolution')]
- # Verifica se existem resoluções disponíveis
- if not resolutions:
- messagebox.showwarning("Aviso", "Não há resoluções disponíveis para o vídeo.")
- return
- # Função para iniciar o download com a resolução selecionada
- def download_selected_resolution():
- selected_resolution = resolution_var.get()
- # Verifica se uma resolução foi selecionada
- if not selected_resolution:
- messagebox.showwarning("Aviso", "Por favor, selecione uma resolução.")
- return
- # Obtém o objeto de stream para a resolução selecionada
- video = youtube.streams.filter(progressive=True, resolution=selected_resolution).first()
- # Abre uma janela de diálogo para escolher a pasta de destino
- folder_selected = filedialog.askdirectory()
- if folder_selected:
- try:
- # Define o diretório de destino para o download
- video.download(folder_selected)
- # Exibe a mensagem no console
- print("O vídeo foi baixado com sucesso.")
- # Exibe a mensagem em uma caixa de diálogo
- messagebox.showinfo("Download Concluído", "O vídeo foi baixado com sucesso.")
- # Limpa a caixa de texto e posiciona o cursor nela
- entry.delete(0, tk.END)
- entry.focus()
- # Fecha a janela de seleção de resolução
- resolution_window.destroy()
- except Exception as e:
- messagebox.showerror("Erro", str(e))
- else:
- messagebox.showwarning("Aviso", "Nenhuma pasta selecionada.")
- # Cria a janela de seleção de resolução
- resolution_window = tk.Toplevel(window)
- resolution_window.title("Escolha a resolução")
- resolution_window.geometry("300x150")
- resolution_window.withdraw() # Inicia a janela em modo oculto
- resolution_window.transient(window) # Torna a janela filha da janela principal
- resolution_window.grab_set() # Captura o foco da janela
- # Centraliza a janela no meio da tela
- resolution_window.update_idletasks()
- width = resolution_window.winfo_width()
- height = resolution_window.winfo_height()
- x = (resolution_window.winfo_screenwidth() // 2) - (width // 2)
- y = (resolution_window.winfo_screenheight() // 2) - (height // 2)
- resolution_window.geometry(f"{width}x{height}+{x}+{y}")
- resolution_window.deiconify() # Exibe a janela
- # Cria o rótulo "Escolha a resolução:"
- label = tk.Label(resolution_window, text="Escolha a resolução:")
- label.pack(pady=10)
- # Cria o combobox com as resoluções disponíveis
- resolution_var = tk.StringVar()
- combobox = Combobox(resolution_window, textvariable=resolution_var, values=resolutions)
- combobox.pack(pady=5)
- # Cria o botão de download na janela de seleção de resolução
- download_button = tk.Button(resolution_window, text="Baixar vídeo", command=download_selected_resolution)
- download_button.pack(pady=5)
- except pytube.exceptions.PytubeError as e:
- messagebox.showerror("Erro", str(e))
- def show_context_menu(event):
- # Exibe o menu de contexto do Windows com a opção "Colar"
- menu.post(event.x_root, event.y_root)
- # Cria a janela principal
- window = tk.Tk()
- # Define o título da janela
- window.title("Youtube Vídeo Downloader")
- # Define o tamanho da janela
- window.geometry("600x100")
- # Centraliza a janela no meio da tela
- window.eval('tk::PlaceWindow . center')
- # Cria o rótulo "Informe a URL do vídeo:"
- label = tk.Label(window, text="Informe a URL do vídeo:")
- label.grid(row=0, column=0, sticky="w", padx=10, pady=10) # Posiciona na primeira linha, primeira coluna (canto superior esquerdo), alinhado à esquerda, com margem de 10 pixels
- # Cria a caixa de texto
- entry = tk.Entry(window, width=80)
- entry.grid(row=1, column=0, padx=10, pady=10) # Posiciona na segunda linha, primeira coluna (canto superior esquerdo), com margem de 10 pixels à esquerda
- # Associa o evento de clique com botão direito do mouse à função do menu de contexto
- entry.bind("<Button-3>", show_context_menu)
- # Cria o menu de contexto do Windows
- menu = tk.Menu(entry, tearoff=False)
- menu.add_command(label="Colar", command=lambda: entry.event_generate("<<Paste>>"))
- # Cria o botão de download
- button = tk.Button(window, text="Baixar vídeo", command=download_video)
- button.grid(row=1, column=1, padx=5, pady=10) # Posiciona na segunda linha, segunda coluna (canto superior direito), com margem de 10 pixels à direita
- # Inicia o loop principal da janela
- window.mainloop()
Add Comment
Please, Sign In to add comment