Bei Aufnahme automatisch .nfo-Datei mit EPG-Infos anlegen

  • Unter Linux kann man ja mehrere Befehle/Skripte per && nacheinander ausführen. Da Comskip sicherlich viel länger läuft als die main.py, würde ich das Python-Skript zuerst laufen lassen:

    main.py && /usr/bin/comskip --ini=/config/comskip/comskip.ini "%f"

    Ich hab' aber keine Ahnung, ob das so funktioniert.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • In der TVHeadend-Hilfe habe ich zum Kommando zur Nachbearbeitung das hier gefunden:

    Zitat

    To redirect command output or chain commands, wrap the command in a shell, e.g.
    sh -c "df -P -h /recordings >/config/.markers/recording-post-process"
    sh -c "df -P -h /recordings | tee /config/.markers/recording-post-process"


    Damit kann ich nur leider nichts anfangen [bn]

  • Naja Du sollst mehrere Kommandos zu einer Shell zusammenfassen Ich würde jetzt einfach ein Shellscript (postprocessor.sh) mit beiden Befehlen erstellen und dieses als Postprozessor aufrufen


    Bash
    #!/bin/sh
    <kompletter-pfad-zur-main.py>/main.py
    /usr/bin/comskip --ini=/config/comskip/comskip.ini "$1"

    ausführbar machen: chmod a+x postprocessor.sh und postprocessor.sh ggf. mit kompletten Pfad als Postprozessor in TVH eintragen.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    2 Mal editiert, zuletzt von PvD (9. Dezember 2021 um 20:53)

  • Ich fürchte, das wird so nicht funktionieren. In deinem Skript, @PvD, "%1" [EDIT] "$1" statt "%f". Und (und da fürchte ich, da kriege ich das Quoting ohne Probieren auch nicht hin. In tvh sowas wie das konfigurieren

    Code
    /bin/sh -c '/pfad/zu/sh-script/von/PvD "%f"'


    bzw. gleich

    Code
    /bin/sh -c '/pfad/zu/main.py && /usr/bin/comskip --ini=/config/comskip/comskip.ini "%f"'


    Wenn es so nicht geht, würde ich noch probieren

    Code
    /bin/sh -c "/pfad/zu/main.py && /usr/bin/comskip --ini=/config/comskip/comskip.ini \"%f\""


    Hängt halt nicht nur vom Quoting der Shell ab, sondern auch wie intern tvh da tickt und das Quoting bearbeitet (oder auch nicht).

    Kodi 21.0, 17.6, 20.5, 16, 20.5 on Windows 11 Pro, Android 6, Android 12, FireTV Box 2nd Gen, FireTV 4k Max 2nd Gen
    Media on NAS, OpenMediaVault 6 (Debian Linux).

    Einmal editiert, zuletzt von buers (9. Dezember 2021 um 19:14)

  • Danke, ich hab's mal oben korrigiert. Das müsste man halt alles mal durchprobieren.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • @psychofaktory: Ich hab' mal eine 2.7er auf Github gelegt: https://github.com/b-jesch/nfocreator

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Ich konnte inzwischen ein bisschen testen.

    Zuerst:
    Das Skript von @PvD funktioniert ganz hervorragend! [ay]

    Habe alle vorgeschlagenen Varianten durchprobiert.
    Der Weg über die postprocessor.sh funktioniert. Sowohl main.py als auch comskip werden aufgerufen
    Die sieht jetzt wie folgt aus:

    Bash
    #!/bin/sh
    /config/scripts/main.py
    /usr/bin/comskip --ini=/config/comskip/comskip.ini "%f"


    diese wurde über folgendes Kommando zur Nachbearbeitung aus TVH aufgerufen:
    /config/scripts/postprocessor.sh

    wird "%f" in der postprocessor.sh weggelassen und stattdessen wie vorgeschlagen dem Kommando zur Nachbearbeitung angehängt meckert TVH so:
    ComSkip: missing option 

    Allerdings hab ich jetzt das Problem, dass comskip keine Dateien mehr ablegen mag:
    Permission denied - could not create file %f.txt

  • Dein Skript musst Du so aufrufen: /config/scripts/postprocessor.sh "%f"
    Der Parameter in Deinem Shellskript for comskip heisst "%1" statt "%f", also /usr/bin/comskip --ini=/config/comskip/comskip.ini "%1"

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Das macht beides offenbar keinen Unterschied.

    Habs jetzt jetzt so probiert wie du eben beschrieben hast. Kommt aber wieder nur
    Permission denied - could not create file %f.txt

    Edit:
    Habs eben mit dem gleichen Film nochmal mit dem ursprünglichen comskip-Befehl versucht. Da können die benötigten Dateien durch comskip angelegt werden.

  • Sorry, in Deinem Skript muss das anstelle von "%1" --> "$1" sein.

    https://www.linux-praxis.de/kommandozeilenparameter

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Ups, war mein Fehler. Zuviele Wechsel zwischen Linux und Windows. Ich nehme an, das wird dennoch nicht funktionieren. Wenn ich da tvh richtig verstanden habe, wird der Prozess so ausgeführt wie angegeben - d.h. es wird nicht per Default eine Shell gestartet um den Prozess auszuführen. Wenn man die Shell braucht (für Shell-Skript oder Command-Chaining) muss man die nach meinem Verständnis explizit starten, wie ich das versucht habe darzustellen in #24 (aber halt ungetestet).

    Kodi 21.0, 17.6, 20.5, 16, 20.5 on Windows 11 Pro, Android 6, Android 12, FireTV Box 2nd Gen, FireTV 4k Max 2nd Gen
    Media on NAS, OpenMediaVault 6 (Debian Linux).

  • Hallo zusammen,
    erstmal vielen Dank für die viele Mühe!
    Ich bräuchte aber noch etwas Hilfe. Ich bekomme immer eine Fehlermeldung:

    2021-12-27 09:10:58.221 spawn: File "/config/scripts/main.py", line 184, in
    2021-12-27 09:10:58.221 spawn: with open(basepath + '.nfo', 'w') as f: f.write(ElTr.tostring(root, encoding='UTF-8', method='xml'))
    2021-12-27 09:10:58.221 spawn: TypeError: write() argument must be str, not bytes

    und die nfo Datei ist leer. Liegt das daran, dass ich das Python 2.7 Skript auf 3.8 laufen lasse?
    Leider finde ich das Skript für 3.8 nicht, falls da mal ein zweites war...

    Wenn ich oben Python2.7 drinnen lasse kommt aber immer folgender Fehler:

    2021-12-27 08:58:54.751 spawn: Traceback (most recent call last):
    2021-12-27 08:58:54.751 spawn: File "/config/scripts/main.py", line 10, in
    2021-12-27 08:58:54.752 spawn: import requests
    2021-12-27 08:58:54.752 spawn: ImportError: No module named requests

    Hat jemand ne Idee, wie ich das gefixt bekomme?

  • Wenn das Modul "request" nicht existiert, dann ist es unter der 2.7er Python nicht installiert. Wenn Du das Skript unter 3.8 laufen lassen möchtest, musst Du die Zeile 184 ändern in:

    with open(basepath + '.nfo', 'w') as f: f.write(ElTr.tostring(root, encoding='UTF-8', method='xml').decode())Da ist hinten jetzt das decode() dazugekommen. Ganz oben natürlich in #!/usr/bin/python3.8 ändern.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Für Python ab Version 3 habe ich mal auf Github einen Branch angelegt: https://github.com/b-jesch/nfocreator/tree/Python3.8

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Super, genau das was ich suchte!
    Ich nehme hauptsächlich Serien auf, z.B. mareTV, mein Norden, die Nordreportage, Achtung Kontrolle, oder ähnliches.
    Ich bekomme dann die angehängten Daten:

    • Eintrag aus dem EPG
    • Resultat vom API call
    • Die NFO Datei

    Viele von den Serien haben keine Staffel und Episodennummer, deshalb wird das ganze dann als Movie anstatt als Serie verarbeitet und
    dann kann Kodi das nicht richtig in die Datenbank einpflegen.
    Was könnte man da machen? Z.B. eine "Fake" Staffel/Episodennummer wenn (rectype = 'tvshow')?

  • Bei dem Script erfolgt die Unterscheidung anhand einer (evtl. vorhandenen) Episodenbezeichnung - z.B. "Season 1.Episode 13" oder "S01.E13": https://github.com/b-jesch/nfocre…in.py#L138-L139, ansonsten wird das als Movie getaggt.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    Einmal editiert, zuletzt von PvD (7. Mai 2022 um 09:40)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!