Funzionamento (bozza)

mac12m99
2021-05-30 11:49:12 +02:00
parent 3b0abae427
commit 88d9fd35f6
3 changed files with 36 additions and 1 deletions
+1
@@ -14,6 +14,7 @@
* [Struttura e funzionamento (per sviluppatori)](https://github.com/kodiondemand/addon/wiki/per-sviluppatori)
* [Struttura](https://github.com/kodiondemand/addon/wiki/Struttura)
* [Funzionamento di base](https://github.com/kodiondemand/addon/wiki/Funzionamento)
* [Installazione e aggiornamenti](https://github.com/kodiondemand/addon/wiki/aggiornamenti)
* [Modalità di sviluppo](https://github.com/kodiondemand/addon/wiki/dev-mode)
* [Canale di esempio](https://github.com/kodiondemand/addon/wiki/canale-di-esempio)
+33
@@ -0,0 +1,33 @@
Prima di leggere questa sezione dai un'occhiata alla [sezione sviluppo add-on ufficiale di kodi](https://kodi.wiki/view/Add-on_development).
Come avrete letto dalla wiki di kodi, un addon viene chiamato ogni qualvolta si clicca un item in una sua sezione (o viene richiamato esternamente), effettua delle operazioni ed eventualmente ritorna altri item.
Ad esempio, quando si naviga all'interno delle varie sezioni, ogni volta che si clicca, l'addon viene chiamato e termina la sua esecuzione mostrando gli item sottostanti.
Per fare in modo che l'addon sappia [b]cosa[/b] deve fare, ogni item ha un URL fatto in questo modo:
plugin://plugin.video.nome/?parametri
Questa sezione spiega il processo di [serializzazione](https://it.wikipedia.org/wiki/Serializzazione) usato da KoD per salvare negli item che crea tutte le info necessarie, per poi ricostruirle quando quegli item vengono selezionati (deserializzazione)
Le logiche utilizzate sono state ereditate dall'addon Alfa, che a sua volte le ha ereditate dal defunto pelisalacarta. Per quanto vecchie sono ancora molto efficaci.
# La classe Item
Tutte le sezioni vengono rappresentate attraverso oggetti di questa classe, i cui parametri vengono utilizzati per la creazione dei [ListItem](https://codedocs.xyz/xbmc/xbmc/group__python__xbmcgui__listitem.html) di kodi, e che viene convertita in un URL.
Oltre a tutti i parametri "fissi" che vengono letti ed interpretati da kodi (title, thumbnail ecc..) è possibile inserire altri parametri a piacere, l'importante è che siano convertibili in JSON(poi vedrete perchè)
```python
it = Item(title="titolo mostrato in kodi", thumbnail="URL della thumbnail che kodi visualizzerà")
it.parametro = ['1', '2'] # assegno un parametro arbirario, posso usare una lista perchè convertibile in JSON
```
## Creazione e lettura URL
Gli oggetti di tipo Item, per essere rappresentati sottoforma di URL vengono prima convertiti in JSON e poi in base64 (in modo che diventi un URL valido), esempio:
plugin://plugin.video.kod/?ewogICAgImNoYW5uZWwiOiAic2VhcmNoIiwKICAgICJhY3Rpb24iOiAibmV3X3NlYXJjaCIsCiAgICAibW9kZSI6ICJhbGwiCn0=
Se decodificate la parte dopo il ? vedrete che si tratta di questo JSON
```
{
"channel": "search",
"action": "new_search",
"mode": "all"
}
```
## Lanciare comandi specifici
Ciò che dice a KoD quale comando eseguire sono i parametri "channel" e "action": channel indica di quale canale si tratta (ovvero file .py in channels/) e "action" la funzione da chiamare.
Per tutte le funzioni "extra" basta usare action, siccome non si riferiscono a nessun canale in particolare.
Il file che si occupa di decidere cosa fare in base all'oggetto item selezionato è platformcode/launcher.py
+2 -1
@@ -1,7 +1,8 @@
In questa sezione troverete tutte le informazioni basilari per capire la struttura ed il funzionamento dell'addon. Per sviluppare nuove funzioni è necessaria una conoscenza quantomento basilare del python, per aggiungere nuovi canali, invece, basta saper leggere e scrivere le regex.
Per contribuire al progetto leggi [qui](https://github.com/kodiondemand/addon/blob/master/CONTRIBUTING.md#per-sviluppatori)
* [Struttura](https://github.com/kodiondemand/addon/wiki/Struttura.md)
* [Struttura](https://github.com/kodiondemand/addon/wiki/Struttura)
* [Funzionamento di base](https://github.com/kodiondemand/addon/wiki/Funzionamento)
* [Installazione e aggiornamenti](https://github.com/kodiondemand/addon/wiki/aggiornamenti)
* [Modalità di sviluppo](https://github.com/kodiondemand/addon/wiki/dev-mode)
* [Canale di esempio](https://github.com/kodiondemand/addon/wiki/canale-di-esempio)