[ANNOUNCE] jonglisto-ng 0.0.1

  • Sehr geehrte Damen und Herren,


    ein wenig Vorgeschichte um den Post in die Länge zu ziehen.

    Nach langer Zeit wollte ich mal wieder was an vdr-jonglisto machen und habe dabei festgestellt, daß die Abhängigkeiten mit aktuellen VDR Versionen eher schwierig zu erfüllen sind. In der alten Version musste ich auch zuviel auf dünnem Eis mit HTML/CSS/Javascript laufen und fand den Wiedereinstieg etwas schwierig :/.

    Doch bei der üblichen Suche nach Neuerungen und interessanten Technologien bin ich dann über Xtend (Modernized Java) und Vaadin (Web Framework) gestolpert (obwohl beide schon älter - aber an mir vorbeigelaufen - sind) und fing an damit zu spielen. Es war geradezu eine Offenbarung und ich wollte immer mehr probieren. Aus dem Sandkasten entsprang dann eine völlige Neuimplementierung von vdr-jonglisto ohne die alten Fehler und Probleme.


    Minimale Voraussetzung:

    Ein VDR (am besten > 2.3.1) ohne besondere Plugins. Die Kommunikation von jonglisto-ng mit dem VDR findet nur über SVDRP statt.

    Java 8 (ich weiß gar nicht, ob Java 9 läuft) und ein Application Container. Welche von mir getestet wurden, wie diese konfiguriert und gestartet werden können, kann man auf der GitHub Seite nachlesen.


    Optionale Erweiterungen:

    • epgsearch Plugin, falls epgsearch-Suchtimer bearbeitet oder erstellt werden sollen
    • svdrposd Plugin, falls man einen minimalen Zugriff auf das OSD in der Web-Oberfläche haben will
    • epgd (bzw. die Datenbank), falls dort Suchtimer bearbeitet oder erstellt werden sollen

    Features:

    • EPG Ansichten in verschiedenen Variationen (Tag, Kanal, Suche, verschiedene Filter). Die Spalten in der Ansicht können über die Config-Datei konfiguriert werden, falls andere Informationen angezeigt werden sollen. Mir waren z.B. Serieninformationen wichtig. Das läuft alles über regular Expressions über die EPG Daten. Es können direkt Timer erstellt werden, Wiederholungen gesucht, der EPG Eintrag kann bearbeitet und gespeichert werden.
    • Channel-Logos können optional mit dem Build erstellt und eingebunden werden.
    • Timer können bearbeitet, erstellt, gelöscht oder auf einen anderen VDR verschoben werden (sofern vorhanden)
    • epgsearch Suchtimer (falls das Plugin vorhanden ist) können bearbeitet und erstellt werden
    • epgd Suchtimer (falls die Datenbank konfiguriert wurde) können bearbeitet und erstellt werden
    • Aufnahmen oder ganze Verzeichnisse (samt Unterverzeichnissen) können per Drag-and-Drop hin und hergeschoben werden. Neue Verzeichnisse können erstellt werden. Ein Löschen ist auch vorgesehen. Eine Aufnahme kann auch direkt auf dem gewählten VDR abgespielt werden.
    • OSD und Fernbedienung. Es gibt eine Fernbedienung, die in Maßen konfigurierbar ist: Icons, als auch Label, die Anordnung der Tasten und welche Keys an den VDR gesendet werden sollen (auch mehrere pro Taste)). Das aktuelle OSD des VDR wird dargestellt, wenn das svdrposd Plugin verfügbar ist.
    • Kanalkonfiguration. Diese View dient dazu, eine channels.conf zu sortieren (und zu exportieren). Die Sortierung kann per Drag-and-Drop erfolgen, Kanalgruppen erstellt und gelöscht werden. Falls die epgd Datenbank konfiguriert wurde, kann damit auch eine channelmap.conf per Drag-und-Drop mit aktuell 2 EPG Providern zusammengebastelt und exportiert werden. Ein Automapping der IDs ist ebenfalls vorhanden und in großen Teilen sehr zuverlässig.
    • Security: Es gibt eine Konfigurationsdatei, in der User/Password (plaintext oder salted Hash) und zugehörigen Rollen mit möglichen Berechtigungen konfiguriert werden können. Die Anzahl bereits möglicher Berechtigungen ist aktuell zwar begrenzt, kann aber bei Bedarf erweitert werden, wenn gewünscht. Mittels der Konfigurationsdatei kann jeder eigene Rollen festlegen und den Benutzern zuweisen, ganz so wie es gebraucht und gewünscht wird.

    Verschiedene Kommandos sind im VDR leider nicht nativ verfügbar (z.B. Liste gelöschter Aufnahmen und die Wiederherstellung). Mir schwebt da noch ein SVDRP-only Utility Plugin vor. Aber alles zu seiner Zeit.


    Das neue Repository mitsamt Build / Deployment Anleitungen und einer Einführung in die Konfiguration befindet sich in GitHub: jonglisto-ng


    Bugs und Wünsche sollten am Besten als Issue erstellt werden Github Issues

    Für Fragen, Diskussionen und Kritik könnte das Forum benutzt werden.



    Viele Grüße

    Zabrimus

  • Gibt es hierzu auch Bilder?

    Gruß
    Frodo

  • Das sieht ja vielversprechend aus :]

    Das muss ich mir die nächste Tage auf jedenfall installieren.

    Gruß
    Frodo

  • hallo, nachdem die screenshots richtig klasse aussehen wollte ich das ganze gleich mal in betrieb nehmen.

    leider funktioniert das ganze nicht so einfach wie gedacht. beim aufruf der url bekomme ich nur einen fehler 500 mit einem stacktrace.


    vermutlich hängt es also irgendwie mit den vdr instanzen zusammen, hab die sample datei einfach reinkopiert und bearbeitet damit das bei mir passen sollte.


    hab die konfig datei und den stacktrace angehängt, es funktioniert aber auch mit den original sample dateien nicht.


    gebaut hab ich das ganze mit der docker anleitung und es läuft unter tomee webprofile 7.0.4 auf ubuntu 16.04 lts.

    Dateien

    Ubuntu 16.04 LTS minisatip Server: Gigabyte GA-M720-US3, 6GB DDR2-RAM, AMD Athlon II X2 250e, DD Cine S2 + DuoFlex S2, onboard 1GBit Lan
    VDR-2.3.8, Plugins: EPG-Search, VNSI-Server, svdrposd, satip

  • Beitrag von Zabrimus ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Oh Mist. Wie konnte mir das durchgehen. :wand


    Es ist noch ein altes Sample eingecheckt. Deine config ist soweit fast in Ordnung, allerdings muss

    <configuration> und </configuration> ersetzt werden durch <jonglisto> und </jonglisto>.

    Zabrimus

    kann passieren aber herzlichen dank für deine hilfsbereitschaft!

    soweit läuft es schon mal und sieht wirklich richtig toll aus!


    ich hab in der security.ini einen user vdr hinzugefügt und wollte den mit einem plain passwort versehen. leider funktionierte die anmeldung damit aber nicht. hab das passwort dann gehasht und jetzt läufts.


    danach hab ich alle knöpfe durchprobiert ;) wenn ich auf suchtimer (epgsearch) klicke passiert nichts, dh. unter der menüleiste ist alles leer.

    auf der konsole kommt auch nix aufregendes nur ein

    INFORMATION - Create connection to localhost:6419


    und sobald ich auf kanalkonfiguration klicke kommt nur ein rotes rufzeichen vor dem icon und auf der konsole gibts eine dicke exception... hab meine channels.conf angehängt falls das hilft.


    nochmal ein dickes dankeschön an dich und einen guten rutsch ins neue jahr!

    Dateien

    Ubuntu 16.04 LTS minisatip Server: Gigabyte GA-M720-US3, 6GB DDR2-RAM, AMD Athlon II X2 250e, DD Cine S2 + DuoFlex S2, onboard 1GBit Lan
    VDR-2.3.8, Plugins: EPG-Search, VNSI-Server, svdrposd, satip

  • ich hab in der security.ini einen user vdr hinzugefügt und wollte den mit einem plain passwort versehen. leider funktionierte die anmeldung damit aber nicht. hab das passwort dann gehasht und jetzt läufts.

    Für Plaintext Passworte muss der komplette [main] - Anteil in der security.ini auskommentiert/gelöscht werden.

    Code
    1. [main]
    2. passwordMatcher = org.apache.shiro.authc.credential.PasswordMatcher
    3. iniRealm.credentialsMatcher = $passwordMatcher

    Dieser Konfigurationsanteil ist verantwortlich dafür, daß hashed Passworte verlangt werden. Alle 3 Zeilen auskommentieren und damit sollten plaintext Passworte funktionieren.


    danach hab ich alle knöpfe durchprobiert wenn ich auf suchtimer (epgsearch) klicke passiert nichts, dh. unter der menüleiste ist alles leer.

    auf der konsole kommt auch nix aufregendes nur ein


    INFORMATION - Create connection to localhost:6419

    Das ist allerdings seltsam. Den Menueintrag für epgsearch gibt es nur, nachdem abgefragt wurde, ob epgsearch überhaupt installiert ist (auf dem VDR). Also muss zumindest die Prüfung erfolgreich gewesen sein, aber warum danach nichts mehr kommt? Läuft der VDR auf localhost? Existieren schon Suchtimer?

    Ich werde da nochmal reinschauen und mehr Meldungen einbauen müssen, falls mir nichts aufregendes auffällt.


    und sobald ich auf kanalkonfiguration klicke kommt nur ein rotes rufzeichen vor dem icon und auf der konsole gibts eine dicke exception... hab meine channels.conf angehängt falls das hilft.

    Stacktraces sind was feines zur Fehlersuche. Die Applikation versucht die Kanäle nach den Kanalgruppen zu gruppieren. Allerdings sind keine Kanalgruppen definiert und deshalb geht es schief. Da muss ich noch eine Prüfung einbauen.


    nochmal ein dickes dankeschön an dich und einen guten rutsch ins neue jahr!

    Danke schön. Einen guten Rutsch ins neue Jahr wünsche ich Dir und allen Lesern :)



    Eine Sache vielleicht noch. Die Serieninformationen in der EPG-Übersicht hängen natürlich stark vom EPG bzw. dem Provider ab. Der Konfigurationseintrag in der jonglisto-ng.xml

    Sollte an den vorhandenen Gegebenheiten angepasst werden. Staffel, Staffelfolge und Staffelfolgen. Ich kenne nur meine (mit epgd) erzeugten Einträge, aber ich könnte mir vorstellen, daß es noch viele andere gibt, für die entsprechende reguläre Ausdrücke gefunden werden müssen. Ich würde dabei helfen, wenn ich Beispiele bekäme.


    Viele Grüße

    Zabrimus

  • top! einfach großartig!

    bei mir läuft jetzt alles ohne probleme!

    hab nur noch eine frage, kann man beim builden (docker) mit logos das erneute konvertieren abstellen? das dauert ganz schön lange und seit gestern nachmittag hat sich sicher nix an den logos geändert.

    und mir ist aufgefallen das die war datei immer noch 0.0.1 als versionsnummer beinhaltet obwohl lt. github schon 0.0.2 released wurde.


    und noch eine kleinigkeit, in der timerliste werden die spalten für start, ende und dauer etwas zu klein gemacht und somit sind die minuten nicht zu sehen... spannend ist aber das wenn ich den zoom im browser auf 90% oder 110% einstelle alles richtig dargestellt wird.

    edit: ist im firefox und edge so, im chrome passt die darstellung.



    aber jetzt wirds zeit um die party zu starten, computer aus und fröhlich ins neue jahr rutschen! viel spaß dabei!

    Ubuntu 16.04 LTS minisatip Server: Gigabyte GA-M720-US3, 6GB DDR2-RAM, AMD Athlon II X2 250e, DD Cine S2 + DuoFlex S2, onboard 1GBit Lan
    VDR-2.3.8, Plugins: EPG-Search, VNSI-Server, svdrposd, satip

  • hab nur noch eine frage, kann man beim builden (docker) mit logos das erneute konvertieren abstellen? das dauert ganz schön lange und seit gestern nachmittag hat sich sicher nix an den logos geändert.

    und mir ist aufgefallen das die war datei immer noch 0.0.1 als versionsnummer beinhaltet obwohl lt. github schon 0.0.2 released wurde.

    Die Logos gingen mir auch schwer auf den Senkel. Das Dockerfile habe ich jetzt geändert und damit gehen die folgenden Builds erheblich schneller, wenn einmal das Build-Image erzeugt wurde.

    Zusätzlich habe ich das Build-Image auf DockerHub veröffentlicht (https://hub.docker.com/r/zabrimus/jonglisto-ng/). Das Image auf DockerHub wird immer automatisch erzeugt, sobald sich das Dockerfile im Github ändert. Man kann das Image natürlich auch noch zu Fuß erstellen, aber der Pull von DockerHub geht viel flotter von der Hand.

    Die Versionsnummer werde ich weiter im Auge behalten. Ich vergesse immer die Version hochzuzählen.


    und noch eine kleinigkeit, in der timerliste werden die spalten für start, ende und dauer etwas zu klein gemacht und somit sind die minuten nicht zu sehen... spannend ist aber das wenn ich den zoom im browser auf 90% oder 110% einstelle alles richtig dargestellt wird.

    edit: ist im firefox und edge so, im chrome passt die darstellung.

    Die Spalten im Timer View sind etwas schräg. Je nach Zoom sieht es gut aus und dann wieder nicht. 100% gut, 110% schlecht, 120% wieder gut .... Verstehen tue ich das nicht. Ich denke, daß im Framework oder Browser irgendwelche Berechnungen nicht passen.

    Ich habe versucht, das durch Styles zu fixen. Bei mir sieht es jetzt gut aus, aber das bedeutet ja nix ;)


    Es gibt eine neue View, mit der Favoritenlisten von Kanälen angelegt und gespeichert werden können. Diese Favoritenlisten können dann in der EPG Ansicht genutzt werden um die dazustellenden Kanäle einzuschränken.

    Es gibt dazu eine neue Permission (falls jemand schon daran gespielt hat): view:configuration:favourite


    Viele Grüße

    Zabrimus

  • das neue docker image ist echt genial, hat etwa 30 sekunden gedauert und das fertige war file war da.

    timer liste sieht jetzt aucht gut aus!

    Ubuntu 16.04 LTS minisatip Server: Gigabyte GA-M720-US3, 6GB DDR2-RAM, AMD Athlon II X2 250e, DD Cine S2 + DuoFlex S2, onboard 1GBit Lan
    VDR-2.3.8, Plugins: EPG-Search, VNSI-Server, svdrposd, satip

  • Ein Docker-Image als Laufzeitumgebung wäre auch nicht schlecht.

    SAT Hardware: Gibertini SE75 | DuraSat Dur-Line UK-24 | DD OctopusNET V2 Rack (Firmware 1.0.80 Beta) mit MaxS8
    Server: Asus M5A78L-M/USB3 | Sempron 145@2Cores | 8GB ECC RAM | PicoPSU | Debian Stretch 64Bit | Linux Kernel 4.9 | VDR 2.2.0 mit SAT>IP, epgsearch, epg2vdr, vdr-epg-daemon
    Clients: RaspberryPI 2/3 | Yocto Poky Linux (Openembedded) 2.4+git | Linux Kernel 4.9+git | VDR 2.2.0 mit SAT>IP, RpiHDDevice, SkinDesigner, Remote, Graphlcd-ax206dpf, RemoteTimer, Extrecmenu, NeutrinoEPG, Femon, Mlist


    R.I.P: Gigaset M740 mit VDR von open7x0.org

  • Ein Docker-Image als Laufzeitumgebung wäre auch nicht schlecht.

    Ich habe mal ein Dockerfile erstellt, das die Runtime-Umgebung (mit Apache Tomee unter Alpine Linux) erstellt (sofern das war-File und die Configs im Verzeichnis liegen):

    https://github.com/Zabrimus/jo…ster/docker/runtime-tomee


    Das ist aber nur ein erster Wurf (schwach getestet), den ich bei mir jetzt nicht unbedingt so einsetzen würde. Konfigurationsdaten halte ich lieber auf dem Host, als im Container (Backup, schusseliges schnell-löschen von Images und Container, einfacher zu editieren, ...). Bei mir wären also eher 2 mounts wünschenswert: Für die Container-Verzeichnisse /etc/jonglisto und /var/jonglisto-ng.

    Aber ansonsten startet der Runtime-Container (mit -p 8080:8080).

    Zabrimus

  • hätte noch eine kleine bitte, gibt es eine möglichkeit die timerliste immer nach datum & start zu sortieren?

    wie es aktuell "sortiert" wird ist mir schleierhaft, sieht für mich alles sehr durcheinander aus. weder nach sender noch nach datum wird hier sortiert.



    Ubuntu 16.04 LTS minisatip Server: Gigabyte GA-M720-US3, 6GB DDR2-RAM, AMD Athlon II X2 250e, DD Cine S2 + DuoFlex S2, onboard 1GBit Lan
    VDR-2.3.8, Plugins: EPG-Search, VNSI-Server, svdrposd, satip

  • Du meinst die Sortierung, wenn du frisch die Timer-View aufrufst? Ich denke, das müsste die Reihenfolge sein, die der VDR zurückgibt.

    Es gibt aber schon die Möglichkeit, die Sortierung zu ändern, wenn du auf den Spaltenheader (z.B. Datum) klickst (abwärts, aufwärts).


    Aber ich denke, eine direkte Sortierung bei Einstieg in die Timer wäre tatsächlich sinnvoll. Ich baue das mal ein, aber erst muss ich den anderen Branch mergen.


    Edit: Das war nur ein Einzeiler. Die initiale Sortierung der Timer habe ich im git eingecheckt.


    Zabrimus

  • Hallo,


    die Version 0.0.3 mit allen Bugfixes und ganz neu den Epg Alarm Benachrichtigungen (Osd Message, umschalten, beliebiges SVDRP Kommando) ist fertig. Um genau zu sein, ist es mehr als nur ein einfacher Alarm, sondern eher eine Art cron (falls es jemand kennt, es werden die Quartz-Trigger verwendet) für SVDRP Kommandos (Shell-Scripte sind noch nicht implementiert, ich bin mir nicht mehr sicher, ob das sinnvoll ist).


    Auf DockerHub ist jetzt auch ein fertiges, direkt lauffähiges Image:

    https://hub.docker.com/r/zabrimus/jonglisto-ng-runtime/


    Ich starte das Image mit:

    Code
    1. docker run -v `pwd`/var:/var/jonglisto-ng -v `pwd`/etc:/etc/jonglisto -p 8080:8080 zabrimus/jonglisto-ng-runtime:0.0.3

    Die Konfigurationsdateien werden in das lokale `pwd`/var und `pwd`/etc kopiert und können da angepasst werden. Danach wäre ein Neustart des Containers erforderlich und ... sonst nix. Aufruf dann mit http://localhost:8080/jonglisto-ng


    Wer Docker nicht verwendet oder verwenden will findet die Anleitung zum Build / Start auf der github page (siehe ersten Post).



    Das komplette Changelog:

    Bugfixes:

    • exception in channel configuration, if no channel groups are defined
    • empty epgsearch view (but only if epgd is not configured. Reason: nonsense condition in the code)
    • tried to fix too small column in timer view for date, time and duration
    • click on channel in epg view shows all events for this channel
    • initial timer sorting by date/time
    • fixed time selection in epg view

    New:

    • channel favourites (configuration)
    • cron-like jobs are available (shell script calls or svdrp commands), also used for epg alarm
    • channel favourites can be used in epg view to filter the channel list
    • build image is available at dockerhub: docker pull zabrimus/jonglisto-ng. This results in much faster subsequent builds.
    • runtime image which contains Apache TomEE and jonglisto-ng 0.0.3 is available at dockerhub: docker pull zabrimus/jonglisto-ng-runtime (see documenation in the main page)
    • epg alarm button implemented (osd message, channel switch, custom SVDRP command)
    • new permission view:configuration:favourite:all
    • new permission view:configuration:favourite:user
    • new permission view:configuration:jobs:all
    • new permission view:configuration:jobs:user
    • new permission view:configuration:jobs:shell <-- not yet used
    • new permission view:configuration:jobs:svdrp


    Zabrimus