[EPGSearch] Neue Version v2.4.5

  • Neue Version v2.4.5 getagged.

    Wichtigste Änderungen seit 2.4.4
    - Anpassungen an vdr 2.7.7 (CalcStartStopTime, MainThreadHook)
    - Codemodernisierung und Dokupflege von Stefan Hofmann
    - diverse Fixes und Verbesserungen
    - Erweiterungen Contents Filter, Parental Rating von Stefan Hofmann
    - Neuer allgemeiner Parameter für Suchtimer: Frist zur Begrenzung der Timererstellung
    - Neue Spalte in der Suchtimerliste: Zeitpunkt der letzten Aufnahme
    - Neue Variable "aux" zur Ausgabe der AUX-Eintrages EPG

    vdr-2.7.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-6.11, AsRock J4105, CIne CT-V7 DVB-C

  • Hi, ich habe das git von vdr-plugin-epgsearch verfolgt, kann aber 2.4.5 nicht mehr kompilieren:

    In file included from blacklist.c:25:
    epgsearchtools.h:156:42: error: ‘std::string encodeSpecialCharacters’ redeclared as different kind of entity
    156 | std::string encodeSpecialCharacters(std::string_view s, bool nestedColon = false);
    |                                          ^~~~~~~~~~~
    epgsearchtools.h:154:7: note: previous declaration ‘char* encodeSpecialCharacters(const char*, bool)’
    154 | char* encodeSpecialCharacters(const char* s, bool nestedColon = false);
    |       ^~~~~~~~~~~~~~~~~~~~~~~
    epgsearchtools.h:156:42: error: ‘string_view’ is not a member of ‘std’
    156 | std::string encodeSpecialCharacters(std::string_view s, bool nestedColon = false);
    |                                          ^~~~~~~~~~~
    epgsearchtools.h:156:42: note: ‘std::string_view’ is only available from C++17 onwards
    epgsearchtools.h:156:57: error: expected primary-expression before ‘bool’
    156 | std::string encodeSpecialCharacters(std::string_view s, bool nestedColon = false);
    |                                                         ^~~~
    epgsearchtools.h:157:42: error: ‘std::string decodeSpecialCharacters’ redeclared as different kind of entity
    157 | std::string decodeSpecialCharacters(std::string_view s, bool nestedColon = false);

    Verwende noch focal (mit esm und letztem LTS-Kernel.

    Wo liegt hier der Fehler bei mir?

    vdr User #2022 - hdvdr2:

    Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 32 GB Ram, zram-swap/tmp, ubuntu-focal+ESM, softhdcuvid-placebo, ffmpeg-6.1.4(git)

    ddbridge mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF1050Ti SFF (nvidia-dkms-580.105.08), system SSD btrfs,

    timeshift-btrfs, Video 8TB HDD XFS/cow, yavdr-ansible-2.7.7-seahawk, tvscraper tvsp, Kernel 6.12.65+dddvb-0.9.41-git

    vdradmin-am-3.6.15, vdr-live-ng, vdrmanager (Smartphones als FB)

  • was sagt bei dir g++ --version? Sollte mindestens 7 sein. Ist wahrscheinlich auch in focal nachinstallierbar

    vdr-2.7.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-6.11, AsRock J4105, CIne CT-V7 DVB-C

  • Danke mal :)

    Leider dürfte es das nicht sein:

    ~# g++ --version
    g++ (Ubuntu 9.4.0-1ubuntu1~20.04.3) 9.4.0

    Na ich warte mal auf das kompilierte Plugin von Seahawk ...

    vdr User #2022 - hdvdr2:

    Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 32 GB Ram, zram-swap/tmp, ubuntu-focal+ESM, softhdcuvid-placebo, ffmpeg-6.1.4(git)

    ddbridge mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF1050Ti SFF (nvidia-dkms-580.105.08), system SSD btrfs,

    timeshift-btrfs, Video 8TB HDD XFS/cow, yavdr-ansible-2.7.7-seahawk, tvscraper tvsp, Kernel 6.12.65+dddvb-0.9.41-git

    vdradmin-am-3.6.15, vdr-live-ng, vdrmanager (Smartphones als FB)

  • oder in der Makefile am Ende von export CXXFLAGS = .... flags) -std=c++17

    hinzufügen. Braucht die Version 9 wohl.

    vdr-2.7.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-6.11, AsRock J4105, CIne CT-V7 DVB-C

  • Na ich warte mal auf das kompilierte Plugin von Seahawk ...

    Hat in vdr-2.7.7 schon gebaut, ist aber noch nicht von Launchpad veröffentlicht worden - der von TomJoad vorgeschlagene Weg den C++ Standard festzulegen hat genügt.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Muss ich mir um die Fehlermeldung "Please check svdrp - Searchtimers and Switchtimers might not work" Sorgen machen ? Epgsearch scheint aber zu funktionieren, wie es soll.

    Edit:

    Diese Schleife wird bei einem Headless VDR nie vor "90" abgebrochen, da es kein Primary Device gibt.

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, tvscraper, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

    Edited 4 times, last by kfb77 (December 21, 2025 at 7:35 PM).

  • Diese Schleife wird bei einem Headless VDR nie vor "90" abgebrochen, da es kein Primary Device gibt.

    Ich denke VDR definert immer ein Primary Device, auch wenn es kein Ausgabeplugin gibt:

    Code
    2025-12-21T18:11:56.471680+01:00 rpi4s vdr: [1143555] found 2 DVB devices                                                                     
    ...
    2025-12-21T18:11:56.488412+01:00 rpi4s vdr: [1143555] setting primary device to 1                                                             
    2025-12-21T18:11:56.488849+01:00 rpi4s vdr: [1143555] device 1 has no MPEG decoder                                                            
  • Da hast du Recht, dann hätte es auch eher gleich gecrashed. Er legt bei Start eines fest, aber ich nehme mal an, dass HasProgramme() niemals true liefern wird.

    Code
    bool cDevice::HasProgramme(void) const
    {
      cMutexLock MutexLock(&mutexChannel); // to avoid a race between SVDRP CHAN and HasProgramme()
      return Replaying() || pidHandles[ptAudio].pid || pidHandles[ptVideo].pid;
    }
    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, tvscraper, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Sieht nach einem Fehler in "WaitVDRReady()" aus.

    Es wäre für Plugins durchaus hilfreich, wenn VDR solche Informationen bereitstellen würde, wie:

    • SVDRP bereit
    • Alle Aufzeichnungen sind eingelesen
    • ...
  • Das ist das Problem, dass epgsearch sich darauf verlassen muss, dass svdrp funktioniert. Das war bisher durch den ersten Aufruf von MainThreadHook() realisiert.

    Jetzt muss man etwas nehmen, was normalerweise bei dem Mainloop des VDR einen ersten Hinweis gibt, dass das Hochfahren abgeschlossen ist. Ohne HasProgramme() bekommen fast alle VDRs kein aktuelles EPG, es sei denn, es wird extern herbeigeführt und aktualisiert. Normalerweise beginnt jetzt epgsearch nach wenigen Sekunden, seine Threads zu starten.

    Ohne HasProgramme() wird 90 Sekunden gewartet, dann läuft alles evtl. normal. Ich hatte überlegt, an der Stelle die Warnmeldung nur nach einem svdrp-PING zu bringen, habe aber befürchtet, der könne bei bestimmten Randbedingungen hängenbleiben und dann sieht man überhaupt keine Warnung. Der sd_notify() "VDR Ready" kommt auch schon vor der svdrp-Initialisierung.

    Es wäre natürlich schön, einen Hinweis wie MarkusE geschrieben hat, zu bekommen, das muss ja nicht MainThreadHook() sein - oder gibt es etwas anders sinnvolles im Mainloop des VDR?

    vdr-2.7.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-6.11, AsRock J4105, CIne CT-V7 DVB-C

  • Ohne HasProgramme() bekommen fast alle VDRs kein aktuelles EPG

    Das kann so nicht stimmen, ich bekomme EPG Daten. Auch ohne externe Quellen.

    Ohne HasProgramme() wird 90 Sekunden gewartet, dann läuft alles evtl. normal.

    Das ist ja auch OK, aber die Fehlermeldung macht keinen so keinen Sinn, weil kein Fehler mit svdrp vorliegt. Vorschlag: Reduktion auf INFO Level und Text ändern, der dann den tatsächlichen Grund des Timeout der Loop widerspiegelt: "Konnte keine Ausgabe auf dem primären Device erkennen".

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, tvscraper, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

    Edited once, last by kfb77 (December 21, 2025 at 9:28 PM).

  • Ich denke, der Name der Methode ist missverständlich:

    Code
      virtual bool HasProgramme(void) const;                                                                                                      
             ///< Returns true if the device is currently showing any programme to                                                                
             ///< the user, either through replaying or live.                                                                                     

    wenn es kein Ausgabeplugin gibt, ist das niemals true.

  • Ich weiss halt nicht, wie lange vdr MainThreadHook() leben lässt. Sonst würde ich es erstmal wieder rückgängig machen und auf einen besseren Vorschlag hoffen.

    vdr-2.7.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-6.11, AsRock J4105, CIne CT-V7 DVB-C

  • Würde es gehen, wenn du beim Start einfach 90s wartest und dann deine Threads auf die svdrp Schnittstelle loslaufen lässt ? Die müssen ja eh ein Fehler Handling haben und versuchen es halt im nächsten Update Zyklus wieder. Oder einen svdrp Befehl als Test absetzen, der immer geht: "svdrpsend stat disk"

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, tvscraper, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Wie gesagt, ich könnte einen svdrpsend "PING" absetzen und nur bei Problemen eine Meldung ausgeben, aber das darf nicht den Thread blockieren. Wenn jemand epgsearch nur als bessere Programmansicht nutzt, wird kein svdrp benutzt.

    Das svdrp-Handling in epgsearch ist sowieso nicht optimal. Es müssten mehr Fehler abgefangen werden und es müsste ein Abbruchtimer gesetzt werden.

    Bei der Gelegenheit hätte ich auch gerne gewusst, ob noch jemand statt des internen svdrp-Calls die Möglichkeit eines externen Skripts nutzt (da kann man dann die Fehlerrückgabe komplett vergessen).

    vdr-2.7.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-6.11, AsRock J4105, CIne CT-V7 DVB-C

  • Bei der Gelegenheit hätte ich auch gerne gewusst, ob noch jemand statt des internen svdrp-Calls die Möglichkeit eines externen Skripts nutzt (da kann man dann die Fehlerrückgabe komplett vergessen).

    War das nicht noch ein Relikt ganz aus der Anfangszeit?
    Das wurde doch schon vor Jahrzehnten umgestellt. Ich wusste gar nicht, dass überhaupt noch geht.

    Gruss
    SHF

    Mein (neuer) VDR:

    Software:
    Debian Wheezy mit Kernel 3.14
    VDR 2.0.7 & div. Plugins aus YaVDR-Paketen
    noad 0.8.6

    Hardware:
    MSI C847MS-E33, onboard 2x1,1GHz Sandybridge Celeron 847, 4GiB RAM
    32GB SSD (System), 4TB 3,5" WD-Red HDD (Video)
    TT FF DVB-S 1.5 FullTS-Mod PWM-Vreg-Mod, DVB-Sky 852 Dual DVB-S2
    Das ganze im alten HP Vectra VLi8-Gehäuse versorgt von:
    PicoPSU-160-XT und Meanwell EPP-150 im ATX-NT-Gehäuse

  • Bei der Gelegenheit hätte ich auch gerne gewusst, ob noch jemand statt des internen svdrp-Calls die Möglichkeit eines externen Skripts nutzt (da kann man dann die Fehlerrückgabe komplett vergessen).

    Ich bin mir nicht ganz sicher, du genau mit "internen SVDRP-Call" meinst. Aber ich erinnere mich, das VDRadmin als Perl-Skript implementiert ist und und für alle Zugriffe auf den VDR und die unterstützten Plugins (somit auch EPGsearch) die SVDRP-Schnittstelle nutzt.

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.7 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Der Parameter --svdrpsendcmd ist nie entfernt worden und würde auch noch funktionieren.

    vdr-2.7.7

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-6.11, AsRock J4105, CIne CT-V7 DVB-C

  • Ich wüsste nicht, dass ich den Parameter je benutzt hätte.

    Allenfalls dann ganz am Anfang.
    Wenn meine vage Erinnerung stimmt hat das mit der SVDRP-Übertragung Anfangs auch nicht so recht funktioniert.
    Kann aber sein, dass ich das mit VDRadmin durcheinander bringe.

    Gruss
    SHF

    Mein (neuer) VDR:

    Software:
    Debian Wheezy mit Kernel 3.14
    VDR 2.0.7 & div. Plugins aus YaVDR-Paketen
    noad 0.8.6

    Hardware:
    MSI C847MS-E33, onboard 2x1,1GHz Sandybridge Celeron 847, 4GiB RAM
    32GB SSD (System), 4TB 3,5" WD-Red HDD (Video)
    TT FF DVB-S 1.5 FullTS-Mod PWM-Vreg-Mod, DVB-Sky 852 Dual DVB-S2
    Das ganze im alten HP Vectra VLi8-Gehäuse versorgt von:
    PicoPSU-160-XT und Meanwell EPP-150 im ATX-NT-Gehäuse

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!