NFO-Dateien für Kodi nach Dateinamen erstellen – massenhaft!
Ihr wollt eigene Videos in die Kodi-Bibliothek aufnehmen? Mit Scrapern funktioniert das nicht, aber mit lokalen NFO-Dateien. Fehlt nur noch die Automatisierung.
Ein Leser fragte kürzlich nach genau so einer Möglichkeit: Eigene Videos, die natürlich nicht über Online-Datenbanken gescrapert werden können, in die Bibliothek aufnehmen. Ein Plugin dafür ist mir zumindest nicht bekannt. Aber es wäre doch ein Wunder, wenn ich da nicht eine Frickellösung hätte ;) Nun, eigentlich ist es nur eine einzige Skriptzeile ...
NFO-Dateien und Voraussetzungen
NFO-Dateien für Kodi heißen wie die zugehörigen Dateien ohne Dateinamenerweiterung - aus foobar.mp4 wird also foobar.nfo und so weiter. Das genügt aber nicht. In die NFO-Dateien gehört nun auch noch ein XML-Gerüst. Die Vorlage für zum Beispiel Film-NFO-Dateien gibt es im Kodi-Wiki.
Im Grunde müssen also nur für alle vorhandenen Videodateien zugehörige NFO-Dateien erstellt werden, die das Template beinhalten und natürlich den richtigen Filmtitel, also wieder den Dateinamen.
Das folgende Skriptchen ist mal eben für die Leserfrage entstanden - und insofern freilich nicht für jedes Szenario geeignet. Es läuft hier unter Windows 11 in der Bash und für MP4-Dateien in einem einzigen Verzeichnis. Die Struktur samt der NFO-Vorlage sieht also so aus:
- Ordner -- foo.mp4 -- bar.mp4 -- template.nfo
Um Dinge wie Rekursion, andere Dateiformate oder behämmerte Dateinamen mit Leer- und Sonderzeichen müsst Ihr Euch gegebenenfalls selbst kümmern.
NFOs erzeugen
Zunächst mal ein Auszug aus der Movie-Vorlage aus dem Kodi-Wiki, die Ihr lokal als template.nfo benötigt:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<movie>
<title>kopfgeburt</title>
<originaltitle></originaltitle>
...
</movie>
Das Wort kopfgeburt stammt natürlich von mir. Der Sinn dahinter: Das wird später durch den richtigen Titel/Dateinamen ersetzt - es sollte einfach etwas sein, das wohl eher kein Dateiname ist. Hebammen mögen vielleicht etwas anderes als Dummy einsetzen ...
Und hier das Skriptchen als One-Liner:
for i in $(ls *.mp4); do name=$(basename -s .mp4 $i) && cp template.nfo $name.nfo && sed -i " s/kopfgeburt/$name/ " $name.nfo; done
Oder etwas hübscher formatiert:
for i in $(ls *.mp4)
do
name=$(basename -s .mp4 $i)
cp template.nfo $name.nfo
sed -i " s/kopfgeburt/$name/ " $name.nfo
done
Was hier passiert:
- Die for-Schleife liest über das ls-Kommando alle Dateien ein, die auf mp4 enden.
- basename setzt die Variable name auf den Dateinamen - ohne .mp4-Suffix.
- cp kopiert die Vorlage-NFO zu einer Dateiname-NFO.
- sed ersetzt das Wort kopfgeburt durch den Dateinamen.
Nun könnte man noch mehr Logik drum herum bauen, Anführungszeichen gegen schlechte Dateinamen verwenden, weitere Daten im Template fix angeben etc. Den Ordner mit den Video- und NFO-Dateien könnt Ihr nun wie eh und je als neue Quelle aufnehmen.
Mehr zu Kodi (auch normales Zeugs, versprochen).