fix: aggiunte/modifiche ai files del canale 0example

This commit is contained in:
greko17
2019-10-12 11:48:41 +02:00
parent 6bc96e9845
commit d126eab38e
2 changed files with 84 additions and 51 deletions
+5 -5
View File
@@ -1,5 +1,5 @@
Rev:0.1 Rev:0.2
Update: 18-9-2019 Update: 03-10-2019
##################### #####################
Promemoria da cancellare pena la non visibilità del canale in KOD!! Promemoria da cancellare pena la non visibilità del canale in KOD!!
@@ -11,8 +11,7 @@ le voci in settings sono state inserite per l'unico scopo
di velocizzare la scrittura del file di velocizzare la scrittura del file
Vanno lasciate solo quelle voci il cui funzionamento sul Vanno lasciate solo quelle voci il cui funzionamento sul
canale non vanno attivate. canale non vanno attivate.
Per esempio se il canale non ha: newest() "not_active": ["include_in_newest"], VA INSERITO nei canali che NON hanno nessuna voce newest.
lasciare le voci dove c'è newest nell'id. Es: include_in_newest_series
Ovviamente va mantenuto tutto il codice di quell'id tra le {} Ovviamente va mantenuto tutto il codice di quell'id tra le {}
se vanno cancellati tutti deve rimanere la voce: se vanno cancellati tutti deve rimanere la voce:
"settings": [] "settings": []
@@ -20,12 +19,13 @@ se vanno cancellati tutti deve rimanere la voce:
{ {
"id": "nome del file .json", "id": "nome del file .json",
"name": "Nome del canale visualizzato in KOD", "name": "Nome del canale visualizzato in KOD",
"language": ["ita", "vos"], "language": ["ita", "vosi"],
"active": false, "active": false,
"adult": false, "adult": false,
"thumbnail": "", "thumbnail": "",
"banner": "", "banner": "",
"categories": ["movie", "tvshow", "anime", "vos", "documentary", "adult"], "categories": ["movie", "tvshow", "anime", "vos", "documentary", "adult"],
"not_active": ["include_in_newest"],
"settings": [ "settings": [
{ {
"id": "include_in_global_search", "id": "include_in_global_search",
+79 -46
View File
@@ -1,30 +1,42 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# ------------------------------------------------------------ # ------------------------------------------------------------
# Canale per 'idcanale nel json' # Canale per 'idcanale nel json'
# By: pincopallo!
# Eventuali crediti se vuoi aggiungerli
# ------------------------------------------------------------ # ------------------------------------------------------------
# Rev: 0.2 # Rev: 0.2
# Update 18-09-2019 # Update 12-10-2019
# fix: # fix:
# 1. aggiunto pagination e sistemate alcune voci # 1. aggiunto pagination e sistemate alcune voci
# 2. modificato problemi in eccezioni
# 3. aggiunta la def select
# 4. modifica alla legenda e altre aggiunte
# Questo vuole solo essere uno scheletro per velocizzare la scrittura di un canale. # Questo vuole solo essere uno scheletro per velocizzare la scrittura di un canale.
# La maggior parte dei canali può essere scritta con il decoratore.
# I commenti sono più un promemoria... che una vera e propria spiegazione! # I commenti sono più un promemoria... che una vera e propria spiegazione!
# Niente di più. # Niente di più.
# Ulteriori informazioni sono reperibili nel wiki: # Ulteriori informazioni sono reperibili nel wiki:
# https://github.com/kodiondemand/addon/wiki/decoratori # https://github.com/kodiondemand/addon/wiki/decoratori
""" """
Questi sono commenti per i beta-tester.
Problemi noti che non superano il test del canale: Su questo canale, nella categoria 'Ricerca Globale'
- indicare i problemi non saranno presenti le voci 'Aggiungi alla Videoteca'
e 'Scarica Film'/'Scarica Serie', dunque,
la loro assenza, nel Test, NON dovrà essere segnalata come ERRORE.
Novità. Indicare in quale/i sezione/i è presente il canale:
- Nessuna, film, serie, anime...
Avvisi: Avvisi:
- Eventuali avvisi per i tester - Eventuali avvisi per i tester
Ulteriori info: Ulteriori info:
""" """
# CANCELLARE Ciò CHE NON SERVE per il canale, lascia il codice commentato # CANCELLARE Ciò CHE NON SERVE per il canale, lascia il codice commentato ove occorre,
# ma fare PULIZIA quando si è finito di testarlo # ma fare PULIZIA quando si è finito di testarlo
# Qui gli import # Qui gli import
@@ -37,7 +49,7 @@ from platformcode import config
# in caso di necessità # in caso di necessità
#from core import scrapertoolsV2, httptools, servertools, tmdb #from core import scrapertoolsV2, httptools, servertools, tmdb
#from core.item import Item from core.item import Item # per newest
#from lib import unshortenit #from lib import unshortenit
##### fine import ##### fine import
@@ -48,7 +60,7 @@ from platformcode import config
# da cancellare se non utilizzata # da cancellare se non utilizzata
__channel__ = "id nel json" __channel__ = "id nel json"
# da cancellare se si utilizza findhost() # da cancellare se si utilizza findhost()
host = config.get_channel_url('id nel json OR '__channel__) # <-- ATTENZIONE host = config.get_channel_url('id nel json' OR __channel__) # <-- ATTENZIONE
headers = [['Referer', host]] headers = [['Referer', host]]
# Inizio findhost() - da cancellare se usato l'altro metodo # Inizio findhost() - da cancellare se usato l'altro metodo
@@ -62,7 +74,7 @@ def findhost():
permUrl = httptools.downloadpage('INSERIRE-URL-QUI', follow_redirects=False).headers permUrl = httptools.downloadpage('INSERIRE-URL-QUI', follow_redirects=False).headers
host = 'https://www.'+permUrl['location'].replace('https://www.google.it/search?q=site:', '') host = 'https://www.'+permUrl['location'].replace('https://www.google.it/search?q=site:', '')
# cancellare host non utilizzato # cancellare host non utilizzato
host = scrapertoolsV2.find_single_match(data, r'<div class="elementor-button-wrapper"> <a href="([^"]+)"') host = scrapertoolsV2.find_single_match(permUrl, r'<div class="elementor-button-wrapper"> <a href="([^"]+)"')
headers = [['Referer', host]] headers = [['Referer', host]]
findhost() # così le imposta una volta per tutte findhost() # così le imposta una volta per tutte
@@ -83,8 +95,7 @@ def mainlist(item):
# Ordine delle voci # Ordine delle voci
# Voce FILM, puoi solo impostare l'url # Voce FILM, puoi solo impostare l'url
film = ['', film = ['', # url per la voce FILM, se possibile la pagina principale con le ultime novità
#'url', # url per la voce FILM, se possibile la pagina principale con le ultime novità
#Voce Menu,['url','action','args',contentType] #Voce Menu,['url','action','args',contentType]
('Al Cinema', ['', 'peliculas', '']), ('Al Cinema', ['', 'peliculas', '']),
('Generi', ['', 'genres', 'genres']), ('Generi', ['', 'genres', 'genres']),
@@ -97,19 +108,17 @@ def mainlist(item):
] ]
# Voce SERIE, puoi solo impostare l'url # Voce SERIE, puoi solo impostare l'url
tvshow = ['', tvshow = ['', # url per la voce Serie, se possibile la pagina con titoli di serie
#'url', # url per la voce Serie, se possibile la pagina con titoli di serie
#Voce Menu,['url','action','args',contentType] #Voce Menu,['url','action','args',contentType]
('Novità', ['', '', '']) ('Novità', ['', '', '']),
('Per Lettera', ['', 'genres', 'letters']), ('Per Lettera', ['', 'genres', 'letters']),
('Per Genere', ['', 'genres', 'genres']), ('Per Genere', ['', 'genres', 'genres']),
('Per anno', ['', 'genres', 'years']) ('Per anno', ['', 'genres', 'years'])
]
# Voce ANIME, puoi solo impostare l'url # Voce ANIME, puoi solo impostare l'url
anime = ['', anime = ['', # url per la voce Anime, se possibile la pagina con titoli di anime
#'url', # url per la voce Anime, se possibile la pagina con titoli di anime
#Voce Menu,['url','action','args',contentType] #Voce Menu,['url','action','args',contentType]
('Novità', ['', '', '']) ('Novità', ['', '', '']),
('In Corso',['', '', '', '']), ('In Corso',['', '', '', '']),
('Ultimi Episodi',['', '', '', '']), ('Ultimi Episodi',['', '', '', '']),
('Ultime Serie',['', '', '', '']) ('Ultime Serie',['', '', '', ''])
@@ -133,52 +142,53 @@ def mainlist(item):
nome = [( '' ['', '', '', '']) nome = [( '' ['', '', '', ''])
return locals() return locals()
# riepilogo key per il match nei patron # Legenda known_keys per i groups nei patron
# known_keys = ['url', 'title', 'title2', 'season', 'episode', 'thumb', 'quality', # known_keys = ['url', 'title', 'title2', 'season', 'episode', 'thumb', 'quality',
# 'year', 'plot', 'duration', 'genere', 'rating', 'type', 'lang'] # 'year', 'plot', 'duration', 'genere', 'rating', 'type', 'lang']
# url = link relativo o assoluto # url = link relativo o assoluto alla pagina titolo film/serie
# title = titolo Film/Serie/Anime/Altro # title = titolo Film/Serie/Anime/Altro
# title2 = titolo dell'episodio Serie/Anime/Altro # title2 = titolo dell'episodio Serie/Anime/Altro
# season = stagione in formato numerico # season = stagione in formato numerico
# episode = numero episodio, in formato numerico. Se il sito ha stagionexepisodio potete omettere season # episode = numero episodio, in formato numerico.
# thumb = locandina Film/Serie/Anime/Altro # thumb = linkrealtivo o assoluto alla locandina Film/Serie/Anime/Altro
# quality = qualità indicata del video # quality = qualità indicata del video
# year = anno in formato numerico (4 cifre) # year = anno in formato numerico (4 cifre)
# duration = durata del Film/Serie/Anime/Altro # duration = durata del Film/Serie/Anime/Altro
# genere = genere del Film/Serie/Anime/Altro. Es: avventura, commedia # genere = genere del Film/Serie/Anime/Altro. Es: avventura, commedia
# rating = punteggio/voto in formato numerico # rating = punteggio/voto in formato numerico
# type = tipo del video. Es. movie per film o tvshow per le serie. Di solito sono discrimanti usati dal sito # type = tipo del video. Es. movie per film o tvshow per le serie. Di solito sono discrimanti usati dal sito
# lang = lingua del video. Es: ITA, Sub-ITA, Sub, SUB ITA. Se non appare 'ITA' è di default # lang = lingua del video. Es: ITA, Sub-ITA, Sub, SUB ITA.
# AVVERTENZE: Se il titolo è trovato nella ricerca TMDB/TVDB/Altro allora le locandine e altre info non saranno quelle recuperate nel sito.!!!!
@support.scrape @support.scrape
def peliculas(item): def peliculas(item):
support.log(item) support.log(item)
#dbg # decommentare per attivare web_pdb #support.dbg() # decommentare per attivare web_pdb
action = '' action = ''
blacklist = [''] blacklist = ['']
patron = r'' patron = r''
patronBlock = r'' patronBlock = r''
patronNext = '' patronNext = ''
pagination = 0 pagination = ''
debug = False # True per testare le regex sul sito #debug = True # True per testare le regex sul sito
return locals() return locals()
@support.scrape @support.scrape
def episodios(item): def episodios(item):
support.log(item) support.log(item)
#dbg #support.dbg()
action = '' action = ''
blacklist = [''] blacklist = ['']
patron = r'' patron = r''
patronBlock = r'' patronBlock = r''
patronNext = '' patronNext = ''
pagination = 0 pagination = ''
debug = False #debug = True
return locals() return locals()
# Questa def è utilizzata per generare i menu del canale # Questa def è utilizzata per generare i menu del canale
@@ -186,28 +196,50 @@ def episodios(item):
@support.scrape @support.scrape
def genres(item): def genres(item):
support.log(item) support.log(item)
#dbg #support.dbg()
action = '' action = ''
blacklist = [''] blacklist = ['']
patron = r'' patron = r''
patronBlock = r'' patronBlock = r''
patronNext = '' patronNext = ''
pagination = 0 pagination = ''
debug = False #debug = True
return locals() return locals()
############## Fine ordine obbligato ############## Fine ordine obbligato
## Def ulteriori ## Def ulteriori
# per quei casi dove il sito non differenzia film e/o serie e/o anime
# e la ricerca porta i titoli mischiati senza poterli distinguere tra loro
# andranno modificate anche le def peliculas e episodios ove occorre
def select(item):
support.log('select --->', item)
#support.dbg()
data = httptools.downloadpage(item.url, headers=headers).data
# pulizia di data, in caso commentare le prossime 2 righe
data = re.sub('\n|\t', ' ', data)
data = re.sub(r'>\s+<', '> <', data)
block = scrapertoolsV2.find_single_match(data, r'')
if re.findall('', data, re.IGNORECASE):
support.log('select = ### è una serie ###')
return episodios(Item(channel=item.channel,
title=item.title,
fulltitle=item.fulltitle,
url=item.url,
args='serie',
contentType='tvshow',
#data1 = data decommentando portiamo data nella def senza doverla riscaricare
))
############## Fondo Pagina ############## Fondo Pagina
# da adattare al canale # da adattare al canale
def search(item, text): def search(item, text):
support.log('search', item) support.log('search', item)
itemlist = [] itemlist = []
text = text.replace(' ', '+') text = text.replace(' ', '+')
item.url = '/index.php?do=search&story=%s&subaction=search' % (text) item.url = host + '/index.php?do=search&story=%s&subaction=search' % (text)
# bisogna inserire item.contentType per la ricerca globale # bisogna inserire item.contentType per la ricerca globale
# se il canale è solo film, si può omettere, altrimenti bisgona aggiungerlo e discriminare. # se il canale è solo film, si può omettere, altrimenti bisgona aggiungerlo e discriminare.
item.contentType = item.contentType item.contentType = item.contentType
@@ -240,14 +272,15 @@ def newest(categoria):
except: except:
import sys import sys
for line in sys.exc_info(): for line in sys.exc_info():
log('newest log: ', {0}.format(line)) support.log('newest log: ', {0}.format(line))
return [] return []
return itemlist return itemlist
# da adattare... ( support.server ha vari parametri ) # da adattare...
# consultare il wiki sia per support.server che ha vari parametri,
# sia per i siti con hdpass
#support.server(item, data='', itemlist=[], headers='', AutoPlay=True, CheckLinks=True) #support.server(item, data='', itemlist=[], headers='', AutoPlay=True, CheckLinks=True)
def findvideos(item): def findvideos(item):
support.log('findvideos ->', item) support.log('findvideos ->', item)
return support.server(item, headers=headers) return support.server(item, headers=headers)