Advertisement
MizunoBrasil

Backup de Arquivos JPG e PNG ver. 4

May 2nd, 2024
468
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.86 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import filedialog, messagebox
  3. import os
  4. import shutil
  5. import threading
  6. import win32gui
  7. import win32con
  8.  
  9. def esconder_janela_terminal():
  10.     janela_terminal = win32gui.GetForegroundWindow()
  11.     win32gui.ShowWindow(janela_terminal, win32con.SW_MINIMIZE)
  12.  
  13. def copiar_arquivos(origem, destino, tipos_arquivos):
  14.     esconder_janela_terminal()
  15.    
  16.     if not origem:
  17.         return
  18.    
  19.     if not os.path.exists(destino):
  20.         os.makedirs(destino)
  21.    
  22.     def copiar():
  23.         for arquivo in os.listdir(origem):
  24.             caminho_arquivo = os.path.join(origem, arquivo)
  25.             if os.path.isfile(caminho_arquivo):  # Verifica se é um arquivo
  26.                 if tipos_arquivos == "Imagens" and (arquivo.endswith(".jpg") or arquivo.endswith(".png") or arquivo.endswith(".webp")):
  27.                     copiar_arquivo(caminho_arquivo, destino)
  28.                 elif tipos_arquivos == "Vídeos" and (arquivo.endswith(".mp4") or arquivo.endswith(".avi") or arquivo.endswith(".mkv") or arquivo.endswith(".webm") or arquivo.endswith(".mov")):
  29.                     copiar_arquivo(caminho_arquivo, destino)
  30.                 elif tipos_arquivos == "Todos":
  31.                     copiar_arquivo(caminho_arquivo, destino)
  32.                        
  33.         messagebox.showinfo("Sucesso", "Os arquivos foram copiados com sucesso.")
  34.    
  35.     thread = threading.Thread(target=copiar)
  36.     thread.start()
  37.  
  38. def copiar_arquivo(origem, destino):
  39.     shutil.copy(origem, destino)
  40.  
  41. def selecionar_destino():
  42.     destino = filedialog.askdirectory(title="Selecione a pasta de destino")
  43.     if destino:
  44.         salvar_caminho(destino)
  45.         texto_caminho.config(text="Caminho de Destino: " + destino)
  46.  
  47. def copiar_usando_caminho_salvo():
  48.     caminho_destino = carregar_caminho()
  49.     origem = filedialog.askdirectory(title="Selecione a pasta de origem")
  50.     if origem:
  51.         tipos_arquivos = var_tipo_arquivos.get()
  52.         copiar_arquivos(origem, caminho_destino, tipos_arquivos)
  53.  
  54. def salvar_caminho(caminho):
  55.     with open("caminho_destino.txt", "w") as arquivo:
  56.         arquivo.write(caminho)
  57.  
  58. def carregar_caminho():
  59.     if os.path.exists("caminho_destino.txt"):
  60.         with open("caminho_destino.txt", "r") as arquivo:
  61.             return arquivo.read().strip()
  62.     return ""
  63.  
  64. def abrir_explorador():
  65.     caminho = carregar_caminho()
  66.     if not caminho or not os.path.exists(caminho):
  67.         caminho = os.getcwd()  # Diretório atual
  68.     os.startfile(caminho)
  69.  
  70. janela = tk.Tk()
  71. janela.title("Backup de Arquivos - ver.4")
  72.  
  73. largura = 400
  74. altura = 300
  75. largura_tela = janela.winfo_screenwidth()
  76. altura_tela = janela.winfo_screenheight()
  77. x = (largura_tela/2) - (largura/2)
  78. y = (altura_tela/2) - (altura/2)
  79. janela.geometry('%dx%d+%d+%d' % (largura, altura, x, y))
  80.  
  81. botao_destino = tk.Button(janela, text="Selecionar Destino", command=selecionar_destino)
  82. botao_destino.pack(pady=10)
  83.  
  84. var_tipo_arquivos = tk.StringVar()
  85. var_tipo_arquivos.set("Todos")
  86.  
  87. frame_tipos_arquivos = tk.LabelFrame(janela, text="Tipos de Arquivos")
  88. frame_tipos_arquivos.pack(pady=10)
  89.  
  90. tk.Radiobutton(frame_tipos_arquivos, text="Imagens", variable=var_tipo_arquivos, value="Imagens").pack(anchor=tk.W)
  91. tk.Radiobutton(frame_tipos_arquivos, text="Vídeos", variable=var_tipo_arquivos, value="Vídeos").pack(anchor=tk.W)
  92. tk.Radiobutton(frame_tipos_arquivos, text="Todos", variable=var_tipo_arquivos, value="Todos").pack(anchor=tk.W)
  93.  
  94. botao_copiar = tk.Button(janela, text="Selecionar pasta de origem", command=copiar_usando_caminho_salvo)
  95. botao_copiar.pack(pady=10)
  96.  
  97. botao_info = tk.Button(janela, text="Abrir pasta de Destino", command=abrir_explorador, justify=tk.LEFT, fg="blue", cursor="hand2")
  98. botao_info.pack(pady=10)
  99.  
  100. texto_caminho = tk.Label(janela, text="Caminho de Destino: " + carregar_caminho(), justify=tk.LEFT)
  101. texto_caminho.pack(pady=10)
  102.  
  103. janela.mainloop()
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement