Datenbank mit Aufnahmeinfos füttern

  • Hallo Liebe Gemeinde. ;)


    Erstmal zum "Warum?".
    Die Aufnahmen, die ich auf DVD archiviere, werden komplett aus dem Aufnahmeverzeichnis gelöscht. Damit ich einen Überblick über meine DVDs behalten kann, hatte ich ein PHP-Skript gebastelt, welches über die reccmds.conf aufgerufen alle möglichen Infos zu der Aufnahme in eine MySQL Datenbank schreibt.


    Inzwischen habe ich einen kleinen File/Web/UPnP/MySQL-Server aufgesetzt und den VDR abgespeckt. Sprich die Datenbank läuft jetzt auf dem Server. Damit die Startzeit nicht noch länger wird, möchte ich eigentlich keinen Webserver (zum Ausführen des PHP-Skripts) mehr installieren. Nach Möglichkeit sollte das Skript komplett über die Shell abgewickelt werden, oder aber in Perl. Mit der Shell komme ich ganz gut zurecht, jedoch habe ich noch keine Ahnung von regulären Ausdrücken und die brauche ich wohl...


    Welche Infos sollen nun in der Datenbank landen:

    • Aufnahmedatum und -uhrzeit
    • Titel
    • Untertitel (wenn vorhanden)
    • Beschreibung
    • Länge der Aufnahme
    • Ein Screenshot der Aufnahme


    Bis auf die Länge und den Screenshot sind alle Daten in der info.vdr drin. Ich habe mal ein wenig rumexperimentiert und bin zu folgendem Ansatz gekommen:


    Inhalt der info.vdr

    Code
    C S19.2E-1-1089-12040
    E 37892 1148819400 5700 50 3
    T Wallace & Gromit - Das muss kneten
    D Wallace & Gromit - zwei Namen, zwei komische Helden. Wallace ist der besessene Erfinder mit stinkender Leidenschaft: Käse. Gromit sein treuer Hund mit klugem Kopf und starken Nerven. Gemeinsam erleben die Knetfiguren die unglaublichsten Abenteuer. ...
    X 2 03 deu


    Kommandozeile mit Ergebnis:

    Code
    Titel der Aufnahme:
    root@satpc:~# cat /video/%Wallace_\&_Gromit_-_Das_muss_kneten/2006-05-28.14.20.99.99.rec/info.vdr | grep "^T" | cut -b 3-
    Wallace & Gromit - Das muss kneten
    
    
    Beschreibung der Aufnahme:
    root@satpc:~# cat /video/%Wallace_\&_Gromit_-_Das_muss_kneten/2006-05-28.14.20.99.99.rec/info.vdr | grep "^D" | cut -b 3-
    Wallace & Gromit - zwei Namen, zwei komische Helden. Wallace ist der besessene Erfinder mit stinkender Leidenschaft: Käse. Gromit sein treuer Hund mit klugem Kopf und starken Nerven. Gemeinsam erleben die Knetfiguren die unglaublichsten Abenteuer. ...


    So weit - so gut. Jetzt wird es haarig. Die Beschreibung kann Pipes enthalten ("|") die wieder durch Zeilenumbrüche ersetzt werden müssen. Brauche ich hierfür sed?
    Die Länge der Aufnahme kann man wunderbar über die Größe der index.vdr bestimmen. Einfach die Dateigröße ermitteln und durch 8 teilen ergibt die Anzahl der Frames. Also nochmal durch 25 und man hat die Länge in Sekunden. Wie kann man mir der Bash rechnen??


    Dann das nächste Problem: Das Bild muß noch irgendwie (BASE64??) umgewandelt werden, damit es mit an MySql übergeben werden kann.


    Vielleicht kann mir der Eine oder Andere bei einem Problem helfen? Ich bin auch gerne bereit mir reguläre Ausdrücke näher anzusehen. Früher oder später muß ich da sowiso ran.


    Schon mal Danke an Alle, die sich ein paar Gedanken machen!

    Hardware: Gigabyte GA-970A-D3, AMD Athlon II X2 235e, 4GB RAM, Zotac GeForce 210 Synergy Edition 1GB, Corsair Force3 60GB SSD, Mystique SaTiX-S2 Dual, 6.4" TFT, Atric IR Einschalter Rev.5, Logitech Harmony 900, Samsung LE46A789 full HD LCD, Denon AVR-1910, USB Atmo-Light von Slime
    Software: yaVDR 0.5
    Streaming Client 1: Hauppauge MediaMVP
    Streaming Client 2: Telegant TG100 (wenn ich mal irgendwann die Zeit finde das UPnP-Plugin zu testen)

  • Kurzfassung:


    Pipe in Zeilenumbruch:

    Code
    echo "foo|bar" | sed -e 's/|/\n/g'


    Rechnen:

    Code
    X=2
    # Speziell bash
    A=$((X+4))
    echo $A
    # Shell allgemein
    let B=A*2
    echo $B


    Base64:

    Code
    echo "foo öäü bar" | mimencode


    http://learnlinux.tsf.org.za/c…hell-scripting/index.html
    http://www.linuxfibel.de/

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

    Einmal editiert, zuletzt von vejoun ()

  • Hi,


    Zeitpunkt, Titel, Beschreibung ohne sed:

  • Na dann

    Code
    CREATE TABLE `aufnahmen` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `zeitpunkt` VARCHAR( 16 ) NOT NULL ,
    `titel` VARCHAR( 255 ) NOT NULL ,
    `beschreibung` TEXT,
    PRIMARY KEY ( `id` ) 
    ) TYPE = MYISAM ;


    dann eine Pipe erzeugen

    Code
    mkfifo /var/log/records.pipe


    und einmal das Deamonscript

  • Ein herzliches Dankeschön an euch!!


    Das Skript sieht nun so aus:


    Die Sache mit dem Bild muß ich mir nochmal anschauen, da habe ich gerade keine Zeit mehr für (die bessere Hälfte ruft schon). Ansonsten ist das schon fast zu perfekt. ;)


    @Gun-Food: Die Tabelle existiert bereits seit ein paar Jahren und wurde bis jetzt über PHP gefüttert. Nun wird das wohl direkt per mysql ablaufen.


    Ich melde mich wieder, wenn alles soweit steht.

    Hardware: Gigabyte GA-970A-D3, AMD Athlon II X2 235e, 4GB RAM, Zotac GeForce 210 Synergy Edition 1GB, Corsair Force3 60GB SSD, Mystique SaTiX-S2 Dual, 6.4" TFT, Atric IR Einschalter Rev.5, Logitech Harmony 900, Samsung LE46A789 full HD LCD, Denon AVR-1910, USB Atmo-Light von Slime
    Software: yaVDR 0.5
    Streaming Client 1: Hauppauge MediaMVP
    Streaming Client 2: Telegant TG100 (wenn ich mal irgendwann die Zeit finde das UPnP-Plugin zu testen)

  • Ich bin nun etwas weiter gekommen:


    Leider gibt es beim Eintragen des Bildes eine Fehlermeldung. Ich vermute mal, daß in den binären Daten irgendwelche Steuerzeichen sind, an denen sich mysql verschluckt. In PHP hatte ich das mit "addslashes()" gelöst. Bibt es an der Kommandozeile auch eine Möglichkeit Zeichen zu maskieren?
    Oder besser noch: kann ich MySQL auch z. B. base64 codierte Daten als Blob senden?

    Hardware: Gigabyte GA-970A-D3, AMD Athlon II X2 235e, 4GB RAM, Zotac GeForce 210 Synergy Edition 1GB, Corsair Force3 60GB SSD, Mystique SaTiX-S2 Dual, 6.4" TFT, Atric IR Einschalter Rev.5, Logitech Harmony 900, Samsung LE46A789 full HD LCD, Denon AVR-1910, USB Atmo-Light von Slime
    Software: yaVDR 0.5
    Streaming Client 1: Hauppauge MediaMVP
    Streaming Client 2: Telegant TG100 (wenn ich mal irgendwann die Zeit finde das UPnP-Plugin zu testen)

Jetzt mitmachen!

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