User Tools

Site Tools


doc:appunti:linux:tux:kodi

This is an old revision of the document!


Kodi

Kodi è il nuovo nome di XBMC, a partire dalla versione 14. Vedere le vecchie pagine XBMC Media Center e Raspberry PI mediacenter con OpenELEC, perché gran parte degli appunti restano validi.

Su Debian 9 Stretch

Si è preferito installare il pacchetto da 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.

È stato necessario installare i seguenti pacchetti con le loro dipendenze:

  • kodi
  • kodi-standalone
  • libgl1-mesa-dri

La formula per avviare kodi suggerita da 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 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.

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 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: Texture Cache Maintenance utility.

Library data from local .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 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 <premiered> tag into the .nfo file, instead of the <year> one. The tag must be in the ISO format YYYY-MM-DD, otherwise it will be not parsed.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- created on 2017-12-30 15:09:33 - by MediaManager -->
<movie>
    <title>L'era glaciale 3 - L'alba dei dinosauri</title>
    <sorttitle>era glaciale 3</sorttitle>
    <set>Era Glaciale</set>
    <genre>Animazione</genre>
    <premiered>2009-01-01</premiered>
</movie>

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:

  <layout name="Italian QWERTY">
    <keyboard>
      <row>1234567890'ì</row>
      <row>qwertyuiopè+</row>
      <row>asdfghjklòàù</row>
      <row>zxcvbnm,.-</row>
    </keyboard>
    <keyboard modifiers="shift">
      <row>1234567890?^</row>
      <row>QWERTYUIOPé*</row>
      <row>ASDFGHJKLç°§</row>
      <row>ZXCVBNM;:_</row>
    </keyboard>
    <keyboard modifiers="symbol,shift+symbol">
      <row>/\|@€#[]&lt;&gt;`~</row>
      <row>!"£$%&amp;()='?</row>
      <row>&lt;&gt;,.-+*_^§ç</row>
    </keyboard>
  </layout>

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.

  • /usr/share/kodi/addons/skin.estuary/xml/View_500_Wall.xml
  • /usr/share/kodi/addons/skin.estuary/xml/View_54_InfoWall.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.
  • 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 ⇒ Music⇒ Default provider for album information ⇒ Local information only
  • Media settings ⇒ Music⇒ Default provider for artist information ⇒ Local information only
doc/appunti/linux/tux/kodi.1515149691.txt.gz · Last modified: 2018/01/05 11:54 by niccolo