Compare commits
No commits in common. "master" and "webserver" have entirely different histories.
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"DownDir":"/home/tuxedo/Video",
|
"DownDir":"/media/media/anime",
|
||||||
"email":"##########@gmail.com",
|
"DownPriority":["streamtape", "saturn", "streamhide", "legacy"],
|
||||||
"email_password":"#############"
|
"ServerLink":"www.animesaturn.tv"
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
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 selenium import webdriver
|
|
||||||
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
|
||||||
@ -19,12 +18,8 @@ def get_config():
|
|||||||
return configs
|
return configs
|
||||||
|
|
||||||
def get_soup(url): #dall'url outputta la soup della pagina
|
def get_soup(url): #dall'url outputta la soup della pagina
|
||||||
#driver.get(url)
|
r = cloudscraper.create_scraper()
|
||||||
#data = driver.page_source
|
page=r.get(url)
|
||||||
r = cloudscraper.create_scraper(session)
|
|
||||||
headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0"}
|
|
||||||
cookies = {"ASNew-q8":"2fa7ff5d81fa1a0db26b3f696a98dec9"}
|
|
||||||
page=r.get(url, headers=headers, cookies=cookies)
|
|
||||||
data=page.text
|
data=page.text
|
||||||
return bs(data, features="html.parser")
|
return bs(data, features="html.parser")
|
||||||
|
|
||||||
@ -47,14 +42,11 @@ def link_ep_da_url(url): #prende la pagina del "Guarda lo Streaming" e trova il
|
|||||||
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 da inserire in yt-dlp
|
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('links_ep_da_scaricare')
|
#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=[url,]+[link['href'] for link in soup.find('div', {'id':'wtf', 'class':'button'}).findAll('a')]
|
links={}
|
||||||
return links
|
|
||||||
|
|
||||||
'''
|
|
||||||
if cosetta:
|
if cosetta:
|
||||||
links.update({'legacy':cosetta['src']}) #legacy video format
|
links.update({'legacy':cosetta['src']}) #legacy video format
|
||||||
else:
|
else:
|
||||||
@ -73,9 +65,7 @@ def links_ep_da_scaricare(url): #prende il link output di link_ep_da_url e cerca
|
|||||||
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)
|
||||||
@ -100,28 +90,29 @@ def link_down(named_urls): #prende il dict di links_ep_da_scaricare e per quanto
|
|||||||
pass
|
pass
|
||||||
#print(links)
|
#print(links)
|
||||||
return links
|
return links
|
||||||
'''
|
|
||||||
|
|
||||||
def scarica(lista,configs): #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")
|
||||||
#urls_file=link_down(links_ep_da_scaricare(link_ep_da_url(lista[1])))
|
priority=configs['DownPriority']
|
||||||
urls_file=links_ep_da_scaricare(link_ep_da_url(lista[1]))
|
urls_file=link_down(links_ep_da_scaricare(link_ep_da_url(lista[1])))
|
||||||
for i in range(len(urls_file)):
|
for provider in priority:
|
||||||
try:
|
try:
|
||||||
print('['+orario+']'+'Avvio download try '+str(i)+' per '+lista[0].split('/')[-1])
|
print('['+orario+']'+'Avvio download '+provider+' per '+lista[0].split('/')[-1])
|
||||||
|
#open(lista[0], 'wb').write(r.get(urls_file['provider']).content)
|
||||||
with YoutubeDL({'outtmpl':{'default':lista[0]},'quiet':True,'no_warnings':True,'ignoreerrors':False,'retries':10}) as ydl:
|
with YoutubeDL({'outtmpl':{'default':lista[0]},'quiet':True,'no_warnings':True,'ignoreerrors':False,'retries':10}) as ydl:
|
||||||
ydl.download(urls_file[i])
|
ydl.download(urls_file[provider])
|
||||||
print('['+orario+']'+'Successo per '+lista[0].split('/')[-1])
|
print('['+orario+']'+'Successo per '+lista[0].split('/')[-1])
|
||||||
return
|
return
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
print('['+orario+']'+'Errore try '+str(i)+' per '+lista[0].split('/')[-1])
|
print('['+orario+']'+'Errore '+provider+' per '+lista[0].split('/')[-1])
|
||||||
|
|
||||||
def modulo_scarica():
|
def modulo_scarica():
|
||||||
file = get_animu()
|
file = get_animu()
|
||||||
configs = get_config()
|
configs = get_config()
|
||||||
|
#lines 0 è url ep, lines 1 è cartella download, lines 2 è nome anime
|
||||||
lista_email=[]
|
lista_email=[]
|
||||||
for lines in file[1:]: #lines 0 è url, lines 1 è cart down, lines 2 è naming episodi, lines 3 è abilitato?, lines 4 è jellynaming?
|
for lines in file[1:]:
|
||||||
ora=datetime.now()
|
ora=datetime.now()
|
||||||
orario=ora.strftime("%d/%m/%Y %H:%M:%S")
|
orario=ora.strftime("%d/%m/%Y %H:%M:%S")
|
||||||
if int(lines[3]):
|
if int(lines[3]):
|
||||||
@ -155,7 +146,7 @@ def modulo_scarica():
|
|||||||
results.append((filepath,episodi))
|
results.append((filepath,episodi))
|
||||||
for ep in results:
|
for ep in results:
|
||||||
scarica(ep,configs)
|
scarica(ep,configs)
|
||||||
lista_email.append((ep[0],0))
|
lista_email.append((os.path.basename(ep[0]),0))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
lista_email.append((lines[1],1))
|
lista_email.append((lines[1],1))
|
||||||
@ -192,32 +183,5 @@ def modulo_scarica():
|
|||||||
new_email(subject,body,configs)
|
new_email(subject,body,configs)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
########################to correct the tls error
|
modulo_scarica()
|
||||||
#import cloudscraper
|
|
||||||
from requests.adapters import HTTPAdapter
|
|
||||||
from requests.packages.urllib3.poolmanager import PoolManager
|
|
||||||
import ssl
|
|
||||||
|
|
||||||
class SSLAdapter(HTTPAdapter):
|
|
||||||
def init_poolmanager(self, connections, maxsize, block=False):
|
|
||||||
self.poolmanager = PoolManager(
|
|
||||||
num_pools=connections,
|
|
||||||
maxsize=maxsize,
|
|
||||||
block=block,
|
|
||||||
ssl_version=ssl.PROTOCOL_TLS,
|
|
||||||
ciphers='ECDHE-RSA-AES128-GCM-SHA256')
|
|
||||||
|
|
||||||
|
|
||||||
#firefox_options = webdriver.FirefoxOptions()
|
|
||||||
#firefox_options.add_argument("--profile=/opt/saturn_cli/selenium_profile")
|
|
||||||
#driver = webdriver.Chrome()
|
|
||||||
|
|
||||||
|
|
||||||
session = cloudscraper.Session()
|
|
||||||
session.mount('https://', SSLAdapter())
|
|
||||||
#response = session.get('https://example.com')
|
|
||||||
#print(response.text)
|
|
||||||
########################
|
|
||||||
modulo_scarica()
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user