# Discografiasd - daemon para atualizar as últimas discografias from watchdog.events import FileSystemEventHandler from watchdog.observers import Observer from datetime import datetime from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.generator import BytesGenerator from smtplib import SMTP from urllib import parse import os import traceback import time postados = {} TEMPO_EXPIRA = 24*60*60 # 24 horas CAMINHO_DISCOGRAFIAS_HTML = "/var/www/html/ultimas_discografias.html" # Mudar aqui caso o URL das discografias mude LINK_BASE = "http://cegosbrasil.net/discografias?folder=hd2/Discografias/" def e_novo(arquivo): return arquivo in postados def cria_link(diretorio, nome=None): if nome is None: nome = diretorio return '%s' % (LINK_BASE + parse.quote(diretorio), nome) def atualiza_discografias(): atualizou = False for k in list(postados.keys()): if time.time() - postados[k] > TEMPO_EXPIRA: del postados[k] atualizou = True if atualizou: gera_html() def envia_email(arquivo): nome = os.path.splitext(os.path.basename(arquivo))[0] diretorio = os.path.dirname(arquivo).replace(".\\", "").replace("./", "") if not diretorio or diretorio == ".": return if os.path.isdir(arquivo): link = cria_link(arquivo.replace("./", "").replace(".\\", ""), nome) email = MIMEMultipart() email["From"] = "Equipe Cegos Brasil " email["To"] = "" email["Subject"] = "Nova discografia disponível: %s" % nome texto = """ Nova discografia disponível: %s

Uma nova discografia está disponível na nossa página de discografias

Clique no link %s para acessar a página de downloads, ou clique %s para ver mais discografias desse gênero.

Aproveite!

""" % (nome, link, cria_link(diretorio)) email.attach(MIMEText(texto, "html")) with SMTP("smtp.gmail.com", 587) as serv: serv.starttls() serv.login("notificationscegosbrasil@gmail.com", "chatcegosbrasil123") serv.send_message(email) email = MIMEMultipart() email["From"] = "Equipe Cegos Brasil " email["To"] = ", " email["Subject"] = "(texto para grupos) Nova discografia disponível: %s" % nome link = link.replace('\n") if not postados: f.write("
  • Nenhuma discografia postada no dia de hoje.
  • \n\n") f.close() return for arquivo in postados: nome = os.path.splitext(os.path.basename(arquivo))[0] diretorio = os.path.dirname(arquivo).replace(".\\", "").replace("./", "") if os.path.isdir(arquivo): nome = cria_link(arquivo.replace("./", "").replace(".\\", ""), nome) if diretorio and diretorio != ".": f.write("
  • Em %s, adicionado %s
  • \n" % (cria_link(diretorio), nome)) else: f.write("
  • Adicionado %s
  • \n" % nome) f.write("\n") f.close() class MyEventHandler(FileSystemEventHandler): def on_created(self, event): if event.src_path in postados: return if os.path.isfile(event.src_path) and e_novo(os.path.dirname(event.src_path)): return postados[event.src_path] = time.time() gera_html() if os.path.isdir(event.src_path): try: envia_email(event.src_path) except: print("Erro ao mandar o email") traceback.print_exc() def on_deleted(self, event): if event.src_path in postados: del postados[event.src_path] gera_html() os.chdir("Discografias") gera_html() observer = Observer() observer.schedule(MyEventHandler(), ".", recursive=True) observer.start() try: while True: atualiza_discografias() time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()