Advertisement
MizunoBrasil

Monitora Urls e exporta para HTML

Jul 2nd, 2023
658
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.46 KB | None | 0 0
  1. from bs4 import BeautifulSoup
  2. import requests
  3. import pyautogui
  4. import time
  5. import pyperclip
  6. from pynput import mouse
  7. import tkinter as tk
  8. from tkinter import filedialog
  9. from datetime import datetime
  10. from tkinter import messagebox
  11.  
  12. # Função para iniciar a captura de URLs
  13. def iniciar_captura():
  14.     listener.start()
  15.     btn_exportar_urls.configure(state="disabled")
  16.     btn_iniciar_captura.configure(state="disabled", relief=tk.SUNKEN)  # Botão destacado
  17.     btn_parar_captura.configure(state="normal", relief=tk.RAISED)  # Botão não destacado
  18.  
  19. # Função para parar a captura de URLs
  20. def parar_captura():
  21.     listener.stop()
  22.     btn_exportar_urls.configure(state="normal")
  23.     btn_iniciar_captura.configure(state="normal", relief=tk.RAISED)  # Botão não destacado
  24.     btn_parar_captura.configure(state="disabled", relief=tk.SUNKEN)  # Botão destacado
  25.  
  26. # Função para obter o título da página
  27. def get_page_title(url):
  28.     try:
  29.         res = requests.get(url)
  30.         soup = BeautifulSoup(res.text, 'html.parser')
  31.         title = soup.title.string
  32.         return title
  33.     except Exception as e:
  34.         print(e)
  35.         return "Título não disponível"
  36.  
  37. # Função para lidar com o clique do mouse
  38. def on_click(x, y, button, pressed):
  39.     if button == mouse.Button.right and pressed:
  40.         # Copiar o endereço da web para a área de transferência
  41.         pyautogui.hotkey('ctrl', 'l')  # Selecionar a barra de endereço
  42.         pyautogui.hotkey('ctrl', 'c')  # Copiar o endereço para a área de transferência
  43.         url = pyperclip.paste()  # Obter o endereço da web da área de transferência
  44.         agora = datetime.now()  # Obter a data e hora atual
  45.         title = get_page_title(url)  # Obter o título da página
  46.         captured_urls.insert(0, (url, agora, title))  # Adicionar a URL capturada à lista
  47.         text_area.insert(tk.END, f"A URL '{url}' foi copiada para a área de transferência.\n")
  48.         window.after(2000, clear_message)  # Limpar a mensagem após 2 segundos
  49.  
  50. # Função para exportar as URLs capturadas
  51. def exportar_urls():
  52.     output_file_path = filedialog.asksaveasfilename(defaultextension='.html', filetypes=[('Arquivo HTML', '*.html')])
  53.     if output_file_path:
  54.         with open(output_file_path, 'w') as file:
  55.             file.write('<html>\n<head>\n<title>URLs Capturadas</title>\n</head>\n<body>\n<h1>URLs Capturadas</h1>\n')
  56.             for url, agora, title in captured_urls:
  57.                 file.write(f"<p>{agora.strftime('%Y-%m-%d %H:%M:%S')} - <a href='{url}'>{title}</a></p>\n")
  58.             file.write('</body>\n</html>')
  59.         print("As URLs capturadas foram exportadas para o arquivo:", output_file_path)
  60.  
  61. # Função para limpar a mensagem após 2 segundos
  62. def clear_message():
  63.     text_area.delete(1.0, tk.END)
  64.  
  65. # Função para exibir as instruções de uso
  66. def mostrar_como_usar():
  67.     instrucoes = """\
  68.    Clique em 'Iniciar Captura' para monitorar as URLs visitadas.
  69.    Quando quiser salvar uma URL, clique com o botão direito do mouse na barra de endereços,
  70.    e a URL será copiada para a área de transferência do computador. Repita esse procedimento
  71.    para capturar quantas URLs desejar. Ao final clique em Finalizar Captura. Por último clique em 'Exportar URLs' para gerar
  72.    uma lista com os links em um arquivo HTML, incluindo a data e hora de acesso de cada link.
  73.    """
  74.     messagebox.showinfo("Como Usar", instrucoes)
  75.  
  76. # Função para exibir a mensagem 'Sobre'
  77. def mostrar_sobre():
  78.     sobre_mensagem = "2023, Mizuno"
  79.     messagebox.showinfo("Sobre", sobre_mensagem)
  80.  
  81. # Inicialização da interface gráfica
  82. window = tk.Tk()
  83. window.title("Monitora URLs")
  84. window.geometry("600x400")
  85. window.resizable(False, False)
  86.  
  87. # Área de texto para exibir as mensagens
  88. text_area = tk.Text(window, height=6, font=("Courier New", 12))
  89. text_area.pack(side="bottom", padx=20, pady=20)
  90.  
  91. # Frame para agrupar os botões
  92. frame_botoes = tk.Frame(window)
  93. frame_botoes.pack(side="bottom", padx=20, pady=10)
  94.  
  95. # Botão para iniciar a captura de URLs
  96. btn_iniciar_captura = tk.Button(frame_botoes, text="Iniciar Captura", command=iniciar_captura, font=("Arial", 12), width=15)
  97. btn_iniciar_captura.pack(pady=10)
  98.  
  99. # Botão para parar a captura de URLs
  100. btn_parar_captura = tk.Button(frame_botoes, text="Parar Captura", command=parar_captura, state="disabled", font=("Arial", 12), width=15)
  101. btn_parar_captura.pack(pady=10)
  102.  
  103. # Botão para exportar as URLs capturadas
  104. btn_exportar_urls = tk.Button(frame_botoes, text="Exportar URLs", command=exportar_urls, font=("Arial", 12), width=15)
  105. btn_exportar_urls.pack(pady=10)
  106.  
  107. # Menu
  108. menu_bar = tk.Menu(window)
  109.  
  110. ajuda_menu = tk.Menu(menu_bar, tearoff=0)
  111. ajuda_menu.add_command(label="Como Usar o Programa", command=mostrar_como_usar)
  112. ajuda_menu.add_command(label="Sobre", command=mostrar_sobre)
  113.  
  114. menu_bar.add_cascade(label="Menu", menu=ajuda_menu)
  115.  
  116. window.config(menu=menu_bar)
  117.  
  118. # Centralizar a janela na tela
  119. window.update_idletasks()
  120. window_width = window.winfo_width()
  121. window_height = window.winfo_height()
  122. screen_width = window.winfo_screenwidth()
  123. screen_height = window.winfo_screenheight()
  124. x = (screen_width // 2) - (window_width // 2)
  125. y = (screen_height // 2) - (window_height // 2)
  126. window.geometry(f"{window_width}x{window_height}+{x}+{y}")
  127.  
  128. # Lista para armazenar as URLs capturadas
  129. captured_urls = []
  130.  
  131. # Criar um listener para o clique do mouse
  132. listener = mouse.Listener(on_click=on_click)
  133.  
  134. # Executar a interface gráfica
  135. window.mainloop()
  136.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement