Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import PySimpleGUI as sg
- import subprocess
- import ctypes
- import json
- import webbrowser
- import os
- import sys
- # Obtém o identificador da janela do console
- hwnd = ctypes.windll.kernel32.GetConsoleWindow()
- # Oculta a janela do console
- ctypes.windll.user32.ShowWindow(hwnd, 0) # 0 representa o comando para ocultar a janela
- # Caminho padrão da pasta de destino
- DEFAULT_DESTINATION_PATH = ""
- def save_destination_path(destination_path):
- # Salva o caminho da pasta de destino em um arquivo JSON
- with open("destination_path.json", "w") as file:
- json.dump({"destination_path": destination_path}, file)
- def load_destination_path():
- # Carrega o caminho da pasta de destino do arquivo JSON
- try:
- with open("destination_path.json", "r") as file:
- data = json.load(file)
- return data["destination_path"]
- except FileNotFoundError:
- return DEFAULT_DESTINATION_PATH
- def configure_destination_folder():
- # Abre uma janela de diálogo para escolher a pasta de destino
- folder_selected = sg.popup_get_folder("Escolha a pasta de destino")
- if folder_selected:
- save_destination_path(folder_selected)
- destination_path = load_destination_path()
- window["-DESTINATION-"].update("" + destination_path)
- sg.popup("Configuração de Pasta", "A pasta de destino foi configurada com sucesso.")
- def open_destination_folder():
- # Abre a pasta de destino configurada usando o Windows Explorer
- destination_path = load_destination_path()
- if destination_path:
- webbrowser.open(destination_path)
- def convert_to_mp3(file_path):
- try:
- # Obtém o caminho da pasta de destino configurada
- destination_path = load_destination_path()
- # Obtém o nome do arquivo sem a extensão
- file_name = os.path.splitext(os.path.basename(file_path))[0]
- # Define o caminho de saída para o arquivo MP3
- mp3_output_path = os.path.join(destination_path, f"{file_name}.mp3")
- # Executa o comando ffmpeg para extrair a faixa de áudio e convertê-la para MP3
- comando = ['ffmpeg', '-i', file_path, mp3_output_path]
- subprocess.call(comando)
- # Exibe uma mensagem de sucesso
- sg.popup("Conversão Concluída", "Arquivo convertido para MP3 com sucesso.")
- except Exception as e:
- sg.popup_error("Erro", str(e))
- def download_video(video_url):
- if not video_url:
- sg.popup("Aviso", "Por favor, informe a URL do vídeo do YouTube.")
- return
- try:
- # Carrega o caminho da pasta de destino
- destination_path = load_destination_path()
- if destination_path:
- # Executa o comando do yt-dlp para baixar o vídeo com o caminho da pasta de destino configurado
- comando = ['yt-dlp', '--output', os.path.join(destination_path, '%(title)s.%(ext)s'), video_url]
- subprocess.call(comando)
- # Exibe a mensagem de sucesso
- sg.popup("Download Concluído", "O vídeo foi baixado com sucesso.")
- else:
- sg.popup_warning("Aviso", "Nenhuma pasta de destino configurada.")
- except Exception as e:
- sg.popup_error("Erro", str(e))
- def rename_mp4(file_path):
- try:
- file_name = os.path.splitext(file_path)[0]
- new_file_name = file_name + ".mp4"
- os.rename(file_path, new_file_name)
- sg.popup("Sucesso", "Arquivo renomeado para MP4 com sucesso.")
- except Exception as e:
- sg.popup_error("Erro", str(e))
- # Cria a interface gráfica
- sg.theme("Default1")
- # Obtem o caminho da pasta de destino atual
- destination_path = load_destination_path()
- layout = [
- [sg.Text("Informe a URL do vídeo: (Youtube, PornHub, Xvideos)")],
- [sg.InputText(size=(80, 1), key="-URL-"), sg.Button("Baixar vídeo")],
- [sg.Button("Configurar Pasta de Destino"), sg.Text("", key="-LABEL-", text_color="black"),
- sg.Text(destination_path, key="-DESTINATION-", enable_events=True, tooltip="Clique para abrir a pasta", text_color="blue")],
- [sg.Button("Converter para MP3"), sg.Button("Renomear para MP4")]
- ]
- window = sg.Window("Vídeo Downloader", layout, finalize=True)
- # Verifica se o arquivo JSON existe e carrega o caminho da pasta de destino se existir
- if os.path.isfile("destination_path.json"):
- destination_path = load_destination_path()
- window["-DESTINATION-"].update("" + destination_path)
- # Loop principal do programa
- while True:
- event, values = window.read()
- if event == sg.WINDOW_CLOSED:
- break
- elif event == "Baixar vídeo":
- video_url = values["-URL-"]
- download_video(video_url)
- elif event == "Configurar Pasta de Destino":
- configure_destination_folder()
- elif event == "Converter para MP3":
- file_path = sg.popup_get_file("Selecione um arquivo de vídeo para converter para MP3", file_types=(("Arquivos de Vídeo", "*.mkv *.webm"),))
- if file_path:
- convert_to_mp3(file_path)
- elif event == "Renomear para MP4":
- file_path = sg.popup_get_file("Selecione um arquivo de vídeo para renomear para MP4", file_types=(("Arquivos de Vídeo", "*.mkv *.webm"),))
- if file_path:
- rename_mp4(file_path)
- elif event == "-DESTINATION-": # Callback para o evento de clique na label
- open_destination_folder()
- window.close()
Add Comment
Please, Sign In to add comment