Separator in der Channels.conf via SVDRP erstellen

  • Hallo,
    Ich möchte meinen Kanaleditor (Windoof Anwendung) soweit umbauen, daß er via SVDRP die Channels.conf bearbeitet.
    Der erste Versuch in mein Delphi Programm eine TCP Verbindung zum VDR einzubauen, ist schon sehr vielversprechend.
    Ich kann schon mal die channels.conf holen - sehr schön.


    Es fällt hier schon auf, daß die Seperatoren fehlen.
    Ich kann auch keinen erstellen:
    z.b auf ein

    Code
    1. vdr.FClient.IOHandler.WriteLn('NEWC 600 :Test');


    erhalte ich

    Code
    1. 220 linux-ugjv SVDRP VideoDiskRecorder 1.7.27; Mon Apr 23 18:43:53 2012; ISO-8859-15
    2. 501 Error in channel settings


    Wurde dies nicht vorgesehen, oder gibt es eine Möglichkeit ?

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • Weil man keine Trenner erstellen kann per SVDRP, sind wir bei yaVDR beim Kanal-Editor im Web-Frontend dazu übergegangen, immer die gesamte Kanalliste zu ersetzen, wenn ein User Änderungen vorgenommen hat und diese speichert. Über das channellists-Plugin kann man per SVDRP einfach die gesamte Kanalliste überschreiben.


    Nebeneffekt: Wenn nebenbei updateChannels=5 ist (default) und ein VDR-Neuling gerade seine erste Kanalliste füllt (via Channelpedia-Anbindung), füllt der VDR seine channels.conf selbst auf, sobald der User einmal eine Kanalliste mit mindestens einem Kanal gespeichert hat. Das heißt, die channels.conf-Version, an der im Web-Frontend gearbeitet wird, entspricht dann nicht der Version, die gerade im VDR-Core aktuell ist. Das Problem fällt aber im besten Fall nicht auf und führt im schlimmsten Fall eigentlich nur zu Verwirrung und mehr nicht, wenn ein User eine Kanalliste mit fünf Kanälen gespeichert hat und danach plötzlich 500 Kanäle in der Kanalliste hat. Im Grunde genommen muss man updateChannels restriktiver setzen, solange ein User im Web-Frontend eine Kopie der channels.conf bearbeitet.


    Solange ein VDR-Nutzer kein Wissen hat über die Bedeutung von updateChannels, wird er verwirrt sein, wenn der VDR seine Kanalliste erweitert, unabhängig von der verwendeten Distribution.


    Gruß
    hepi

  • Er kann bei einem Remote-Tool nicht so ohne weiteres die Kanalliste komplett ersetzen. Zumindest nicht dann, wenn sein Tool außer eine SVDRP-Verbindung keine Voraussetzungen haben soll.


    Hier kann man nur hoffen, dass neben einer Möglichkeit, die Trenner im OSD anfassen zu können, auch eine Möglichkeit zum Editieren via SVDRP kommen wird. Vermutlich aber eher nicht in VDR 2.0 sondern irgendwann danach.

  • Er kann bei einem Remote-Tool nicht so ohne weiteres die Kanalliste komplett ersetzen. Zumindest nicht dann, wenn sein Tool außer eine SVDRP-Verbindung keine Voraussetzungen haben soll.


    Richtig, obwohl in yaVDR der Kanal-Editor im Web-Frontend auch ein Remote-Tool ist, weil er am Browser-Frontend läuft, welches auf einem beliebigien PC laufen kann, brauchen wir noch eine serverseitige Komponente, die das Speichern der Kanalliste in einer Datei auf dem VDR-PC und danach das Reinladen in den VDR über SVDRP bewerkstelligt. Über SVDRP ist nicht die Übertragung der Kanalliste selbst möglich, wie ich oben missverständlich formuliert habe.


    Der Vorteil des channellists-Plugin ist also nicht in erster Linie die Erweiterung des SVDRP-Befehlssatzes, sondern dass man ohne VDR-Neustart die Kanalliste inklusive Trennern komplett aktualisieren kann.


    Gruß
    hepi

  • Moin!


    Ein Patch für den vdr mit einem neuen SVDRP-Befehl (bzw. neuen Parametern für einen vorhandenen), um einen Trenner anzulegen, sollte doch nicht so schlimm sein.
    Hat sich da noch keiner dran versucht?


    Mal sehen, morgen abend hab ich ein bisschen Zeit.


    Lars.

  • Moin!


    Aber sie stehen vor bzw. nach einer Kanalnummer bzw. Kanal-ID.
    Das würde vollkommen ausreichen.


    Lars.

  • Hallo,
    Es wäre super wenn hier eine Lösung einzupatchen wäre :tup 
    Wenn ich nicht so eine Niete in C++ wäre, würde ich es selbst versuchen :evil:


    Rudi.

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • Moin!


    Ich hab jetzt gerade keinen Compiler zur Hand, aber um einen Gruppenteiler am Ende anzuhängen, müsste es eigentlich reichen, in svdrp.c, Zeile 1297 (vdr 1.7.27) ein wenig zu tweaken:

    Code
    1. void cSVDRP::CmdNEWC(const char *Option)
    2. {
    3. if (*Option) {
    4. cChannel ch;
    5. if (ch.Parse(Option)) {
    6. - if (Channels.HasUniqueChannelID(&ch)) {
    7. + if (ch.GroupSep() || Channels.HasUniqueChannelID(&ch)) {
    8. cChannel *channel = new cChannel;
    9. *channel = ch;


    Aber testen kann ich erst morgen...


    Lars.

  • Hallo, mini73.
    Compilern tut es natürlich.


    Nur schlägt schon der Test nur einen neuen Kanal erzeugen fehl.
    Sowohl mit meiner Delphi Anwnedung als auch wenn ich das Script benutze ( der VDR mag meine Syntax nicht)
    z.b. so

    Code
    1. ./svdrpsend.pl -p 2001 NEWC 600 "test;BetaDigital:10832:HC23M5O35S1:S19.2E:22000:1535=27:0;1539=deu@106:37:1830,1843,9C4,648:61205:1:1057:0"
    2. 220 linux-ugjv SVDRP VideoDiskRecorder 1.7.27; Wed Apr 25 18:32:29 2012; ISO-8859-15
    3. 501 Channel settings are not unique
    4. 221 linux-ugjv closing connection


    Das liegt jetzt nicht an deinem Patch (ohne den geht es auch nicht), ich habe einen Syntaxfehler drin, nur was mache ich falsch ?
    Meine VDR Version ist auch die 1.7.27

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • Man denke nach und komme zu dem Ergebnis, dass es schon einen Kanal in der Kanalliste gibt mit derselben Unique ID (S19.2E-sid-nid-tid).

    Danke dir, ich interpretierte den Fehler 501 falsch :wand
    Ich habe sogar ein wenig nachgedacht, und den Kanalnamen verändert, der VDR vergleicht aber S19.2E-sid-nid-tid. :O :O 
    Schwamm drüber ... ;D


    OK, der Patch von mini73 funktioniert - es wird am Ende der Kanalliste ein Trenner erzeugt.
    Ich überlege nun wie ich den VDR mit meinem Tool eine neue Kanalliste verpassen kann.
    Am Einfachsten wäre, ich lösche erst alle Kanäle raus.
    Fange dann beim ersten Eintrag aus meiner neuen Liste an, die zum VDR schicken .. usw.

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von rudirabbit ()

  • Moin!


    Du musst bedenken, dass Kanäle mit TImer sich nicht löschen lassen.
    Vorhandene Kanäle lassen sich aber mit MODC ändern.


    Patch hab ich an die vdr-ML geschickt.


    Lars.

  • Moin!


    Was hierbei auch gelöst werden muss: Wenn Du einen Kanal an Position X einfügen willst, dort ist aber schon benachbart ein Gruppentrenner: Wird der neue Kanal dann vor oder nach dem Gruppentrenner eingefügt? Wie kann der User das steuern?


    Mit MOVC kann man nur Kanäle, aber keine Gruppentrenner verschieben.
    Die Zahlen, die man angibt, sind keine Positionsangaben, sondern die Kanalnummern.
    Man kann einen Kanal also nur hinter einen anderen Kanal verschieben, niemals direkt hinter einen Gruppentrenner.
    Wenn man allerdings die ersten beiden Kanäle nach einem Gruppentrenner tauscht, bekommt man den gewünschten Kanal dann doch noch direkt hinter den Gruppentrenner.


    Ist alles relativ rudimentär, weshalb es wohl ein entsprechendes Plugin gibt, dass die Funktionalität erweitert...


    Lars.

  • Hallo,
    Das Löschen eines Trenners ist wohl auch nicht möglich.
    Ist auch nicht so einfach einzubauen ? - da ein Trenner keinen Index hat.
    Wenn dies möglich wäre könnte ich versuchen die Kanalliste neu aufzubauen, nach dem Prinzip wie in Posting #15.

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber