diff --git a/decoratori.md b/decoratori.md index a91702b..d09e2ff 100644 --- a/decoratori.md +++ b/decoratori.md @@ -32,7 +32,7 @@ film = [ ('Generi', ['', 'menu', 'Film per Genere']), ('Anni', ['', 'menu', 'Film per Anno']) ] - tvshow = ['/serietv/', +tvshow = ['/serietv/', ('Per Lettera', ['/serietv/', 'menu', 'Serie-Tv per Lettera']), ('Per Genere', ['/serietv/', 'menu', 'Serie-Tv per Genere']), ('Per anno', ['/serietv/', 'menu', 'Serie-Tv per Anno']) @@ -50,7 +50,8 @@ top = [('Novità',['', 'peliculas', 'new', 'tvshow']), * search >search è utilizzato quando nel sito c'è un solo campo di ricerca per tutti i tipi di fonti (ricerca unica per film e serie ad esempio), in sua assenza viene automaticamente creata una voce "cerca" per ogni menu di primo livello, es: Cerca Film... -Il decoratore si occupera poi di includere le impostazioni per l'autoplay e la configurazione del canale +Il decoratore si occupera poi di includere la configurazione del canale.
+Gli item risultanti avranno già il contentType settato (film/tvshow) se appartenenti ai relativi sottomenu Esempio comprensivo di tutti i campi: ```python @@ -76,21 +77,26 @@ def mainlist(item): ``` ## scrape -Decoratore per fare lo scraping vero e proprio, è un interfaccia alle funzioni di alfa/pelisalacarta che permette di fare uso quasi soltanto delle regex. -Utilizza le seguenti variabili:
+Decoratore per fare lo scraping vero e proprio, è un interfaccia alle funzioni di alfa/pelisalacarta che permette di fare uso quasi soltanto delle regex.
+Per rendere le pagine un po' più standard, prima di effettuare lo scraping, effettua alcune operazioni sulla pagina: +- sostiuisce i ritorni a capo con uno spazio +- uniforma le virgolette (tutte le ' diventano ") +- elimina gli spazi multipli tra i tag html + +Per funzionare è necessario settare alcune variabili, ecco la lista completa:
* patron > Si tratta della regex vera e propria, quella che deve ottenere i titoli, l'url e tutte le informazioni di un film/serie.
> Deve essere costituita solo da [named capturing groups](https://www.regular-expressions.info/named.html), i quali possono essere:
->['url', 'title', 'title2', 'episode', 'thumb', 'quality', 'year', 'plot', 'duration', 'genere', 'rating', 'type', 'lang']
->Questi possibili nomi sono abbastanza auto-esplicativi, inoltre scrape effettua già di per se operazioni "di bonifica", come ad esempio inserire il dominio quando manca nell'url scrapato(url relativo) o anche convertire duration in secondi (per essere meglio interpretato da kodi)
+> ['url', 'title', 'title2', 'season', 'episode', 'thumb', 'quality', 'year', 'plot', 'duration', 'genere', 'rating', 'type', 'lang', 'other', 'size', 'seed']
+> Questi possibili nomi sono abbastanza auto-esplicativi, inoltre scrape effettua già di per se operazioni "di bonifica", come ad esempio inserire il dominio quando manca nell'url scrapato(url relativo) o anche convertire duration in secondi (per essere meglio interpretato da kodi)
```python patron = r'div class="card-image">.*?(?P[^<[(]+)<\/a>.*?<strong><span style="[^"]+">(?P<genre>[^<>0-9(]+)\((?P<year>[0-9]{4}).*?</(?:p|div)>(?P<plot>.*?)</div' ``` * patronBlock >Nel caso la parte contenente i contenuti fosse indistinguibile da altri contenuti (ed è quindi necessario fare scraping solo di un pezzo di html), è possibile scrivere una regex per ottenere parte di codice, che poi sarà processata da 'patron'.<br> >E' possibile inoltre che questa regex ritorni più pezzi di codice (ad esempio se è una lista di episodi divisa per stagione).<br> ->patronBlock può contenere i seguenti [named capturing groups](https://www.regular-expressions.info/named.html): block, lang, quality<br> ->in block ci va il blocco (pezzo) di codice da processare poi con 'patron', lang e quality invece vanno a sovrascrivere le omonime proprietà in patron, questo è utilissimo quando le info riguardo alla lingua (ITA/SUB-ITA) e la qualità sono presenti una sola volta (riprendendo l'esempio di prima, se la lingua viene indicata stagione per stagione) <br> +>patronBlock può contenere i seguenti [named capturing groups](https://www.regular-expressions.info/named.html): block, season, lang, quality<br> +>in block ci va il blocco (pezzo) di codice da processare poi con 'patron', season, lang e quality invece vanno a sovrascrivere le omonime proprietà in patron, questo è utilissimo quando le info riguardo alla stagione, alla lingua (ITA/SUB-ITA) o alla qualità sono presenti una sola volta (riprendendo l'esempio di prima, se la lingua viene indicata stagione per stagione) <br> ```python patronBlock = r'(?P<block><div class="sp-head[a-z ]*?" title="Espandi">\s*STAGIONE [0-9]+ - (?P<lang>[^\s]+)(?: - (?P<quality>[^-<]+))?.*?[^<>]*?</div>.*?)<div class="spdiv">\[riduci\]</div>' ``` @@ -99,6 +105,11 @@ patronBlock = r'(?P<block><div class="sp-head[a-z ]*?" title="Espandi">\s*STAGIO ```python patronNext='<a class="?page-link"? href="?([^>]+)"?><i class="fa fa-angle-right">' ``` + +* patronMenu +> Uguale a patron ma per i menu, in pratica disabilita la ricerca del contenuto su tmdb +> Da utilizzare quando si creano dei sottomenu dinamici, come ad esempio "Genere" o "Per lettera" ecc.. + * action >La funzione che deve partire quando si apre un risultato ottenuto da scrape, se omessa è di default findvideos (la funzione standard per ottenere le fonti) * blacklist @@ -175,6 +186,12 @@ pagination = '' # basta che la variabile sia settata e prende il default, ovver MatchesDict([('title', 'Il Caso Collini'), ('year', 2019), ('language', <Language [it]>), ('source', 'Blu-ray'), ('other', 'Rip'), ('video_codec', 'Xvid'), ('release_group', 'PRiME[MT]'), ('type', 'movie')]) ``` +* deflang +> La lingua predefinita dei contenuti presenti, utile ad esempio per i siti che mostrano praticamente solo SUB-ITA e pertanto non lo indicano, dando la cosa per scontata +```python +deflang = 'Sub-ITA' +``` + Inoltre è possibile creare degli [hook](https://www.pierov.org/2011/06/10/cosa-sono-gli-hook/) creando funzioni con i seguenti nomi: * itemHook(item) >Chiamata ogni qualvolta un item sta per essere aggiunto, prende come parametro item e deve ritornare l'item con tutte le modifiche che ritieni neccessarie. diff --git a/funzioni-utili.md b/funzioni-utili.md index 7473fe5..d9c22f3 100644 --- a/funzioni-utili.md +++ b/funzioni-utili.md @@ -1,6 +1,25 @@ # Lista funzioni utili +* [server](#server) * [hdpass_get_servers](#hdpass_get_servers) +* [typo](#typo) +## server +Da utilizzare per creare listati di server "standard" + +| Parametro | Descrizione | +|---|---| +| item | l'item chiamante | +| data='' | stringa in cui cercare i server | +| itemlist=[] | lista dei server trovati, se il parametro server non è compilato, verrà riconosciuto dall'url | +| headers='' | se verrà scaricata la pagina, puoi passare degli header custom | +| AutoPlay=True | autoplay abilitato | +| CheckLinks=True | checklink abilitato | +| Download=True | download abilitato | +| patronTag=None | se la pagina mostra un tag qualitativo (MB.BDRIP ad esempio), inserire una regex che lo cattura. Verrà mostrato a video con una descrizione. | +| Videolibrary=True | videoteca abilitata | + +E' possibile utilizzare sia data che itemlist, i risultati di entrambi verranno uniti. In loro assenza, verrà scaricata la pagina e verranno cercati tutti i server.<br> +In caso di link corti, i provider supportati verranno rilevati e verrà tentato un unshorten automatico alla ricerca di possibili server. ## hdpass_get_servers Scraper per hdpass.online, per intenderci: