Alte Kanäle identifizieren, Aktualisierung des Namens eines Kanals auslösen

  • Ich würde gerne in einem Skript überprüfen, ob sich in der Kanalliste alte Einträge für nicht mehr existierende Kanäle befinden. Meine bislang einzige Idee (eigentlich beim autosort-Plugin abgeguckt) ist es, den Namen eines Kanals zu ändern, z.B. indem ein Zeitstempel eingefügt wird, und später zu überprüfen, ob VDR den Eintrag bei der Aktualisierung wieder entfernt hat. Voraussetzung ist natürlich, dass die automatische Aktualsierung überhaupt aktiviert ist.


    Nun suche ich nach einem Weg, um die Aktualisierung des Namens eines Kanals durch VDR auzulösen. Wann erfolgt die Aktualisierung überhaupt? Offensichtlich nicht sofort beim Wechsel zum manipulierten Kanal. Bei autosort konnte man einstellen, wie viele Stunden oder Tage ein Zeitstempel alt sein musste, damit der Kanal als alt galt. So lange möchte ich aber nicht warten. Gibt es eine Möglichkeit, die Aktualisierung für einen bestimmten Kanal auszulösen oder zumindest zu erkennen, ob VDR die Aktualsierung versucht hat?


    Aber vielleicht gibt es ja noch ein viel bessere Methode als die skizzierte, um alte Kanäle zu identifizieren?


    Gruß, Malte

  • Moin!


    Damit sprichst du ein Thema an, das vielen auf der Seele liegt.
    In deinen Überlegungen solltest du zusätzlich berücksichtigen, dass gewisse Kanäle nicht unbedingt rund um die Uhr zu empfangen sind (meine ich mich zu erinnern). Da haben schon einige Leute das ein oder andere versucht.


    Einfach mal ein wenig im Portal suchen, vielleicht findest du ja noch was.


    Ansonsten ist für die Aktualisierung der Kanaldaten der EPG-Scan ein Ausgangspunkt. Der fügt ja je nach Einstellung neue Kanäle hinzu. Ich helfe mir so, dass ich am Ende der channels.conf einen Gruppen-Separator "@neu" habe. Da guck ich ab und zu mal rein ob da ein bekannter Sender ist, den ich eigentlich in den "Top-Ten/Twenty" erwarte. Dann wird manuell eingegriffen.


    Lars.

  • In deinen Überlegungen solltest du zusätzlich berücksichtigen, dass gewisse Kanäle nicht unbedingt rund um die Uhr zu empfangen sind (meine ich mich zu erinnern).

    Das ist sicherlich ein wichtiger Hinweis. Sollte es mir also gelingen, die Aktualisierung des Kanalnamens gezielt auszulösen, brauche ich immer noch eine Ausnahmebehandlung für zeitweise nicht verfügbare Kanäle.


    Einfach mal ein wenig im Portal suchen, vielleicht findest du ja noch was.

    Tja, das habe ich ehrlich gesagt als Erstes versucht. Ich wollte mich ja nicht blamieren. Aber leider habe ich nichts gefunden. Was natürlich nur beweist, dass mir die richtigen Suchbegriffe nicht eingefallen sind.


    Ansonsten ist für die Aktualisierung der Kanaldaten der EPG-Scan ein Ausgangspunkt. Der fügt ja je nach Einstellung neue Kanäle hinzu.

    Gut, das ist immerhin ein Ansatzpunkt. Einen EPG-Scan kann ich ja per SVDRP auslösen. Leider dauert der EPG-Scan bei großen Kanallisten sicherlich recht lange. Und zumindest per SVDRP gibt es wohl keine Möglichkeit, den EPG-Scan auf einen bestimmten Kanal einzuschränken. Wie könnte ich denn erkennen, wann er abgeschlossen ist? Ein Eintrag im syslog würde mir allerdings nicht helfen, denn mein Skript soll auch übers Netz funktionieren.


    Ist es dann so, dass VDR die Kanalliste oder einzelne Einträge "nur" im Rahmen des EPG-Scans aktualisiert? Ich vermute, es gibt auch andere Anlässe. Denn meinen bisherigen Experimenten wurden immer wieder auch einmal innerhalb von Minuten nach der Änderung Zeitstempel entfernt. Und es würde mich wundern, wenn das immer Ergebnis eines gerade laufenden EPG-Scann gewesen wäre.


    Ich helfe mir so, dass ich am Ende der channels.conf einen Gruppen-Separator "@neu" habe. Da guck ich ab und zu mal rein ob da ein bekannter Sender ist, den ich eigentlich in den "Top-Ten/Twenty" erwarte. Dann wird manuell eingegriffen.

    Ja, so ähnlich läuft es bei mir auch. Aber ich würde das Ganze halt gern automatisieren.


    Malte

  • Hatte vor einiger Zeit ein Skript gebastelt, um die Liste nicht all zu lang werden zu lassen. Bei Multitunersystemen eine schöne Lösung. Bei mir läuft das schon eine Weile:
    Wie, bzw. mit was, die channels.conf ausmisten?


    Hier der aktuelle Ordner: https://www.dropbox.com/sh/qrq…xZ4h4qF/VDR/cleanchannels

  • Sehr nett, ich suche noch sowas, was mit laufenden VDR funktioniert. Wer hält schon seinen VDR an?
    Also mit svdrpsend die List ändert.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Moin,


    Mit channellists kann man channels.conf laden, mir gefällt es aber noch nicht ganz.
    Nach meinem Urlaub plane ich, diverse channel-Bearbeitungsfunktionen in dbus2vdr einzubauen.


    Lars.

  • Mit svdrpsend DELC kann man einen Kanal löschen. Aber nur nach Nummer und langsam.

  • Das mag schon sein, aber bearbeitet und aufgeräumte ist sie deshalb noch lange nicht. ;)


    Aber man kann sie extern bearbeiten und dann neu in den vdr laden, ohne ihn stoppen zu müssen.
    Siehe Kanaleditor im WFE von yaVDR.


    Lars.

  • Mit svdrpsend DELC kann man einen Kanal löschen. Aber nur nach Nummer und langsam.


    Genau sowas will ich noch in dbus2vdr einbauen, Delete, Modify, Move, LoadFile usw. Über DBus wird das ausreichend schnell.
    Wird aber frühestens im September was...


    Lars.

  • Der Ansatz, die Kanalnamen zu verändern und nach einer Weile zu überprüfen, ob die Änderungen wieder verschwunden sind, ist vermutlich schon in vielen Variationen implementiert worden. Ich möchte die Zeit zwischen Veränderung und Überprüfung minimieren. Idealerweise sollte beides in einem Skriptdurchlauf erfolgen. Mein Ziel ist also ein Skript, das man bei laufendem VDR aufrufen kann, um innerhalb einiger Minuten alle verwaisten Kanäle zu identifizieren (und falls gewünscht, zu löschen).


    Das Feature #615 von channelpedia ist z.B. so implementiert, als könnte man auf den Kanal mit dem veränderten Eintrag umschalten und spätestens nach fünf Sekunden würde VDR den Namen des Kanals aktualisieren, falls er denn noch existiert. Bei meinen Versuchen habe ich den zuvor manipulierten Kanal einerseits per OSD, anderseits per SVDRP aufgerufen. Aber die Korrektur erfolgt leider nicht innerhalb einiger Sekunden.


    Es muss doch möglich sein, VDR dazu zu bewegen, die Definition eines Kanals zu aktualisieren! :)


    Ich sollte vielleicht dazusagen, dass ich seit einer Weile an einer Python-Bibliothek arbeite, mit der man (bislang) auf die Daten von VDR und EPGSearch zugreifen kann. Dies geschieht (bislang) mit SVDRP oder über Dateien. Später sollen weitere Verbindungsarten (DBus, RESTful) dazukommen. Auch wenn die SVDRP-Verbindung langsam ist, so hat sie doch einen recht großen Funktionsumfang und ist stets verfügbar. Mit der Bibliothek Kanallisten oder einzelne Kanäle zu bearbeiten, ist z.B. kein Problem.


    Das Skript zum Auffinden verwaister Kanäle ist ein Test für meine Bibliothek. Eine aktuelle Kanalliste ist andererseits Voraussetzung für ein weiteres Skript, mit dem man größere Änderungen an der Kanalliste und den mit EPGSearch angelegten Suchen vornehmen kann (z.B. einen Wechsel zwischen Satellit und Kabel). Deshalb reicht meine bisherige Lösung für die Aktualisierung der Kanalliste (Ändern und Abwarten) mir nicht mehr.


    Malte

  • Also ich denke die Namens und PID Änderung erfolgt innerhalb von Sekunden.
    Die channels.conf wird aber nicht sofort geschrieben.


    Code
    svdrpsend chan 2; sleep 2s; svdrpsend modc 1 $(svdrpsend lstc 1 | tail -2 | head -1 | cut -d ' ' -f 3- | sed "s/;ARD/;ARD_OLD/"); svdrpsend chan 1; sleep 2s; svdrpsend lstc 1


    Klappt hier.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Ich bin übrigens nicht auf die Methode "Verändern und Überprüfen" fixiert. Vielleicht gibt es ja noch geniale Alternativen...


    Vorgeschlagen wurde z.B. mehrmals der Vergleich der lokalen Kanalliste mit einer Referenzliste. Das verlagert allerdings m.E. nur das Problem. Irgendwo muss es dann ja die stets aktuelle Kanallisten geben, die zur lokalen Konfiguration passen (verschiedene Satelliten, Kabelbetreiber, DVB-T Regionen, ...). Dabei hat doch eigentlich der lokale VDR schon Zugriff auf alle benötigten Informationen.


    Ähnlich der oben diskutierten Vorgehensweise, aber m.E. eleganter als der Missbrauch des Kanalnamens (ob lang, kurz oder Bouquet) wäre ein Eintrag in den Hilfsdaten (dem letzten Feld der Kanaldefinition, das z.B. auch von EPGSearch benutzt wird). Den könnte ein Plugin vornehmen, wenn VDR zu einem Kanal wechselt. Ein einfacher Zeitstempel dort ließe sich mit meiner Bibliothek problemlos auswerten.


    Und dann gibt es noch all die Möglichkeiten, dir mir gerade nicht einfallen...

  • Also ich denke die Namens und PID Änderung erfolgt innerhalb von Sekunden.
    Die channels.conf wird aber nicht sofort geschrieben.


    Code
    svdrpsend chan 2; sleep 2s; svdrpsend modc 1 $(svdrpsend lstc 1 | tail -2 | head -1 | cut -d ' ' -f 3- | sed "s/;ARD/;ARD_OLD/"); svdrpsend chan 1; sleep 2s; svdrpsend lstc 1


    Danke für den Test. Nettes Skript!


    Auf meinen Testsystem wird der Kanalname auch mit Deinem Skript nicht automatisch aktualisiert. Aber auf einem anderen System funktioniert es. Offensichtlicher Unterschied: Das Testsystem hat noch VDR 1.6.0, das andere "schon" VDR 1.7.28. Oder könnte es noch an etwas anderem liegen?


    Malte

  • Wäre doch ein nettes Feature, wenn der VDR selbst erkennen würde, was alt ist.


    VDR bräuchte in der Channels.conf einen extra Zeitstempel in jedem Kanal. Der wird jedes mal, wenn der VDR den Kanal anfasst aktualisiert. Der VDR könnte dann Kanäle, die eine einstellbare Zeit nicht mehr aktualisiert werden löschen oder in eine extra inactive.conf verschieben bzw, nur in der Kanalliste als Inaktiv markieren.

  • Wäre doch ein nettes Feature, wenn der VDR selbst erkennen würde, was alt ist.


    VDR bräuchte in der Channels.conf einen extra Zeitstempel in jedem Kanal. Der wird jedes mal, wenn der VDR den Kanal anfasst aktualisiert. Der VDR könnte dann Kanäle, die eine einstellbare Zeit nicht mehr aktualisiert werden löschen oder in eine extra inactive.conf verschieben bzw, nur in der Kanalliste als Inaktiv markieren.


    Von einem Zeitstempel in der channels.conf halte ich nichts.
    Was man machen könnte wäre, beim Einlesen der SDT alle die Kanäle rauszuwerfen, die in der aktuellen SDT nicht (mehr) vorkommen.


    Klaus

  • Und was passiert dann mit Kanälen, die gerade nicht senden? Beispiel Classica oder Feeds bei Sky?

Jetzt mitmachen!

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