aggiunti aggiornamenti

mac12m99
2019-12-12 21:30:36 +01:00
committed by marco
parent 0d1166979d
commit 220edddaa4
4 changed files with 46 additions and 218 deletions
-217
@@ -1,217 +0,0 @@
<pre><code># -*- coding: utf-8 -*-
# ------------------------------------------------------------
# Canale per idcanale nel json
# ------------------------------------------------------------
"""
Problemi noti che non superano il test del canale:
- indicare i problemi
Avvisi:
- Eventuali avvisi per i tester
Ulteriori info:
"""
# CANCELLARE Ciò CHE NON SERVE per il canale e
# fare pulizia quando si è finito di testarlo
# Qui gli import
# per l'uso dei decoratori, per i log, e funzioni per siti particolari
from core import support
# se non si fa uso di findhost()
from platformcode import config
# in caso di necessità
#from core import scrapertoolsV2, httptools, servertools, tmdb
#from core.item import Item
#from lib import unshortenit
##### fine import
# impostazioni variabili o def findhost()
# se necessaria la variabile __channel__
# da cancellare se non utilizzata
__channel__ = "id nel json"
# da cancellare se si utilizza findhost()
host = config.get_channel_url(id nel json o __channel__)
headers = [['Referer', host]]
# Inizio findhost() - da cancellare se usato l'altro metodo
#impostati dinamicamente da findhost()
host = ""
headers = ""
def findhost():
global host, headers
# da adattare alla bisogna...
permUrl = httptools.downloadpage('INSERIRE-URL-QUI', follow_redirects=False).headers
host = 'https://www.'+permUrl['location'].replace('https://www.google.it/search?q=site:', '')
headers = [['Referer', host]]
findhost() # così le imposta una volta per tutte
### fine findhost
# server di esempio...
list_servers = ['supervideo', 'streamcherry','rapidvideo', 'streamango', 'openload']
# quality di esempio
list_quality = ['default', 'HD', '3D', '4K', 'DVD', 'SD']
### fine variabili
#### Inizio delle def principali ###
@support.menu
def mainlist(item):
support.log(item)
# Ordine delle voci
# Prima voce FILM, puoi solo impostare l'url
film = [
#'url', # url per la voce FILM, se possibile la pagina principale con le ultime novità
#Voce Menu,['url','action','args',contentType]
('Al Cinema', ['', 'peliculas', '']),
('Generi', ['', 'genres', 'genres']),
('Per Lettera', ['', 'genres', 'letters']),
('Anni', ['', 'genres', 'years']),
('Qualità', ['', 'genres', 'quality']),
('Mi sento fortunato', ['', 'genres', 'lucky']),
('Popolari', ['', 'peliculas', '']),
('Sub-ITA', ['', 'peliculas', ''])
]
# Prima voce SERIE, puoi solo impostare l'url
tvshow = [
'#'url', # url per la voce Serie, se possibile la pagina principale con le ultime novità
#Voce Menu,['url','action','args',contentType]
('Per Lettera', ['', 'genres', 'letters']),
('Per Genere', ['', 'genres', 'genres']),
('Per anno', ['', 'genres', 'years'])
anime = [
'#'url', # url per la voce Anime, se possibile la pagina principale con le ultime novità
#Voce Menu,['url','action','args',contentType]
('In Corso',['', '', '', '']),
('Ultimi Episodi',['', '', '', '']),
('Ultime Serie',['', '', '', ''])
]
"""
Eventuali Menu per voci non contemplate!
"""
return locals()
# riepilogo key per il match nei patron
#known_keys = ['url', 'title', 'title2', 'season', 'episode', 'thumb', 'quality',
# 'year', 'plot', 'duration', 'genere', 'rating', 'type', 'lang']
# url = link relativo o assoluto
# title = titolo Film/Serie/Anime/Altro
# title2 = titolo dell'episodio Serie/Anime/Altro
# season = stagione in formato numerico
# episode = numero episodio, in formato numerico. Se il sito ha stagionexepisodio potete omettere season
# thumb = locandina Film/Serie/Anime/Altro
# quality = qualità indicata del video
# year = anno in formato numerico (4 cifre)
# duration = durata del Film/Serie/Anime/Altro
# genere = genere del Film/Serie/Anime/Altro. Es: avventura, commedia
# 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
# lang = lingua del video. Es: ITA, Sub-ITA, Sub, SUB ITA. Se non appare 'ITA' è di default
@support.scrape
def peliculas(item):
support.log(item)
#dbg # decomenntare per debug
action = ''
blacklist = ''
patron = ''
patronBlock = ''
patronNext = ''
debug = False # True per debug
return locals()
@support.scrape
def episodios(item):
support.log(item)
#dbg # decomenntare per debug
action = ''
blacklist = ''
patron = ''
patronBlock = ''
patronNext = ''
debug = False
return locals()
@support.scrape
def genres(item):
support.log(item)
#dbg # decomenntare per debug
action = ''
blacklist = ''
patron = ''
patronBlock = ''
patronNext = ''
debug = False
return locals()
############## Fine ordine obbligato
## Def ulteriori
############## Fondo Pagina
# da adattare al canale
def search(item, text):
support.log('search', item)
itemlist = []
text = text.replace(" ", "+")
item.url = host+"/index.php?do=search&story=%s&subaction=search" % (text)
try:
return peliculas(item)
# Se captura la excepcion, para no interrumpir al buscador global si un canal falla
except:
import sys
for line in sys.exc_info():
logger.info("%s mainlist search log: %s" % (__channel__, line))
return []
# da adattare al canale
def newest(categoria):
support.log('newest ->', categoria)
itemlist = []
item = Item()
try:
if categoria == "peliculas":
item.url = host
item.action = "peliculas"
itemlist = peliculas(item)
if itemlist[-1].action == "peliculas":
itemlist.pop()
# Continua la ricerca in caso di errore
except:
import sys
for line in sys.exc_info():
logger.error("{0}".format(line))
return []
return itemlist
# da adattare... ( support.server ha vari parametri )
def findvideos(item):
support.log('findvideos ->', item)
return support.server(item, headers=headers)
</code></pre>
+1 -1
@@ -4,4 +4,4 @@
* [funzioni di debug](https://github.com/kodiondemand/addon/wiki/funzioni-di-debug)
* [Testare i Canali](https://github.com/kodiondemand/addon/wiki/Testare-un-canale)
* [Installazione e aggiornamenti](https://github.com/kodiondemand/addon/wiki/aggiornamenti)
+45
@@ -0,0 +1,45 @@
# Installazione e aggiornamenti
KoD, a differenza degli altri addon utilizza un sistema di installazione e di aggiornamento tutto suo, esigenza nata dal fatto che i siti cambiano spesso, per stargli dietro sono quindi necessari aggiornamenti costanti, che spesso consistono in modifiche di poco conto.<br>
Modifiche che sarebbe meglio finissero il più velocemente possibile sui dispositivi degli utenti.
Utilizzare un repository kodi, come fanno tutti gli addon, implica
alcune operazioni "noiose" ogni qualvolta si vuole mandare un update.
Script come [repo_prep](https://forum.kodi.tv/showthread.php?tid=129401) aiutano, ma si tratta comunque di un operazione in più.<br>
Inoltre, lato utente, kodi cerca gli aggiornamenti ogni tanto (spesso si devono forzare se si vuole averli dubito) e
scarica l'intero addon di nuovo anche se è stata modificata una sola linea.
L'updater "ad hoc" di kod invece, non necessita di nessun effort aggiuntivo (a parte per le Major release), basta pushare su github ed hai già fatto un aggiornamento.<br>
Gli aggiornamenti vengono cercati ad ogni avvio di kodi, viene scaricato solo il minimo indispensabile (le singole modifiche ai singoli file) e viene mostrato un messaggio con il changelog (il nome del commit).
## Funzionamento in sintesi:
All'avvio di kodi l'updater chiama le api di GitHub per vedere qual'è l'ultimo commit e quindi se è necessario aggiornare:
se ci sono commit nuovi, scarica le relative patch (generate da github) e le applica in locale.<br>
Per tenere conto del commit attuale, usa un file apposito (last_commit.txt).<br>
Per vedere a che commit si trova il tuo KoD, basta aprirlo e guardare il numero nella sezione aiuto
![commit hash](img/commit.png)<br>
Per poi confrontarlo con la [lista dei commit](https://github.com/kodiondemand/addon/commits/stable)
## Kod beta e kod stable
Lo sviluppo avviene su 2 rami:
- [branch master](https://github.com/kodiondemand/addon), che sarebbe la beta, dove sviluppiamo e testiamo le nuove feature e i vari fix
- [branch stable](https://github.com/kodiondemand/addon/tree/stable), su cui viene riversato ogni cambiamento testato e verificato
## Installazione
Per toglierci anche il "peso" di rigenerare ogni tanto lo zip di installazione,
Abbiamo creato un installer, che altro non fa che "fingersi" kod,
scaricare lo zip da GitHub (in modo da essere sempre aggiornato) ed
installarlo (di fatto, cancellandosi).<br>
Per velocizzare le cose, nel frattempo vi chiederà di impostare la videoteca.
## Installazione senza installer
Installare kod direttamente è possibile, ma se non è aggiornato dovrà recuperare il gap (facendovi perdere tempo).<br>
In tal caso, siccome non saprà a che commit si trova, cercherà di capirlo calcolando l'hash di se stesso (in caso di fallimento, scaricherà lo zip da GitHub, di fatto auto-aggiornandosi).<br>
## Impostazioni
È possibile disabilitare gli aggiornamenti o scegliere di non mostrare i messaggi in impostazioni -> Preferenze -> Altro:
## Dev mode
Lato sviluppo, è necessario che l'updater sia disattivato, per evitare di interferirsi a vicenda.
Pertanto, se esiste una cartella .git (si presume che gli sviluppatori lavorino direttamente con git), si abiliterà la Dev mode, che, tra le altre cose,
disabilita l'updater.
BIN
Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB