divided into simpler functions

This commit is contained in:
StochasticMouse 2024-01-20 15:12:58 +01:00
parent 4a58c6f249
commit bff23b1ffd

View File

@ -1,26 +1,29 @@
def modulo_scarica():
from bs4 import BeautifulSoup as bs from bs4 import BeautifulSoup as bs
import csv, jsbeautifier, cloudscraper, os, re, smtplib import csv, jsbeautifier, cloudscraper, os, re, smtplib
from email.mime.text import MIMEText from email.mime.text import MIMEText
from json import loads from json import loads
from datetime import datetime from datetime import datetime
#from multiprocessing.dummy import Pool as ThreadPool
from yt_dlp import YoutubeDL from yt_dlp import YoutubeDL
r = cloudscraper.create_scraper() def get_animu():
with open("animelist.csv",mode='r') as animecsv: with open("animelist.csv",mode='r') as animecsv:
csvfile=csv.reader(animecsv) csvfile=csv.reader(animecsv)
file=list(csvfile) file=list(csvfile)
animecsv.close() return file
def get_config():
with open("cfg.json",mode='r') as config: with open("cfg.json",mode='r') as config:
configs=config.read() configs=config.read()
configs=loads(configs) configs=loads(configs)
config.close() return configs
def get_soup(url): #dall'url outputta la soup della pagina def get_soup(url): #dall'url outputta la soup della pagina
r = cloudscraper.create_scraper()
page=r.get(url) page=r.get(url)
data=page.text data=page.text
return bs(data, features="html.parser") return bs(data, features="html.parser")
def new_email(subject,body):
def new_email(subject,body,configs):
msg = MIMEText(body) msg = MIMEText(body)
msg['Subject'] = subject msg['Subject'] = subject
msg['From'] = configs['email'] msg['From'] = configs['email']
@ -29,15 +32,18 @@ def modulo_scarica():
smtp_server.login(configs['email'], configs['email_password']) smtp_server.login(configs['email'], configs['email_password'])
smtp_server.sendmail(configs['email'], configs['email'], msg.as_string()) smtp_server.sendmail(configs['email'], configs['email'], msg.as_string())
print('Email successfully sent!') print('Email successfully sent!')
def tutti_gli_episodi(url): #trova tutti gli episodi dalla pagina descrittiva dell'anime def tutti_gli_episodi(url): #trova tutti gli episodi dalla pagina descrittiva dell'anime
cosette=get_soup(url).find('div', {'class':'tab-content'}).find_all('a') cosette=get_soup(url).find('div', {'class':'tab-content'}).find_all('a')
return [episodi['href'] for episodi in cosette] return [episodi['href'] for episodi in cosette]
def link_ep_da_url(url): #prende la pagina del "Guarda lo Streaming" e trova il link per guardarlo def link_ep_da_url(url): #prende la pagina del "Guarda lo Streaming" e trova il link per guardarlo
#print('ledu') #print('link_ep_da_url')
cosetta=get_soup(url).find('div', {'class':"btn btn-light w-100 mt-3 mb-3"}).parent cosetta=get_soup(url).find('div', {'class':"btn btn-light w-100 mt-3 mb-3"}).parent
return cosetta['href'] return cosetta['href']
def links_ep_da_scaricare(url): #prende il link output di link_ep_da_url e cerca al suo interno tutti i link di file di tutti i provider possibili ritornando un dict def links_ep_da_scaricare(url): #prende il link output di link_ep_da_url e cerca al suo interno tutti i link di file di tutti i provider possibili ritornando un dict
#print('leds') #print('links_ep_da_scaricare')
soup=get_soup(url) soup=get_soup(url)
cosetta=soup.find('div', {'class':'main-container'}).find('source') cosetta=soup.find('div', {'class':'main-container'}).find('source')
links={} links={}
@ -59,6 +65,7 @@ def modulo_scarica():
except Exception as e: except Exception as e:
pass pass
return links return links
def link_down(named_urls): #prende il dict di links_ep_da_scaricare e per quanto può converte i siti in link scaricabili tramite yt-dlp def link_down(named_urls): #prende il dict di links_ep_da_scaricare e per quanto può converte i siti in link scaricabili tramite yt-dlp
#print('link-down') #print('link-down')
#print(named_urls) #print(named_urls)
@ -83,7 +90,8 @@ def modulo_scarica():
pass pass
#print(links) #print(links)
return links return links
def scarica(lista): #la lista sarà nella forma filepath,url e prova in ordine di priorità da conf
def scarica(lista,configs): #la lista sarà nella forma filepath,url e prova in ordine di priorità da conf
orario=datetime.now().strftime("%d/%m/%Y %H:%M:%S") orario=datetime.now().strftime("%d/%m/%Y %H:%M:%S")
priority=configs['DownPriority'] priority=configs['DownPriority']
urls_file=link_down(links_ep_da_scaricare(link_ep_da_url(lista[1]))) urls_file=link_down(links_ep_da_scaricare(link_ep_da_url(lista[1])))
@ -98,6 +106,10 @@ def modulo_scarica():
except Exception as e: except Exception as e:
print(e) print(e)
print('['+orario+']'+'Errore '+provider+' per '+lista[0].split('/')[-1]) print('['+orario+']'+'Errore '+provider+' per '+lista[0].split('/')[-1])
def modulo_scarica():
file = get_animu()
configs = get_config()
#lines 0 è url ep, lines 1 è cartella download, lines 2 è nome anime #lines 0 è url ep, lines 1 è cartella download, lines 2 è nome anime
lista_email=[] lista_email=[]
for lines in file[1:]: for lines in file[1:]:
@ -133,15 +145,8 @@ def modulo_scarica():
filepath=os.path.join(configs['DownDir'],lines[1], nome_ep) filepath=os.path.join(configs['DownDir'],lines[1], nome_ep)
results.append((filepath,episodi)) results.append((filepath,episodi))
for ep in results: for ep in results:
scarica(ep) scarica(ep,configs)
lista_email.append((os.path.basename(ep[0]),0)) lista_email.append((os.path.basename(ep[0]),0))
'''
print(results)
pool=ThreadPool(1)
pool.map(scarica,results)
pool.close()
pool.join()
'''
except Exception as e: except Exception as e:
print(e) print(e)
lista_email.append((lines[1],1)) lista_email.append((lines[1],1))
@ -161,21 +166,21 @@ def modulo_scarica():
for el in errori: for el in errori:
body+=f"{ el[0] }, oof ci sono stati errori con questo anime\n" body+=f"{ el[0] }, oof ci sono stati errori con questo anime\n"
body+="\nFine resoconto, sono sbalordito delle mie capacità o_o" body+="\nFine resoconto, sono sbalordito delle mie capacità o_o"
new_email(subject,body) new_email(subject,body,configs)
elif novità: elif novità:
subject='Saturn_cli: Novità' subject='Saturn_cli: Novità'
body="Yo sono usciti nuovi episodi, valli a vedere soldato ;)\n" body="Yo sono usciti nuovi episodi, valli a vedere soldato ;)\n"
for el in novità: for el in novità:
body+=f"{ el[0] } è stato aggiunto con successo!\n" body+=f"{ el[0] } è stato aggiunto con successo!\n"
body+="\nFine resoconto, sono sbalordito delle mie capacità o_o" body+="\nFine resoconto, sono sbalordito delle mie capacità o_o"
new_email(subject,body) new_email(subject,body,configs)
elif errori: elif errori:
subject='Saturn_cli: Errori' subject='Saturn_cli: Errori'
body="Ohibò ci sono stati degli errori :(\n" body="Ohibò ci sono stati degli errori :(\n"
for el in errori: for el in errori:
body+=f"{ el[0] }, oof ci sono stati errori con questo anime\n" body+=f"{ el[0] }, oof ci sono stati errori con questo anime\n"
body+="\nFine resoconto, sono sbalordito delle mie capacità o_o" body+="\nFine resoconto, sono sbalordito delle mie capacità o_o"
new_email(subject,body) new_email(subject,body,configs)
if __name__ == "__main__": if __name__ == "__main__":
modulo_scarica() modulo_scarica()