Advertisement
MizunoBrasil

Backup de Arquivos JPG e PNG ver. 3

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