LazySeries (Vpre 4.0) - Vergleichbar mit "Anytime"

Wir haben aktuell ein Problem mit dem Board und arbeiten an der Lösung...
  • JA WIE GENIAL! :) Werde ich mir gleich mal ansehen.
    Danke Dir und freut mich, dass es bei Dir auch funktioniert.


    Das Nachfolgetool ist auch schon "fast" fertig und wird über Weihnachten viel zu tun bekommen. Da ist Deine Idee mit dem Watchdog hilfreich, weil die neue Version tatsächlich ausschließlich mit Autotimer-Tags in timer-xml arbeitet. Als nächstes wird die verbesserte DRAD-Funktionalität eingebaut. Sobald ich sie fertig hab, werde ich ein Test-Build hochladen. Dann kannst Du es gerne testen.


    Anmerkung:
    Bedenke aber, dass die timer.xml sicht ständig verändert, sobald Autotimer arbeitet und Treffer findet. Die schreibt Autotimer nämlich einzeln rein. Da können sich Watchdog und Autotimer dann schnell gegenseitig in die Quere kommen und nicht nur die Kiste in die Knie zwingen, sondern auch die autotimer.xml zerschießen! In der Regel reicht es aus, wenn das Skript max. ein/zweimal am Tag läuft. Soviele Änderungen gibt es nicht, die zu beachten wären.


    Kennst Du Dich denn auch mit WebUi aus?
    Ich kann kein Python und finde keine Doku darüber wie ich eine HTML Seite ins WebUi einbinden kann um die XML Datei zu bearbeiten. Mein WebUi wäre dann nur eine normale Html-Seite, die die Konfig verarbeitet und die neue Version "downloaden" lässt um die alte damit zu überschreiben.
    Wäre um jede Hilfe dankbar!



    Grüße
    M.D.

    MANAREC
    LazyTools Schaltzentrale für den Film-/Seriensammler
    LazyCall FritzBox Callmonitor (Lautstärkenregelung/Timeshift)
    LazyServer WebServer für E2

  • Zitat

    Original von Microdevil
    Anmerkung:
    In der Regel reicht es aus, wenn das Skript max. ein/zweimal am Tag läuft. Soviele Änderungen gibt es nicht, die zu beachten wären.


    Was passiert wenn eine Sendung um 20:15 und um 02:00 läuft?
    ich glaub es wird dann 2x aufgenommen, das wollte ich damit umgehen aber wenn die timer.xml geschossen werden kann ist das nix.



    Zitat

    Original von Microdevil
    Kennst Du Dich denn auch mit WebUi aus?


    da muss ich leider passen :frowning_face:

  • ich hab mal bei emanuel nachgefragt, das scheint nicht so einfach zu sein.


  • Wenn Du KEINE doppelte Timer haben willst:
    Bei Autotimer die Einstellungen "Höchstens X-Mal aufnehmen" und "Beschreibung muß eindeutig sein" einschalten/kombinieren. Den Rest macht dann das Skript und sorgt dafür dass Die Folge danach nie mehr aufgenommen wird, wenn Du damit durch bist.


    Danke für die Info wegen WebIf. Das dachte ich mir schon :frowning_face:

    MANAREC
    LazyTools Schaltzentrale für den Film-/Seriensammler
    LazyCall FritzBox Callmonitor (Lautstärkenregelung/Timeshift)
    LazyServer WebServer für E2

  • Das Tool ist fast fertig und wurde seit Weihnachten ausgiebig getestet.
    Ein Release wird jedoch länger dauern als geplant, da ich das Tool nun als Python-Skript umschreibe und ggf. ein echtes Plugin daraus machen werde. Da ich noch keine Kenntnisse in Python habe und erst mal alles lernen muß, weiß ich selbst nicht wie lange es dauern wird. Daher lade ich mein bisheriges Werk für die Interessenten hoch (1. Thread)


    Falls Ihr schon LazySeries 3.x nutzt, werdet Ihr sicher klar kommen. Für Anfänger empfehle ich sich erst mal mit der Version 3.x vertraut zu machen.


    ZU BEACHTEN:
    - Einträge müssen leider noch MANUELL in der config.xml editiert werden (Die Infos stehen in der hilfe.xml)
    - "Name als Markierung zufügen" MUSS bei Autotimer aktiviert sein!!!!!!!
    - Testmodus wird mit "sh ./dev.sh -t" gestartet. Das ist aktuell der einzige Parameter der unterstützt wird.
    - Popup, DRAD, NIP sind in der Version noch nicht implementiert


    Was ist alles Neu?
    UNTERSTÜTZUNG FÜR FILME
    Als Teaser des Skripts habe ich Euch einen aktuellen Screenshot beigefügt.
    T: Name des gefunden Timers in SD/HD
    F: Name des gefundenen Films auf der HDD in SD/HD
    Das Skript hat automatisch erkannt, dass ich diese Filme bereits habe und hat die entsprechenden Timer deaktiviert
    Wie man so einen Eintrag erstellt findet Ihr hier -> LazyFilms


    [Definition Serie / Film]
    Die Definition bestimmt die Arbeitsweise des Skripts.
    Serie: Alles was anhand der Angaben in "Short description" identifiziert und zugewiesen werden kann. Das können z.B. auch mehrteilige Dokus, oder Sendungen sein. Episodenamen tauchen zu 99% in Shortdescription auf
    Film: Alles was anhand des Namens/Titel zugewiesen wird. Klassischerweise sind das dann Filme, können aber auch andere Sendungen mit einem eindeutigen Namen sein, oder Serien, die die Episodennamen/Nummer im Titel tragen.


    [ Sendererkennung HD/SD ]
    Es ist nicht nötig dem Skript die zusammengehörende Sender beizubringen
    Das Skript sucht nach dem Text " HD" im Sendernamen. Ist dies vorhanden, handelt es sich um einen HD-Sender.
    Je nach gewünschte Konfiguration werden Timer auf falsche Sender nicht gelöscht, sondern deaktiviert um Autotimer daran zu hindern den Timer erneut anzulegen.
    Wird Sync aktiviert, wird zusätzlich das Vorhandensein einer Passenden Aufnahme im gewünschten Format geprüft


    [ Dateierkennung HD/SD ]
    Anhand der in der Konfig angegebenen Suchkriterien wird eine Aufnahme als HD/SD definiert.
    Logik:
    Datei: Das Mercury Puzzle_(h264-720p).ts
    Dateinamentreffer (Dlim:_ DelimP:1) ergibt Das Mercury Puzzle
    Im restlichen Namen _(h264-720p) wird nun nach dem Suchstring gesucht. In dem Beispiel meldet das Skript eine HD-Aufnahme, da wir 720 als Kennung eingegeben haben


    [SYNC] ist eine Besonderheit
    Sync bedeutet, dass gefundene Treffer auf der HDD geprüft und ggf. an Autotimer weitergeleitet werden sollen.
    Bei Serien werden die Episodennamen IMMER direkt an Autotimer weitergeleitet, die Timer gelöscht und anschließend von Autotimer erneuert.

    Bei Filme ist das Verhalten anders. Wird ein Treffer gefunden, wird der entsprechende Timer deaktiviert, aber KEIN Ausschlussfilter in Autotimer generiert. Dies passiert aber NUR dann, wenn ein entsprechender Timer gefunden wird.

    Das hat mehrere Gründe:
    1. Filme können im Gegensatz zu Serien aufgrund unterschiedlicher Treffer aufgenommen werden und können daher nicht direkt zugewiesen werden.
    Beispiel:
    Autotimer Regel:"Schauspieler Brad Pitt"
    Autotimer Regel:"Schauspieler Morgan Freeman"
    Autotimer Regel:"Sieben" im Titel
    Alle würden bei dem Film "Sieben"einen treffer auslösen.

    2. In vielen Situaltionen können falsche Ausschlussfilter im Autotimer den gesamten Ablauf zerstören, sodass Autotimer nichts mehr aufnimmt.
    Beispiel:
    Autotimer Regel:"Kung Fu Panda" findet "Kung Fu Panda 2/3 usw." UND"Kung Fu Panda"
    Wir haben aber den Film "Kung Fu Panda" auf der HDD. Würden wir dies als Ausschlussfilter an Autotimer weiterleiten, würde Autotimer ab sofort ALLES, was "Kung Fu Panda" beinhaltet ignorieren und somit auch alle weiteren Titel, da sie alle den Namen "Kung Fu Panda" Beinhalten!
    AutoRecorder selbst kann aber aufgrund des "DLIM-Zeichens" vorhandene Filme sehr wohl auseinander halten
    Beispiel:
    - Der Film Kung Fu Panda 2_(2011).ts ergibt den Treffer "Kung Fu Panda 2"
    - Der Film Kung Fu Panda_(2008 ).ts ergibt den Treffer "Kung Fu Panda"
    Als Ganzes verglichen sind diese Treffer nicht identisch, somit ist die Erkennung gewährleistet und Autorecorder deaktiviert den unerwünschten Timer um Autotimer an der erneuten Programmierung zu hindern.


    Daher werden Timer zu den Filmen nur deaktiviert und nicht gelöscht.

    ACHTUNG:
    Eingetragene Excludetag werden IMMER an Autotimer weitergeleitet. Also passt auf, was Ihr da erstellt, sonst könnte ein Fehler wie in Punkt 2 auftreten.

    [Cleaner]
    Da wir mit deaktivierte Timer arbeiten, müssen diese auch irgendwann gelöscht werden. Damit das automatisch passiert kann man Cleaner aktivieren. Sobald ein Timer in der Vergangenheit liegt (Endzeit + 1 Tag), wird er gelöscht. Damit wird auch die Timerliste automatisch aufgeräumt, da alle alten Timer bereinigt werden.


    [Autotimer Tag]
    Autotimertagging ist ein MUSS, sonst können bei Filmen die Aufnahmen nicht immer zugewiesen werden. Ausserdem wäre AutoRecorder nicht in der Lage normale Timer von Autotimer zu unterscheiden
    Beispiele:
    -Serie "American dad!", was auch als "American Dad" ausgestrahlt wird, aber beide anhand des Tags "American Dad" als zusammengehörend erkannt werden
    -Regel auf Filter wie Schauspieler, die als Timer sonst keinen Verweis auf die Regel hätten, da im Timer nur der Filmtitel auftauchen würde

    [GROSS/kleinschreibung und Schreibweise]
    Bei Angaben von Verzeichnisnamen ist die GROSS/kleinschreibung wichtig!
    Ferner MUSS der Name bei Serien im Autotimer identisch zum Verzeichnisname sein. Die Schreibweise ist dann jedoch egal. Das skript ignoriert dann die GROSS/kleinschreibung und findet das passende Verzeichnis

    [Umlaute]
    Es ist nicht mehr nötig auf die Schreibweise von Non-ASCII Zeichen zu achten. Für ÄÜÖ, sowie ß wird bei der Verarbeitung automatisch eine Regel erstellt, die alle Schreibweisen abdeckt.

    [Ausgabe verstehen]
    Statusangaben:
    [ ] Wert nicht gesetzt, globale Werte werden genutzt, falls vorhanden
    [x] Wert wurde gesetzt/Funktion aktiviert, globale Werte werden überschrieben , falls vorhanden
    [-] Wert wurde gesetzt/Funktion deaktiviert, globale Werte werden überschrieben , falls vorhanden
    [A] Always. Wert ist IMMER aktiv/inaktiv und nicht veränderbar (SYNC bei Serien, MKE bei Filme)

    Parameter:
    [x]SD Aufnahmen von SD-Sender erlaubt
    [x]HD Aufnahmen von HD-Sender erlaubt
    [x]DRAD Do not Record After Delete. Nach dem Löschen nicht mehr aufnehmen
    [x]GNFF Get Name From Filename. Finde Episode/Filmname irgendwo im Dateinamen (Gefahr von Fehltreffer!)
    [x]DLIM Delimiter. Das Zeichen zur "Zerstückelung" von Dateinamen
    [x]DLMP Delimited Part. Die Nr. des "Stücks"
    [x]SRC Source. Ein Zielverzeichnis wurde angegeben.
    [x]DEV Abweichendes Gerät. Befehle auf ein anderes Gerät ausfüphren (Multidevicefähigkeit)
    [x]SYNC Synchronisation. Gefundene Aufnahmen als Ausschlußfilter an Autotimer weiterleiten
    [%]UGEL Use Global Exclude List. Anzahl der Listen, die verwendet werden
    [%]MKE Max. Known Episodes. Aktuel bekannte Maximalanzahl von Episoden. Reine Information
    [%]EXCL Exclude tags. Anzahl der konfigurierten Ausschlussfilter


    [Global lists] (siehe auch Beispiel unten)
    Sie funktionieren genau so wie die ExcludeTags, die man pro Eintrag angeben kann + zusätzliche Funktionen, die für alle/mehrere Einträge gelten.
    Eine solche Liste kann 2 Funktionen übernehmen always="true/false"
    True: Die Liste ist IMMER aktiv und die Einträge darin werden automatisch IMMER an JEDEN Autotimer-Eintrag als Ausschlussfilter weitergegeben.
    Beispiel: Damit kann man Sendungen wie Magazine, Kinoberichte u.ä grundsätzlich ausschließen
    False: Die Liste wird nur innerhalb eines Eintrages aufgerufen und genutzt. Dazu gibt man bei dem jeweiligen Eintrag in <ugel></ugel> (use global exclude list) den Namen der Liste an, die der Eintrag nutzen soll. Darüber können mehrere Einträge auf die gleiche Liste zugreifen und zusätzlich nutzen.
    Später wird die Funktion GlobalExcludeLists um weitere Felder wie Description, Servicename und Shortdescription erweitert


    [Römische Zahlen und Teil/Part]
    Oft unterscheidet sich die Schreibweise "Men in Black 2/ Men in Black II", "Episode Teil 2/ Episode Part 2". Damit man nicht jedes mal händisch alles ändern muss und ggf. einzelne Ausschlussfilter definieren muss, werden die Schreibweisen automatisch angepasst und erweitert. Dabei werden Zahlen von 1-10 unterstützt (sollte reichen).
    Aus "Men in Black 2" wird dann z.B. "Men in Black (II|2)" was beide Varianten abdeckt.


    [Konfigurationsbeispiel für Filme mit Clive Owen und einer Globalexcludelist]
    Eintrag in config.xml
    <rule name="Schauspieler Clive Owen" enabled="true" tag="film" condition="or"></rule>
    <globalexclude name="Sendungen, die ich nicht haben will" description="Allerlei Müll" always="true">
    <excludetag>Young Adam - Dunkle Leidenschaft</excludetag>
    <excludetag>Nadine - Eine kugelsichere Liebe</excludetag>
    <excludetag>Robin Hood - König der Diebe</excludetag>
    <excludetag>Madagascar Special: Mad Santa</excludetag>
    <excludetag>Tödliche Weihnachten</excludetag>
    <excludetag>Tatsächlich...Liebe</excludetag>
    <excludetag>der löwe im winter</excludetag>
    <excludetag>Batman &amp; Robin</excludetag>
    <excludetag>Sebastian Pufpaff</excludetag>
    <excludetag>service: </excludetag>
    <excludetag>Wissen macht Ah</excludetag>
    <excludetag>feuer und eis</excludetag>
    <excludetag>Jesse James</excludetag>
    <excludetag>TV-Special</excludetag>
    <excludetag>Apocalypto</excludetag>
    <excludetag>magazin</excludetag>
    </globalexclude>



    Eintrag von Autotimer: (Die Einträge bei Exclude wurden automatisch hinzugefügt, da sie in meiner Globalexcludelist für "Sendungen, die ich nicht haben will" stehen, die immer aktiv ist (always="true").
    <timer name="Schauspieler Clive Owen" match="Clive Owen" enabled="yes" id="16" searchType="description">
    <e2service>
    <e2servicereference>
    1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet
    </e2servicereference>
    <e2servicename>Favourites (TV)</e2servicename>
    </e2service>
    <exclude where="title">(?i)(Young Adam - Dunkle Leidenschaft)</exclude>
    <exclude where="title">(?i)(Nadine - Eine kugelsichere Liebe)</exclude>
    <exclude where="title">(?i)(Robin Hood - K(oe|ö)nig der Diebe)</exclude>
    <exclude where="title">(?i)(Madagascar Special: Mad Santa)</exclude>
    <exclude where="title">(?i)(T(oe|ö)dliche Weihnachten)</exclude>
    <exclude where="title">(?i)(Tats(ae|ä)chlich\.\.\.Liebe)</exclude>
    <exclude where="title">(?i)(der l(oe|ö)we im winter)</exclude>
    <exclude where="title">(?i)(Batman &amp; Robin)</exclude>
    <exclude where="title">(?i)(Sebastian Pufpaff)</exclude>
    <exclude where="title">(?i)(service: )</exclude>
    <exclude where="title">(?i)(Wi(ss|ß)en macht Ah)</exclude>
    <exclude where="title">(?i)(fe(ue|ü)r und eis)</exclude>
    <exclude where="title">(?i)(Je(ss|ß)e James)</exclude>
    <exclude where="title">(?i)(TV-Special)</exclude>
    <exclude where="title">(?i)(Apocalypto)</exclude>
    <exclude where="title">(?i)(magazin)</exclude>
    </timer>

    MANAREC
    LazyTools Schaltzentrale für den Film-/Seriensammler
    LazyCall FritzBox Callmonitor (Lautstärkenregelung/Timeshift)
    LazyServer WebServer für E2

    8 Mal editiert, zuletzt von Microdevil ()

  • Sich in Python einzuarbeiten ist doch nicht so schwer wie gedacht :winking_face:
    Das Tool ist bereits zu 90% umgeschrieben.
    Was schon funktioniert:
    - Volle XML Unterstützung
    - Globale/Lokale Ausschlusslisten für Sendernamen, Beschreibung, Kurzbeschreibung, Titel
    - SD/HD-Check für Timer
    - SD/HD Check für Dateien
    - Caching (Hauptverzeichnis für Filme wird nur einmal gescannt. (Enorme Geschwindigkeitsverbesserung, je nach Anzahl der Dateien!)
    - Timer Anhand vorhandene Aufnahmen vs. SD/HD deaktivieren
    - Timerbereinigung
    - Unterstützung für Serien mit Episodenbezeichnung im Titel (z.B. die ARD-Serien, oder Dokus)
    - Volle Unterstützung/Erkennung für römische Zahlen (I-X) und Part/Teil im Namen + alle Schreibweisen von (äüöß). Jetzt auch für Filme
    - Timer getriggert. Nur Einträge, die einen Timer haben werden verarbeitet und nicht mehr alle auf einmal. Bringt wieder eine enorme Geschwindigkeitsverbesserung besonders wenn man viele Einträge im Autotimer hat (bei mir 82) :winking_face:


    In Arbeit:
    Autotimer-Assitenz:
    - Neuen Eintrag für Autotimer erstellen (für Filmsammlungen, für Schauspieler, für Serien, komplexe Regeln)
    - Grafische Darstellung für Einträge auf der HTML-Seite (Cover, Schauspielerbild, evtl. Infos aus dem Internet)
    - Anpassung der Anzeige für Tablets
    Das Tool selbst braucht aber auch weiterhin keine Internet-Anbindung. Zugriff aufs Internet wird lokal vom PC ausgeführt



    Was noch fehlt:
    - WebUI-Einbindung
    - Nach Löschung nicht erneut aufnehmen
    - MultiSerien-Verzeichnisse
    - E2 EIT Dateien auslesen
    - Autostart
    - Watchdog auf Autotimerreload (Background service)
    - Multidevice (Mehrere Boxen zentral steuern)


    Als Anhang ein Screenshot von der Entwicklungsumgebung mit knapp 800 Dummy-Namen um die Performance zu checken. Laufzeit ca. 5 Sekunden :winking_face:

    MANAREC
    LazyTools Schaltzentrale für den Film-/Seriensammler
    LazyCall FritzBox Callmonitor (Lautstärkenregelung/Timeshift)
    LazyServer WebServer für E2

    3 Mal editiert, zuletzt von Microdevil ()