====== 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. |