====== Installazione di Kodi su Debian 9 ======
**[[http://kodi.tv/|Kodi]]** è il nuovo nome di XBMC, a partire dalla **versione 14**. Vedere le vecchie pagine [[..:linux:tux:xbmc]] e [[..:hardware/raspberrypi_openelec]], perché gran parte degli appunti restano validi.
===== Su Debian 9 Stretch =====
Si è preferito installare il pacchetto da **[[http://www.deb-multimedia.org/|deb-multimedia.org]]** piuttosto che quello ufficiale fornito da Debian, sia perché è una versione più recente (**17.6** invece di 17.1) sia per gestire al meglio le dipendenze da codec proprietari che in Debian non ci sono, ma sono presenti in Deb-Multimedia.
La pacchettizzazione Debian di Kodi **dipende da xserver-xorg**, tuttavia non abbiamo installato un login manager (//lightdm//, //gdm//, o simili) quindi l'host si avvia con il **login su console testuale**.
**ATTENZIONE** :!: In configurazioni più recenti, ad esempio **RaspiOS** basato su **Debian 10.8 Buster** che installa **Kodi 18.7 Leia**, il pacchetto Kodi si può installare in modo del tutto diverso, senza **xserver-xorg**. Vedere **[[..:hardware:raspberrypi_nas_kodi]]**.
Con Debian 9 Stretch è stato necessario installare i seguenti pacchetti e le loro dipendenze:
* **kodi**
* **kodi-standalone**
* **libgl1-mesa-dri**
Altri pacchetti consigliati:
* **kodi-peripheral-joystick** - Necessario se si vuole utilizzare un gamepad come telecomando.
* **kodi-eventclients-kodi-send** - Contiene il tool **kodi-send** necessario per pilotare Kodi da riga di comando.
La formula per avviare kodi suggerita da **[[http://kodi.wiki/view/HOW-TO:Autostart_Kodi_for_Linux#Add_a_new_systemd_script|kodi.wiki]]** è la seguente:
/usr/bin/xinit /usr/bin/dbus-launch --exit-with-session \
/usr/bin/kodi-standalone -- :0 -nolisten tcp vt7
Senza il pacchetto **libgl1-mesa-dri** l'avvio di xinit/kodi falliva, lasciando nel kodi_crashlog-*.log questo errore:
ERROR: Failed to find matching visual
Per consentire all'**utente non privilegiato kodi** (creato apposta) di avviare Kodi è stato necessario modificare il file **/etc/X11/Xwrapper.config**, mettendo le righe:
allowed_users=anybody
needs_root_rights=yes
In alcuni post viene consigliato anche di eseguire ''dpkg-reconfigure x11-common''. Senza queste modifiche l'esecuzione di xinit/kodi da parte dell'utente non-root dava il seguente errore del server X:
Fatal server error:
(EE) xf86OpenConsole: Cannot open virtual console 7 (Permission denied)
L'utente kodi appartiene ai **gruppi** di sistema **audio**, **video** e **plugdev**. Il pacchetto **policykit-1** è installato, ma non sono state fatte personalizzazioni. In queste condizioni il **menu Power** di Kodi consente il **reboot** e lo **spengimento** anche all'utente non privilegiato.
L'esecuzione xinit/kodi funziona a questo punto da utente non privilegiato, sia da console locale che da terminale remoto. Per **avviare il servizio kodi al bootstrap** si è creata una //unit systemd//:
[Unit]
Description = Kodi Media Center
# if you don't need the MySQL DB backend, this should be sufficient
After = systemd-user-sessions.service network.target sound.target
# if you need the MySQL DB backend, use this block instead of the previous
# After = systemd-user-sessions.service network.target sound.target mysql.service
# Wants = mysql.service
[Service]
User = kodi
Group = kodi
Type = simple
ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/kodi-standalone -- :0 -nolisten tcp vt7
Restart = always
RestartSec = 15
[Install]
WantedBy = multi-user.target
e quindi si è installato, abilitato e avviato il servizio:
systemctl daemon-reload
systemctl enable kodi.service
systemctl start kodi.service
===== Su Debian 7 Wheezy =====
Si installa facilmente su Debian Wheezy, basta aggiungere i repository:
deb https://people.debian.org/~rbalint/ppa/xbmc-ffmpeg xbmc-ffmpeg-wheezy-backports/
deb http://http.debian.net/debian wheezy-backports main contrib non-free
Seguire le **[[https://people.debian.org/~rbalint/ppa/xbmc-ffmpeg/|istruzioni del repository]]**, in sintesi:
apt-get install debian-keyring
apt-get install apt-transport-https
gpg --keyring /usr/share/keyrings/debian-keyring.gpg -a --export 21E764DF | sudo apt-key add -
Quindi installare i seguenti pacchetti:
* **alsa-base** e **alsa-utils** per il supporto audio.
* **x11-common** e **xinit** per poter avviare l'ambiente grafico. Non serve un ambiente desktop completo.
* **kodi** e **kodi-bin** il software media center vero e proprio.
* **upower** e **acpi-support** per gestire lo spengimento/reboot dai menu di Kodi (vedere **[[..:linux:tux:xbmc#altre_impostazioni| XBMC, altre impostazioni]]**).
Quando serve una dipendenza necessariamente dai bacports:
apt-get -t wheezy-backports install libtag1c2a
Si crea un utente **kodi** per mandare in esecuzione il software omonimo, deve appartenere ai vari gruppi Debian quali **audio**, **video**, **plugdev**, ecc.
===== Script start/stop =====
Lo script per avviare Kodi automaticamente al bootstrap è stato preso dalla pagina [[http://kodi.wiki/view/HOW-TO:Autostart_Kodi_for_Linux|Autostart Kodi for Linux]], opportunamente aggiornato per il passaggio di nome XBMC -> Kodi.
===== Aggiornamento delle miniature =====
Per ogni video è possibile visualizzare una miniatura personalizzata al posto di quella creata automaticamente; basta mettere un file JPG oppure PNG nella stessa directory del file video, chiamandolo con lo stesso nome e l'estensione **.tbn**.
Queste immagini vengono salvate in una cache e in un database, quindi aggiornarle non è semplice. Un metodo drastico è eliminare il file **''$HOME/.kodi/userdata/Database/Textures13.db''** e i file in **''$HOME/.kodi/userdata/Thumbnails/''**.
Pare che esista uno script più efficace: [[http://kodi.wiki/view/Texture_Cache_Maintenance_utility|Texture Cache Maintenance utility]].
===== Catturare una schermata di Kodi =====
È possibile catturare la schermata corrente di Kodi eseguendo una **riga di comando** in una shell dell'host stesso. Si deve installare il pacchetto Debian **kodi-eventclients-kodi-send** e quindi eseguire:
kodi-send --action="TakeScreenshot"
Alla prima esecuzione, nell'interfaccia Kodi, compare la richiesta di directory destinazione, dove verrà salvato il file PNG. Le richeiste successive utilizzeranno la stessa directory (fino al riavvio successivo).
===== Library data from local .nfo files =====
**[[http://kodi.wiki/view/NFO_files|NFO files]]**
* Video => File => **Aggiungi Video...**
* **Imposta contenuto**
* Questa directory contiene: **Film**
* Scegli provider di informazioni: **Local information only**
FIXME Something is not working as wanted:
* How to override directory names? The folder.jpg is used as thumbnail, but the name is just the directory name.
* Yatse problem in file browse mode: directories are hidden by the thumbnail of one of the files contained into.
==== File view, but with library data ====
* Impostazioni
* Impostazioni Media
* Filmati
* Sostituisci nomi file con titoli Librerie
==== The year 1601 problem ====
We incurred into a problem with movie date in **[[https://play.google.com/store/apps/details?id=org.leetzone.android.yatsewidgetfree|Yatse]]**, the Android application to control Kodi remotely: every movie was presented as released in **year 1601**. It turned out that you must use the **%%%%** tag into the **.nfo** file, instead of the **%%%%** one. The tag must be in the ISO format **YYYY-MM-DD**, otherwise it will be not parsed.
L'era glaciale 3 - L'alba dei dinosauri
era glaciale 3
Era Glaciale
Animazione
2009-01-01
===== Layout tastiera italiana =====
==== On-Screen keyboard ====
Stranamente **Kodi 14.0** su Debian Wheezy **non include il layout italiano per la tastiera on-screen** (cioè quella utilizzabile anche con il telecomando o il mouse). I vari layout sono definiti nel file **''/usr/share/kodi/system/keyboardlayouts.xml''** e pare che non sia possibile creare un file personalizzato con layout aggiuntivi (almeno con la versione 14 Helix). Questo è un problema perché se si modifica il file, questo sarà sostituito durante un aggiornamento di Kodi.
Ad ogni modo si deve aggiungere una sezione del tipo:
1234567890'ì
qwertyuiopè+
asdfghjklòàù
zxcvbnm,.-
1234567890?^
QWERTYUIOPé*
ASDFGHJKLç°§
ZXCVBNM;:_
/\|@€#[]<>`~
!"£$%&()='?
<>,.-+*_^§ç
Quindi dall'interfaccia Kodi si seleziona quali layout tenere a disposizione (se sono più di uno sarà possibile cambiare da uno all'altro durante l'input da tastiera virtuale):
* //**Sistema**//, //**Impostazioni**//, //**Aspetto**//
* //**Livello impostazioni**// => Standard (o superiore)
* //**Internazionale**// => Layout della tastiera
==== Tastiera hardware ====
**Kodi 14.0 su Debian Wheezy ha un bug** per cui la tastiera localizzata non funziona: quando si digita un input con la tastiera fisica nell'interfaccia di Kodi, è attivo sempre il layout US. Questo nonostante che il sistema sia configurato correttamente (la console ad esempio produce le lettere accentate come deve essere):
* **''dpkg-reconfigure locales''**
* **''dpkg-reconfigure keyboard-configuration''**
Neanche creando un file **''/etc/X11/xorg.conf.d/00-keyboard.conf''** con l'opportuna sezione ''InputClass'' e l'opzione ''XkbLayout'' si ottiene la localizzazione (eppure la direttiva viene caricata, come si può verificare da ''/var/log/Xorg.0.log'').
Ancor più stranamente: se da una terminale virtuale (Alt+F1) si modifica l'impostazione della tastiera, allora Kodi inizia a funzionare correttamente, senza neanche riavviarlo:
export DISPLAY=:0
setxkbmap it
Il tutto è molto strano, poichè le impostazioni mostrate con **''setxkbmap -print -verbose 10''** non cambiano prima e dopo aver dato il comando. Tutto sommato pare che il workaround migliore sia quello di impostare un autoexec per Kodi in **''/home/kodi/.kodi/userdata/autoexec.py''**:
import os
os.system("setxkbmap it")
===== Personalizzazione Skin =====
La **skin predefinita** di Kodi 17 Krypton si chiama **Estuary** ed è abbastanza soddisfacente, salvo per la dimensione delle miniature dei video nella **modalità Muro** (Wall): le immagini sono **quadrate** e troppo **piccole**. Nella nostra collezione abbiamo invece preparato tutte le miniature (file **.tbn**) nel formato 4:3.
È sifficiente modificare alcuni file XML e riavviare Kodi per provare un layout più soddisfacente. La directory che contiene la skin è **/usr/share/kodi/addons/skin.estuary/xml/**, i file sono:
* **View_500_Wall.xml**
* **View_54_InfoWall.xml**
* **Includes_Home.xml**
===== Impostazioni Consigliate per Kodi 17 =====
Il nostro utilizzo di Kodi è orientato alle seguenti caratteristiche:
* Si privilegia la consultazione in **modalità file**, piuttosto che sfogliare i **metadati della library**. Questo perché in generale la library organizza i contenuti in **modalità piatta** (ricerca per genere, anno, tag, ecc.), ma non consente una **organizzazione strettamente gerarchica**, come invece è naturale nella modalità file.
* I **metadati** sono forniti **localmente** con file **.nfo** e miniature **.tbn**, non si prevede di fare lo scraping da siti esterni. Questo perché la qualità e la completezza dei fan-siti è abbastanza modesta per i contenuti in italiano.
* Non interessa la suddivisione dei video in **Movies**, **TV Shows** e **Music Videos**. Soprattutto la categoria //TV Shows// impone vincoli e gerarchie molto articolate e stringenti, si preferisce classificare tutto come //movie// e sfruttare l'organizzazione gerarchica per directory.
Ecco i **consigli** per una corretta visualizzazione dei contenuti video:
* Assegnare al file **un nome che permetta il corretto ordinamento alfabetico** (eventualmente quindi usare un prefisso per l'ordinamento delle serie TV, omettere l'articolo, ecc.). Tale nome può essere usato direttamente anche come **%%%%** nel file .nfo. Se si preferisce è possibile usare l'underscore al posto degli spazi e solo lettere minuscole, secondo la prassi Unix.
* Creare il file **.nfo** per assegnare il **%%%%** al video, con eventuali spazi, ecc. Aggiungere anche l'immagine miniatura in formato JPEG, ma con estensione **.tbn**.
* Aggiungere la directory come sorgente video e aggiornare la libreria con il suo contenuto (dal menu contestuale della directory scegliere //Scan to library//). Se non si esegue questo passaggio non sarà possibile scegliere una delle **modalità di visualizzazione** di Kodi.
* Nella visualizzazione Video si consiglia la modalità **Wall** con l'ordinamento per nome file. Come etichetta sarà mostrato non il nome del file, ma il titolo contenuto nel file .nfo (vede sotto le impostazioni //Media settings//).
Come **metadati** da includere nei file **.nfo** ci è sufficiente assegnare:
* **title**
* **sorttitle** titolo da usare per l'ordinamento
* **genre**
* **premiered** data dell'uscita nel formato YYYY-MM-DD
* **showtitle**, per le serie TV, il nome della serie
* **tag**, per una eventuale ricerca veloce tramite library (es. il nome della serie TV).
* **season**, per le serie TV, il numero della stagione
* **episode**, per le serie TV, il numero dell'episodio, nella stagione
Kodi ha innumerevoli parametri che possono essere personalizzati, ecco alcuni consigli su cosa impostare dal menu **Settings** (icona a forma di ingranaggio):
* System settings => Addons => Updates => **Never check for updates**
* Media settings => General => **Show file extensions** (No)
* Media settings => Videos => **Extract thumbnails from video files** (Yes)
* Media settings => Videos => **Replace file names with library titles** (Yes)
* Media settings => Music=> Default provider for **album** information => **Local information only**
* Media settings => Music=> Default provider for **artist** information => **Local information only**
===== Apertura automatica di una directory all'avvio =====
Pare che Kodi 17 supporti il file **$HOME/.kodi/userdata/autoexec.py**. Vedere gli appunti presi per **[[..:hardware:raspberrypi_openelec#autostart|l'autostart con OpenELEC]]**: pare che siano ancora validi (compreso l'**''import xbmc''** e i metodi). Anche il wiki di Kodi **[[http://kodi.wiki/view/Autoexec.py|ha una pagina a riguardo]]**.
===== Kodi 17 Cheat Sheet =====
Vedere **[[http://kodi.wiki/view/Keyboard_controls|Keyboard controls]]**.
^ Key ^ Function ^ Note ^
^ Space | Pause | |
^ X | Stop playback | |
^ Enter |Player controls (OSD) | |
^ - (minus) | Volume down | |
^ + (plus) | Volume up | |
^ C | Contextual menu | Utile ad esempio per mettere in coda una intera directory. |
^ ESC | Previous menu | Utile anche per chiudere il menu OSD. |
^ S | Shutdown menu | Per spengere o riavviare l'host. |
^ T | Subtitles | Attiva o disattiva i sottotitoli. |
^ A | Audio delay | Aggiusta la sincronizzazione audio-video. |
^ TAB | Fullscreen playback | |
^ \ (backslash) | Fullscreen mode | Fullscreen/windowed mode. |