XXV - erste Alpha Version zum testen.

  • Zitat

    Original von Hulk
    *) für "Records" (rupdate) muss wohl ein Patch im VDR aktiv sein, der bei "LSTR" zusätzlich die Abspiellänge liefert..., mit einen normalen ungepatchten VDR werden keine Aufnahmen erkannt.
    Das Format hier : 250-5 07.08 02:55 Titel~Subtitle


    Stimmt du hast Recht, hmm die Laenge der Aufnahme muss ich wohl doch dann direkt aus dem Videofile lesen.



    Geht in Ordnung und kommt auf die ToDo Liste.


    Danke fuer deine super schnelle Skinanpassung ... aber ... wann stehst du denn an einem Sonntag auf ;)

  • xpix


    v 0.0.8 funktioniert relativ gut bei mir, eins ist mir aber aufgefallen (neben dem bereits erwaehntem recordings-problem):
    ab und zu stuerzt jetzt xxv beim betaetigen der remote-control ab:


    Code
    #strace -f xxvd.pl
    ...
    write(17, "HTTP/1.0 200 OK\nContent-type:ima"..., 41) = 41
    write(17, "\377\330\377\340\0\20JFIF\0\1\1\0\0\1\0\1\0\0\377\333\0"..., 4096) = -1 EPIPE (Broken pipe)
    --- SIGPIPE (Broken pipe) @ 0 (0) ---


    (annahme: grab und remotecontrol-action kommen einander in die quere)


    anregung:
    fuer die menuepunkte 'running now' und 'program guide' waere ein button/link 'update epg now' oder so zu empfehlen.


    werde auch mal - wie versprochen - eine anleitung erstellen, wie xxvd zusammen mit embedded mysql zu verwenden ist. in welcher form soll ich dir das dann schicken?


    /wastl

  • Zitat

    Original von wastl
    xpix


    v 0.0.8 funktioniert relativ gut bei mir, eins ist mir aber aufgefallen (neben dem bereits erwaehntem recordings-problem):
    ab und zu stuerzt jetzt xxv beim betaetigen der remote-control ab:
    (annahme: grab und remotecontrol-action kommen einander in die quere)


    Also ich hab jetzt meinen vdr mal so richtig geaergert und kann das abstuerzen bei mir nicht so nachvollziehen. Das Broken Pipe sheint ja auch beim senden des Bildes an den Browser zu passieren. Vielleicht sollte ich den Buffer von 4096 ein wenig vergroessern?


    Zitat


    anregung:
    fuer die menuepunkte 'running now' und 'program guide' waere ein button/link 'update epg now' oder so zu empfehlen.


    Coole Idee, ist beim naechsten Mal dabei ...



    Zitat


    werde auch mal - wie versprochen - eine anleitung erstellen, wie xxvd zusammen mit embedded mysql zu verwenden ist. in welcher form soll ich dir das dann schicken?


    /wastl


    Ja schicks mir einfach per txt, doc, pdf .... was du moechtest. Ich kann (fast) alles lesen ;)

  • Hi,


    da ich keine Lust hatte alle meine VDRADMIN Autotimer abzutippen,
    habe ich mir einen kleine Importroutine erstellt, welche über das angefügte Patch
    als zusätzliches XXV Kommando verfügbar ist.
    Diese Importroutine liest die vorhandene VDRADMIN-Datei vdradmind.at ein,
    und legt die dort definierten Autotimer in der XXV-Datenbank an.


    Genutzt wird das wie folgt :
    XXV> aimport /etc/vdradmin/vdradmind.at
    bzw. als Kurzbefehl
    XXV> ai /etc/vdradmin/vdradmind.at


    dabei hätte ich wieder etwas für die TODO-Liste, den dem Autotimer
    fehlen noch die optionalen Start- und Endzeiten um z.B. nächtliche
    Wiederholungen auszuschliessen zu können.


    Cu,
    Andreas


  • Wirklich nett die Funktion, na hoffentlich werden uns da die vdradminer nicht sauer sein ;) kommt mit in die 0.09.


    Mir raucht gerade der Kopf wie ich die Timer sortieren soll wenn diese 'MDMDF--' drin stehen haben. Na da hab ich auch mal bei vdradmin geklaut. Schon ne tolle Arbeit die die Jungs da geleistet hatten.

  • Hallo Freunde,


    also ich habe heute erfolgreich vdrdevel installiert (ct disi) und werde am Sa. neben RECORDS alles untersuchen nach Kompatibilitaeten. Durch meine Recherche hab ich jetzt eine Loesung gefunden um Previewshots von Records zu erzeugen und die in der Recordansicht einzubauen.


    Also jede menge Sachen zum freuen, wuerde jemand von Euch ein start & Stop skript fuer das xxv bauen? Das fehlt noch ... ;)


    cu
    xpix

  • Hi,


    ich habe mit googles Hilfe, einen Lösungsansatz zum Thema Timersortierung gefunden
    bei dem die "order by TIMERS.Id" durch "order by (TIMERS.Day + 1), TIMERS.Start, TIMERS.Stop" ersetzt wird.


    Das volle SQL Statement in TIMER.pm sieht wie folgt aus:

    Code
    sub list {
    ....
        my $sql = "select TIMERS.Id, TIMERS.Status, CHANNELS.Name, TIMERS.Day, TIMERS.Start, TIMERS.Stop, TIMERS.File from TIMERS, CHANNELS where TIMERS.ChannelID = CHANNELS.Id and TIMERS.Id like '%$id%' order by (TIMERS.Day + 1), TIMERS.Start, TIMERS.Stop";
    ....



    Als Erweiterung hätte ich noch eine Idee, denn dabei fällt mir auf das vdradmin es besser kann,
    den dieses kann nach jeder Spalte in beide Richtung sortieren.


    Einfach per zusätzlicher CGI Parameter, a'la


    http://vdr:9000/?cmd=tlist&sortby=Day&desc=0
    http://vdr:9000/?cmd=tlist&sortby=Day&desc=1
    http://vdr:9000/?cmd=tlist&sortby=Start&desc=1


    nur müsste für zusätzliche Parameter der CGI->Modulwrapper umgeschrieben werden,
    damit die Subroutine die Suchanfrage entsprechende sortieren könnten.


    und statt dem bisherigen &data=xxx
    # ------------------
    sub list {
    # ------------------
    my $obj = shift || return error ('No Object!' );
    my $watcher = shift || return error ('No Watcher!');
    my $console = shift || return error ('No Console');
    my $id = shift || ''; <-----xxx


    zusätzliche Parameter an die Subroutine übergeben zukönnnen,
    was wie folgt aussiehen könnte :
    # ------------------
    sub list {
    # ------------------
    my $obj = shift || return error ('No Object!' );
    my $watcher = shift || return error ('No Watcher!');
    my $console = shift || return error ('No Console');
    my data = shift ;
    my $id = $data->{data} || '';
    my $sortby = $data->{sortby} || 'day'
    my $desc = $data->{desc} || '0'


    Ich habe aber momentan keinen Schimmer, ob das überhaupt gehen könnte,
    und was dies für Auswirkungen auf die Telnetkonsole hätte, wenn mehrere
    Parameter für ein Kommando zulässige wären.


    Cu,
    Andreas

  • Hi,


    ich hab mit dem mySQL Statement der Timerliste noch einwenig weitergespielt,
    um die unlesbare Ausgabe der Start- und Stopzeiten zuverbessern,
    mit folgendem Statement wird aus 1215 => 12:15 bzw. aus 5 => 00:05


    Timer.pm (sub list)

    Code
    my $sql = "
    select TIMERS.Id, TIMERS.Status, CHANNELS.Name, TIMERS.Day, 
    CONCAT(MID(REVERSE(TIMERS.Start),4,1)+0,MID(REVERSE(TIMERS.Start),3,1)+0,':',MID(REVERSE(TIMERS.Start),2,1)+0,MID(REVERSE(TIMERS.Start),1,1)) as Start, 
    CONCAT(MID(REVERSE(TIMERS.Stop),4,1)+0,MID(REVERSE(TIMERS.Stop),3,1)+0,':',MID(REVERSE(TIMERS.Stop),2,1)+0,MID(REVERSE(TIMERS.Stop),1,1)) as Stop, 
    TIMERS.File 
    from TIMERS, CHANNELS 
    where TIMERS.ChannelID = CHANNELS.Id and TIMERS.Id like '%$id%' 
    order by (TIMERS.Day + 1), TIMERS.Start, TIMERS.Stop";


    Cu,
    Andreas

  • Zitat

    Original von Hulk
    ich habe mit googles Hilfe, einen Lösungsansatz zum Thema Timersortierung gefunden
    bei dem die "order by TIMERS.Id" durch "order by (TIMERS.Day + 1), TIMERS.Start, TIMERS.Stop" ersetzt wird.


    Hallo Andreas,


    ich hatte da schon eine Loesung eingebaut. Das Problem an deiner Loesung ist ja das in Day auch die Wochentage stehen koennen. Zb. 'MDMDF--' also hatte ich mir mal den vdradmin angeschaut und deren Loesungsansatz ist gar nicht mal so schlecht. Nachdem der ganze Kram geparst wurde bekommt man den naechstmoeglichen Termin als Sekunden seit Epoche und diesen Wert speichere ich beim Parsen der Timer in die Timerstabelle als NextTime. Somit kann man mit List wunderbar nach nexttime sorteieren und erhaelt immer eine Liste wo die Timer so sortiert sind das der naechste oben steht. Ist in Version 0.09 heute abend.


  • Da hatte ich auch ein Loesung im Template gefunden. Meine sieht bei der darstellung von time so aus:


    Code
    <?% ELSIF c == 5 OR c == 6; # Id Zeiten %?>
                    <?% zeit = field FILTER format('%04d') %?>
                    <td align='right'><?% zeit.chunk(-2).join(':') %?></td>


    ich hatte mir das cpan Modul Template ausgesucht weil es ziemlich maechtig und auch schnell ist. Deine Loesung wuerde natuerlich auch funktionieren. Nur waehre das SQL Statement sehr unuebersichtlich.


    0.09 gibts heute abend ....


    @all


    Hat jemand mal an das Start-Stop Skript gedacht? ... Ich hab von Shell leider nicht so den Durchblick ;)


    cu
    xpix

  • Hi,


    Zitat

    Original von xpix
    ich hatte mir das cpan Modul Template ausgesucht weil es ziemlich maechtig und auch schnell ist. Deine Loesung wuerde natuerlich auch funktionieren. Nur waehre das SQL Statement sehr unuebersichtlich.


    Viele Weg führen nach Rom, deshalb würde ich sage je einfacher um so besser.
    Ich habe zwar im Template-Manuell gesucht bin aber nicht fündig geworden,
    deshalb das die grauenvolle CONCAT(MID(REVERSE Orgie im SQL zustande gekommen;D


    Zitat

    Original von xpix
    Hat jemand mal an das Start-Stop Skript gedacht? ... Ich hab von Shell leider nicht so den Durchblick ;)


    Und was spricht gegen die bereits im Paket enthaltene Lösung mit Hilfe des Scripts etc/xxvd ?
    Es braucht doch bloss der Path für xxvd.pl angepasst werden und der Scripts nach
    /etc/init.d kopiert werden. (incl. Verlinkung der Runlevel)


    Cu,
    Andreas

  • Zitat

    Original von Hulk


    Und was spricht gegen die bereits im Paket enthaltene Lösung mit Hilfe des Scripts etc/xxvd ?
    Es braucht doch bloss der Path für xxvd.pl angepasst werden und der Scripts nach
    /etc/init.d kopiert werden. (incl. Verlinkung der Runlevel)


    Das hatte leider nicht richtig funktioniert ...


    0.09 ist online ....

  • Hi,


    da musst ich doch gleich updaten, und wie immer werden nur die negativen Seiten
    besprochen und die sehr postiven Fortschritte werden unerwähnt übergangen ;D


    *) Die Aufnahmen liesen sich beim ungepachten VDR erst lesen,
    als das Feld duration aus der REGEX herausgelöst wurde...


    LSTR => 250-2 01.06 02:15 Deep Blue Sea


    RECORD.pm => sub analyze

    Code
    -    my ($id, $day, $month, $houre, $minute, $duration, $state, $title)
    -       = $record =~ /^250[\-|\s](\d+)\s+(\d+)\.(\d+)\s+(\d+)\:(\d+)(.?)\s*(\d*).+?\b(.+)/si;
    +    my $duration = 1;
    +    my ($id, $day, $month, $houre, $minute, $state, $title)
    +       = $record =~ /^250[\-|\s](\d+)\s+(\d+)\.(\d+)\s+(\d+)\:(\d+)(.?).+?\b(.+)/si;


    Eigentlich funktioniert es damit, aber dieses extreme RegEx für mich nicht mehr 100% nachvollziehbar.




    *) Beim MPlayer Kommando steigt die Erfolgsquote, wenn die Dateinamen in Anführungszeichen (\') gestellt werden.


    RECORD.pm => sub videoPreview

    Code
    -    my $command = sprintf('%s -nosound -vo jpeg -jpeg outdir=%s -ni -ss %s -sstep %d -vf scale=%d:%d -frames %d %s &> /dev/null',
    +    my $command = sprintf('%s -nosound -vo jpeg -jpeg outdir=\'%s\' -ni -ss %s -sstep %d -vf scale=%d:%d -frames %d \'%s\' &> /dev/null',


    Allerdings gibt es scheinbar ein paar Aufnahmen welche der MPlayer nicht mag,
    das ist aber kein xxvd Problem, sondern es scheitert auch auf der Kommandozeile. ?
    Ich werde es erstmal mit einem Update des MPlayer versuchen.


    *) Ein Stelle im Programm macht micht stutzig, und lässt den Wunsch aufkommen
    xxvd nicht mehr als Superuser laufen zulassen, den ein rm -rf / ist tödlich :rolleyes:


    RECORD.pm => sub readData
    my $erg = `rm -rf $dir`;


    Gibt es eigentlich eine Grund warum xxvd nur mit root-Rechte läuft, außer "IO::Socket::INET->new" ?
    Ich kann irgendwie nicht nachvollziehen warum das Erzeugen eines Socket root-Rechte braucht...



    Cu,
    Andreas

  • @hulk


    ad root: muss es eh nicht. lasse xxvd schon seit (wenn ich mich richtig erinnere) 0.0.3 als benutzer laufen. man muss ab und zu div. fehlerhafte dateirechte und div. anderes zeugs richtigstellen (die xpix im .tgz 'verbrochen' hat ;) und LOGFILE und ERRFILE auf dateien/verzeichnisse zeigen lassen, in denen der benutzer schreib/leserechte hat, aber dann gehts ohne probleme.


    /wastl


    ergaenzung: ein rm -rf / will ich auch als benutzer nicht unbedingt haben ;) habe einstweilen diesen abschnitt auskommentiert ... besser zuviel als zuwenig.

  • Also das musste ich jetzt auch als relativer Newbie trozdem mal probieren, sieht einfach genial aus (BigPatch war/ist ja auch super)!!
    Hab also gleich die neue 0.0.9 genommen.
    Nun nach einigem Trouble, bis die richtigen Perl-Module installiert waren und die Fehlermeldungen beim Start beseitigt waren sieht es nun so aus, als müsste es eigentlich laufen :)



    Nun also flux in den Browser (Firefox auf der selben Kiste wie VDR) aufgemacht und als Adresse: http://127.0.0.1:8080 eingegeben und spannung steigt....


    nix...einfach nur eine Weisse Seite, aber kein fehler. Also mal den Quelltext dieser Seite angeschaut...aha..


    Da kommt ja immerhin was mit XXV vor :) also schonmal nicht schlecht...aber was nun ?


    Also mal das HtmlRoot auf ../deltab gewechselt (xxv natürlich beendet und neu gestartet.) Ergebnis --> Es kommt was, wau! eine Liste aller Programme die Laufen, aber ohne Frames, nur einfach eine einzige Seite. Unten hats ein Menu, wenn ich auf die Links dort klicke passiert nichts.
    Wenn ich den Browser schliesse und nochmal die xxv-adresse eingebe kommt eine Fehlemeldung, seite nicht gefunden oder so...
    Muss dann xxv abbrechen das .pid file löschen und neu starten, dann geht es wieder genau ein Mal, danach ist wieder sense.


    über das telnet interface bekomm ich folgendes:


    Code
    [root@amd1200 ady]# telnet localhost 8005
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    Welcome to XXV System Ver.: 0.01.
    This is Channel 1.
    XXV> Connection closed by foreign host.
    [root@amd1200 ady]#


    Also es läuft, aber ich krieg keine Möglichkeit zum steuern oder Ausgaben angezeigt zu bekommen.


    Hmm sicher nur ein dummer Newbie-Misstake von mir...oder ?

    Software: Ubuntu 10.04 - VDR 1.7.14 + Xineliboutput (VDPAU) + XBMC
    Hardware: NEXUS-S - SkyStar2 - Nova-S2 - Nividia 8600GT

  • Hi,


    Zitat

    Original von wastl
    ad root: muss es eh nicht. lasse xxvd schon seit (wenn ich mich richtig erinnere) 0.0.3 als benutzer laufen.


    ergaenzung: ein rm -rf / will ich auch als benutzer nicht unbedingt haben ;) habe einstweilen diesen abschnitt auskommentiert ... besser zuviel als zuwenig.


    gut zu hören, diese betreffende Zeile hatte (wegen root) bei mir auch eine Raute bekommen :D


    #> su - vdr -c "cd /usr/src/vdr/xxv/XXV-0.09/bin;./xxvd.pl"

    Code
    xxvd started with pid 2562.
    Can't write! at /usr/src/vdr/xxv/XXV-0.09/bin/../lib/Tools.pm line 60.
    =========== top of stack =========
    /usr/src/vdr/xxv/XXV-0.09/bin/../lib/Tools.pm:61 (Tools::stackTrace)
    /usr/src/vdr/xxv/XXV-0.09/bin/../lib/Tools.pm:169 (Tools::error)
    ./xxvd.pl:50 (Tools::save_file)
    : ()
    : ()
    =========== end of stack =========
    root@vdr:/usr/src/vdr/xxv/XXV-0.09# [Fatal] Cannot build initial socket.


    ich habe mich durch die letzte Zeile ins Boxhorn jagen lassen, die nur erscheinen
    wenn xxvd.pl als nicht priviliger User ausgeführt werden. Aber nach deinem Hinweis,
    konnte ich feststellen das xxvd.pl trotz der Meldung sich per HTTPD bedienen lässt,
    Die Ursache kann ich also erstmal wo anders suchen...


    Unimatrix0
    Die Logausgaben sehen erstmal normal* aus, deshalb habe ich keinen Schimmer woran es liegt...
    *) Einmal von "Connection closed by foreign host." absehen



    Cu,
    Andreas

  • Zitat

    Original von Hulk
    da musst ich doch gleich updaten, und wie immer werden nur die negativen Seiten
    besprochen und die sehr postiven Fortschritte werden unerwähnt übergangen ;D


    Tja das ist nun mal so, ich hba mich in meiner 10 jaehrigen "karriere" als Programmierer da schon laengst dran gewoehnt ;)



    Also fuer mich auch nicht mehr ;) Wenn ich mir deine alte Zeile im diff anschaue dann sind $state und $duration vertauscht. Bei mir sieht die Zeile so aus:


    my ($id, $day, $month, $houre, $minute, $state, $duration, $title)
    = $record =~ /^250[\-|\s](\d+)\s+(\d+)\.(\d+)\s+(\d+)\:(\d+)(.?)\s*(\d*).+?\b(.+)/si;


    Der fett dargestellt TYeil zeigt eindeutig, hier koennen Zahlen vorkommen, muss aber nicht (*). Kann es sein das es durch den Tausch der beiden Variablen ($duration, $state) bei dir nicht mehr funktioniert hatte? Ich werde da heute noch ein paar kleine Tests fahren und mal schauen was da nicht stimmt.



    Danke fuer den Tipp, hab ich auch gleich eingebaut ;) Das der mplayer es nicht immer tut, ist mir auch schon aufgefallen. Deswegen sind auch alle Previews immer optional betrachtet und werden bei nicht vorhanden sein, auch nicht dargestellt. Bei den meisten Aufnahmen tut er es aber. Manchmal mag xxvd auch nicht die Pfade, deswegen schaut euch immer das log an wenn mal was nicht funktioniert.



    Ok, du hast natuerlich vollkommen Recht, da war ich einfach nur faul. Ich bau mal ein extra perlrm das die Files einzeln und mit rmdir dann das leere Dir loescht. Das sollte auf jeden Fall sicherer sein als mein kurzer Hack ;) Vielleicht sollte ich mal anfangen xxvd nicht mehr als SuperUser laufen zu lassen ;)

  • Telnet connect geht jetzt auf einmal. Weiss aber echt nicht wieso, hab nix gemacht eigentlich !? ?(
    Die Möglichkeiten sind ja mega!, da wird einem erst richtig bewusst, welche Power in dem Konzept steckt. Kompliment!


    Bei dem WebInterface verhält es sich leider immernoch gleich: Nach laden der ersten Seite (bzw. oft auch nur die oben erwähnte "weisse Seite") ist bei XXV Sendepause. Per Telnet komm ich dann auch nicht mehr drauf "connection refused". Im Log seh ich garnichts.
    Muss dann XXV abschiessen und Pid-Datei killen, danach gehts wieder.
    Bei Telnet-Only-Connetions bleibt XXV stabil und ich kann damit "rumspielen" (goil! :] ) aber sobald ich etwas per Web von ihm will --> Streik! :P

    Software: Ubuntu 10.04 - VDR 1.7.14 + Xineliboutput (VDPAU) + XBMC
    Hardware: NEXUS-S - SkyStar2 - Nova-S2 - Nividia 8600GT

  • Zitat

    Original von wastl
    div. anderes zeugs richtigstellen (die xpix im .tgz 'verbrochen' hat ;)
    ....
    ergaenzung: ein rm -rf / will ich auch als benutzer nicht unbedingt haben ;) habe einstweilen diesen abschnitt auskommentiert ... besser zuviel als zuwenig.


    Ich bin da sehr interessiert wie die Permissions aussehen sollten. Vielleicht machst du mal ein ls -al * damit ich mir mal die Permissions bei dir abschreiben kann ;)


    Das Euch das PreviewVerzeichniss dann aber zulaeuft mit der Zeit ist klar, oder? Na ich bau da was ;)

  • Zitat

    Original von Unimatrix0
    Telnet connect geht jetzt auf einmal. Weiss aber echt nicht wieso, hab nix gemacht eigentlich !? ?(
    Die Möglichkeiten sind ja mega!, da wird einem erst richtig bewusst, welche Power in dem Konzept steckt. Kompliment!


    Danke fuer dein Kompliment ;)



    Dann mit dem Webbrowser drauf gehen und die log hier in den Thread schicken. Ich schau mir das mal an.


    cu
    xpix

Jetzt mitmachen!

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