diff --git a/Revisione:-Scheletro-Canale-.py.textile b/Revisione:-Scheletro-Canale-.py.textile deleted file mode 100644 index e6c9e77..0000000 --- a/Revisione:-Scheletro-Canale-.py.textile +++ /dev/null @@ -1,217 +0,0 @@ -
# -*- 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)
-
\ No newline at end of file diff --git a/_Sidebar.md b/_Sidebar.md index d9a68ae..fef46c4 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -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) - \ No newline at end of file +* [Installazione e aggiornamenti](https://github.com/kodiondemand/addon/wiki/aggiornamenti) \ No newline at end of file diff --git a/aggiornamenti.md b/aggiornamenti.md new file mode 100644 index 0000000..4f59d69 --- /dev/null +++ b/aggiornamenti.md @@ -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.
+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ù.
+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.
+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.
+Per tenere conto del commit attuale, usa un file apposito (last_commit.txt).
+Per vedere a che commit si trova il tuo KoD, basta aprirlo e guardare il numero nella sezione aiuto +![commit hash](img/commit.png)
+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).
+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).
+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).
+ +## 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. \ No newline at end of file diff --git a/img/commit.png b/img/commit.png new file mode 100644 index 0000000..13e840a Binary files /dev/null and b/img/commit.png differ