[ANNOUNCE] *Update* imdbsearch-0.3.6

  • Hmm... also, ich bin wahrscheinlich der einzige, bei dem es nicht klappt....


    Egal, welche Filmtitel ich eingebe, ich bekomme keine Treffer. Hat evtl. jemand eine imdb-search.sh, die momentan funktioniert und die er uppen könnte ? Das wär toll...


    Vielen Dank im Voraus !


    Otto

    VDR-User #132
    server: debian buster (virtuell unter proxmox), 2 x dvb-s2 (unicable)
    clients: kodis auf raspi, wetek, debian, fedora und android per vnsi


  • moin,


    auch bei mir erhalte ich keine sinnvolle ausgabe
    der html code wird noch abgeholt...


    die überprüfung nach #if [ "$(grep -E 'Overview|Übersicht' $tempout)" != "" ] schlägt schonmal fehl -> grep nach "Meistgesuchte Titel" geht dann


    in /tmp/imdbdebug steht dann, dass getroffen wurde


    aber in den .info dateien steht nur "Titel: ''"


    ???


    wer hat ahnung?


    der storch

    NEU: Asus AT5IONT / TeVii S480 V2.1 Dual DVB-S2 / YaVDR

    ALT: asus pundit ph1 - Celeron D cedar mill 3ghz@100MHZ FSB @0.9Vcore - 60Watt

    Technotrend/Hauppauge WinTV Nexus-S rev2.3 AV-Board1.4 & TT-USB2.0

    512MB Ram, 1TB GreenEco SATA HDD,TOSHIBA DVD-ROM SD-M1612

    20x4 parallel-LCD / Hauppauge FB

  • With imdb-search.sh in attachement I get results. However, I've never seen images and IMDB rating is missing. Cheers, Peter


    Hmm, get an error when I try to save the attachement. Here is the code:



    #!/bin/bash
    # Version 0.0.6a
    # Date: 2007-09-18
    #-------------------
    #änderbare Variablen
    #-------------------
    DEBUG=true
    svdrp="svdrpsend.pl"
    commandNo=7
    cachefolder="/tmp/.imdb-cache"
    #------------------------
    #nur im notfall verändern
    #------------------------
    searchurl="http://us.imdb.com/find?s=tt&q="
    tempout="/tmp/htmlout"
    moviedata="/tmp/moviedata"
    img="/tmp/img.jpg"
    #------------------
    #keinesfalls ändern
    #------------------
    PLUGINCALL=0
    CMDCONFCALL=1
    RECCMDCONFCALL=2
    PLUGINCALLLIVE=3
    MPLAYER=false
    GETIMAGE=true



    function getHTML()
    {
    #Suche ausführen
    lynx -dump -width=500 "$searchurl$1" > $tempout
    tmpurl=$(grep -e 'http:\/\/us.imdb.com\/title\/tt[0-9]*\/' $tempout | head -1 | cut -d"." -f2-)
    #direkt bei der Suche zum eindeutigen Ergebnis weitergeleitet oder nicht?
    if [ "$(grep 'Overview' $tempout)" != "" ]
    #ja
    then
    titleurl=$searchurl$1
    if $DEBUG
    then
    echo "[imdb-search] $1 ergab einen eindeutigen Treffer: $titleurl"
    fi;
    #nein
    #hat die Suche wenigstens Treffer ergeben?
    elif [ "$tmpurl" != "" ]
    #ja
    then
    #Exact Match?
    if [ "$(grep 'Exact Matches' $tempout)" != "" ]
    #ja
    then
    #finde link von dem ersten exact match
    link=$(awk '/Exact Matches/,/^$/' $tempout | grep -e '\[[0-9]*\][^\[]' | head -1 | cut -d"]" -f1 | cut -d"[" -f2).
    exactmatchurl=$(grep `echo $link`' http' $tempout | head -1 | awk '{print $2}')
    if $DEBUG
    then
    echo "[imdb-search] $1 ergab einen 'Exact Match' Treffer: $exactmatchurl"
    fi;
    fi;
    #Popular match?
    if [ "$(grep 'Popular Titles' $tempout)" != "" ]
    #ja
    then
    populartitleurl=$tmpurl
    if $DEBUG
    then
    echo "[imdb-search] $1 ergab einen 'Popular Title' Treffer: $populartitleurl"
    fi;
    #nein
    else
    bestresulturl=$tmpurl
    if $DEBUG
    then
    echo "[imdb-search] $1 ergab einen 'Approx|Partial Match' Treffer: $bestresulturl"
    fi;
    fi;
    #nein
    else
    if $DEBUG
    then
    echo "[imdb-search] $1 ergab keinen Treffer"
    fi;
    fi;
    }



    #anhand des/der Parameter überprüfen woher der Aufruf kam und $title festlegen
    if [ $# -ge 1 ]
    #Parameter gegeben => PLUGINCALL oder RECCMDCONFCALL
    then
    #RECCMCONFCALL oder PLUGINCALL bei dvb-wiedergabe?
    if [ "$(echo $1 | grep '/video')" != "" ]
    #ja
    then
    #RECCMDCONFCALL?
    if [ "$2" = "" ]
    #ja
    then
    DEBUG=false
    calltype=$RECCMDCONFCALL
    #nein
    else
    calltype=$PLUGINCALL
    fi;
    title="$(grep -e '^T.*' $1/info.vdr | head -1 | cut -d' ' -f2- | tr ' ' '+')"
    #nein => PLUGINCALL
    else
    if [ "$2" = "VDRPLUGIN_LIVE" ]
    then
    calltype=$PLUGINCALLLIVE
    elif [ "$2" = "VDRPLUGIN_LIVE_NOIMG" ]
    then
    calltype=$PLUGINCALLLIVE
    GETIMAGE=false
    elif [ "$2" = "VDRPLUGIN" ]
    then
    calltype=$PLUGINCALL
    elif [ "$2" = "VDRPLUGIN_NOIMG" ]
    then
    calltype=$PLUGINCALL
    GETIMAGE=false
    fi;
    for arg in $*
    do
    if [ "$arg" != "VDRPLUGIN" ] && [ "$arg" != "VDRPLUGIN_LIVE" ] && [ "$arg" != "VDRPLUGIN_NOIMG" ] && [ "$arg" != "VDRPLUGIN_LIVE_NOIMG" ]
    then
    if [ "$title" != "" ]
    then
    title="$title+$arg"
    else
    title="$arg"
    fi;
    fi;
    done
    fi;
    #kein Parameter gegeben => CMDCONFCALL
    else
    calltype=$CMDCONFCALL
    channel=$($svdrp chan | grep 250 | cut -d" " -f 2)
    title=$($svdrp lste $channel now | grep 215-T | cut -d" " -f 2-| tr ' ' '+')
    fi;


    if $DEBUG
    then
    echo "[imdb-search] $calltype: Suche nach $title"
    fi;


    #wenn aber mplayer läuft, alles über den haufen werfen...
    mptitle=$(ps ax | #alle Prozesse
    grep mplayer.sh | #die mplayer.sh enthalten
    grep -v grep | #ausser dem grep aufruf selbst natürlich
    sed 's/^.*mplayer.sh//; #entferne alles vor dem mplayer.sh-parameter
    s/\"[^\"]*$//; #entferne alles hinter dem mplayer.sh-parameter
    s/\"//g; #etwaige " entfernen
    s/"//g;
    s/\/.*\///; #entferne im Parameter den Pfad
    s/[^\.]*$//; #entferne Dateiendung
    s/dvdrip.*//I; #entferne mögliche zusätzliche Informationen hinter dem Titel
    s/ac3.*//I;
    s/mp3.*//I;
    s/s[0-9][0-9]*e[0-9][0-9]*.*//I;#;)
    s/\[[^]]*\]//g; #[123]456[123]789=>456789
    s/ /+/g; #bau den title zusammen
    s/_/+/g;
    s/\./+/g #das dürfte alles gewesen sein
    ')


    if [ "$mptitle" != "" ] && [ $calltype != $RECCMDCONFCALL ] && [ $calltype != $PLUGINCALLLIVE ]
    then
    if $DEBUG
    then
    echo "[imdb-search] mplayer läuft=>Suche doch nicht nach $title, sondern nach $mptitle"
    fi;
    MPLAYER=true
    title=$mptitle
    fi;



    # titel aufräumen
    title=$(echo $title | sed 's/\#//')


    #Verschiedene Titel zum probieren
    #Kompletter Titel - Titel vor der Klammer (falls vorhanden) - Titel in der Klammer (falls vorhanden)(Originaltitel?)
    titles="$title $(echo "$title" | grep '(' | cut -d"(" -f 1) $(echo "$title" | grep '(' | cut -d"(" -f2 | cut -d")" -f1 | tr ')' ' ') "


    #Titel im cache?
    if [ -s $cachefolder/$title.info ]
    #ja
    then
    if $DEBUG
    then
    echo "[imdb-search] $title im cache gefunden"
    fi
    cp $cachefolder/$title.info $moviedata
    if [ -s $cachefolder/$title.jpg ]
    then
    cp $cachefolder/$title.jpg $img
    fi;
    #nein
    else
    #get HTML
    for try in $titles
    do
    getHTML $try;
    if [ "$titleurl" != "" ]
    then
    break
    fi;
    done


    if $DEBUG
    then
    echo "[imdb-search] Suchergebnisse:"
    echo "[imdb-search] titleurl: $titleurl"
    echo "[imdb-search] exactmatchurl: $exactmatchurl"
    echo "[imdb-search] populartitleurl: $populartitleurl"
    echo "[imdb-search] bestresulturl: $bestresulturl"
    fi;


    #kein direkter Treffer, also weiterschauen
    if [ "$titleurl" = "" ]
    then
    #exakt?
    if [ "$populartitleurl" != "" ]
    then
    result=$populartitleurl
    #popular?
    elif [ "$exactmatchurl" != "" ]
    then
    result=$exactmatchurl
    #approx|partial?
    elif [ "$bestresulturl" != "" ]
    then
    result=$(echo $bestresulturl | sed 's/LYNXIMGMAP://')
    result=$(echo $bestresulturl | sed 's/sales//')
    #nix?
    else
    if [ calltype = $RECCMDCONFCALL ] || [ calltype = $CMDCONFCALL ]
    then
    dummy=$($svdrpsend mesg "Kein IMDb-Eintrag gefunden!")
    fi;
    exit 1
    fi;
    else
    result=$titleurl
    fi;
    if $DEBUG
    then
    echo "[imdb-search] Ergebnis: $result"
    fi;


    lynx -dump -image-links -width=500 "$result" > $tempout



    #hole filmposter
    imgurl=$(cat $tempout | grep 'http://ia.imdb.com/media' | head -1 | cut -d"." -f2-)
    if [ "$(echo $imgurl | grep 'jpg' )" != "" ]
    then
    wget -O $img $imgurl >/dev/null 2>&1
    cp $img $cachefolder/$title.jpg
    fi




    #Formatiere die Daten
    >$moviedata
    echo "Titel: '$(grep 'IMDb >' $tempout | head -1 | cut -d">" -f2-)'" >> $moviedata
    echo >> $moviedata
    grep 'Nutzer-Bewertung' $tempout | head -1 | sed -e 's/\[[0-9a-zA-Z\.]*\]//g' >> $moviedata
    awk '/^(Regisseur|Director|Season)/,/.*(Diskussionsforen|Message Boards).*/' $tempout | sed -e 's/\[[0-9a-zA-Z\.]*\]//g;s/_//g;/^ *$/d' >> $moviedata
    sed -i '/^ *- $/d;s/^ *- //g' $moviedata
    sed -i 's/ *Overview$/\n---Overview---/' $moviedata
    sed -i 's/ *Cast.*/\n---Cast---/' $moviedata
    sed -i 's/ *Besetzung.*/\n---Besetzung---/' $moviedata
    sed -i 's/ *Additional Details$/\n---Additional Details---/' $moviedata
    sed -i 's/ *Fun Stuff$/\n---Fun Stuff---/' $moviedata
    sed -i 's/ *Fun-Ecke$/\n---Fun-Ecke---/' $moviedata
    sed -i 's/ *User Comments.*/\n---User Comments---/' $moviedata
    sed -i 's/ *Nutzerkommentare.*/\n---Nutzerkommentare---/' $moviedata
    sed -i 's/FAQ$/FAQ:/g' $moviedata
    sed -i 's/^MOVIEmeter:.*/Movie Meter:/g' $moviedata
    sed -i 's/mehr\.\.\.$//g;s/why?//g;/.*Diskussionsforen.*/d;s/^ *//g;s/ *\.\.\. */ \.\.\. /g;s/^\(.*\):$/\n\1:/' $moviedata
    sed -i -e :a -e 'N; s/:\n\([^\n]*\)\n\n/: \1\n\n/g; ba' $moviedata #oneliners zusammenfassen


    #backup
    cp $moviedata $cachefolder/$title.info


    fi


    #Zeige im OSD falls aus commands.conf aufgerufen
    if [ $calltype = $CMDCONFCALL ]
    then
    dummy=$($svdrp hitk Commands)
    dummy=$($svdrp hitk $commandNo)
    elif [ $calltype = $RECCMDCONFCALL ]
    #oder gib direkt aus, falls der Aufruf aus der reccmds.conf kam
    then
    cat $moviedata
    fi;



    #cleanup
    #rm $tempout


    if $MPLAYER
    then
    exit 2
    else
    exit 0
    fi;

    PRODUCTION: Gen2VDR 2.0.5 + AMD A6 + 4GB + GeForce 210 + Cine S2

    Einmal editiert, zuletzt von pdeg69 ()

  • thanks pdeg69!


    this version works for me too.
    does anyone know to setup the script with the german version of imdb?


    greetings


    der storch

    NEU: Asus AT5IONT / TeVii S480 V2.1 Dual DVB-S2 / YaVDR

    ALT: asus pundit ph1 - Celeron D cedar mill 3ghz@100MHZ FSB @0.9Vcore - 60Watt

    Technotrend/Hauppauge WinTV Nexus-S rev2.3 AV-Board1.4 & TT-USB2.0

    512MB Ram, 1TB GreenEco SATA HDD,TOSHIBA DVD-ROM SD-M1612

    20x4 parallel-LCD / Hauppauge FB

  • German URL ( searchurl="http://german.imdb.com/find?s=tt&q=" ) doesn't work anymore. Just tried it and result is "no data found". Let's hope the author or someone else will fix it. Unfortunately, I can't. Perhaps the next Gen2VDR V3 will have XBMC integration. That would also solve this issue :arme

    PRODUCTION: Gen2VDR 2.0.5 + AMD A6 + 4GB + GeForce 210 + Cine S2

    3 Mal editiert, zuletzt von pdeg69 ()

  • hi,


    bekomme eine fehler beim aufruf des scripts



    habe das script aus dem obigen thread genommen. das aus der version 0.3.6 hatte nie etwas augegeben.


  • Und was steht denn in den Zeilen 291 und 295??


    Am besten Du postest mal das ganze Script mit CODE - Tags

  • @c-3po


    das script steht doch ein paar posts weiter oben. hier der betreffende ausschnitt


    Code
    #Zeige im OSD falls aus commands.conf aufgerufen
    if [ $calltype = $CMDCONFCALL ]
    then
    dummy=$($svdrp hitk Commands)
    dummy=$($svdrp hitk $commandNo)
    elif [ $calltype = $RECCMDCONFCALL ]
    #oder gib direkt aus, falls der Aufruf aus der reccmds.conf kam
    then
    cat $moviedata
    fi;
  • Die Webadresse für die deutsche IMDb hat sich geändert. Einfach im Script "german.imdb.com" durch "www.imdb.de" ersetzen. Wenn man das Plugin auf der Konsole aufruft, ist diese Ausgabe normal:

    Code
    vdr:~# sh imdb-search.sh "Juno"
    /usr/bin/imdb-search.sh: line 311: [: =: unary operator expected
    /usr/bin/imdb-search.sh: line 315: [: =: unary operator expected

    Das Ergebnis kann man auf der Konsole mit "cat /tmp/moviedata" besichtigen.


    Was nicht geht (TODO):


    - Ausgabe der IMDb-Info nicht UTF-8 konform (vdr > 1.6.x)
    - Plugin nur in englisch
    - bei Aufnahmen ohne "info.vdr" z.B. gerippte DVD's (dvd2vdr) scheitert das Script, da der Filmname statt aus der Ordnerbezeichnung aus v.g. Datei ausgelesen wird
    - der Ordner für die Aufnahmen sollte als Variable angelegt sein > /video oder /video0?
    - das Live-plugin benutzt eine eigene Abfrage der IMDb. Weshalb im Script Live berücksichtigt wird, weiß ich nicht...

    Gruß
    iNOB

    4 Mal editiert, zuletzt von iNOB ()

  • Hi, ich habe mir mal erlaubt das Script etwas anzupassen:


    - Kommentare entfernt
    - an die deutsche IMDB angepassst
    - Felermeldung [: =: unary operator expected korrigiert.


    Jetzt sieht das so aus:


    Code
    vdr02 tmp # /mnt/data/tmp/imdb-search.sh waterworld
    [imdb-search] : Suche nach waterworld
    [imdb-search] waterworld ergab einen 'Approx|Partial Match' Treffer:  http://www.imdb.de/title/tt0114898/
    [imdb-search] Suchergebnisse:
    [imdb-search] titleurl:
    [imdb-search] exactmatchurl:
    [imdb-search] populartitleurl:
    [imdb-search] bestresulturl:  http://www.imdb.de/title/tt0114898/
    [imdb-search] Ergebnis: http://www.imdb.de/title/tt0114898/
    vdr02 tmp #


    /tmp/.imdb-cache/waterworld.info:




    Großartig getestet habe ich es aber allerdings nicht, sollten noch irgendwelche Fehler auftreten, einfach hier posten,l dann finden wir bestimmt eine Lösung. :)

  • Irgendwie ist dein Archiv kaputt.


    BTW: D.h. ihr seit alle in der Lage während des Mplayer Playback das Befehle Menü aufzurufen? Ich wollte schon immer mal wissen ob das nur bei mir nicht geht.


    cu

  • Hmm.... gut die Fehlermeldung ist jetzt weg. Schon einmal fein :) Irgendeine Idee, wie man an die Bilder kommt? Laut Script sollte die ja in /tmp/.imdb-cache liegen....


    Gruß
    iNOB

  • Bei mir ist die Ausgabe des Scriptes, sagen wir mal, sehr kompakt. Die Info endet meist mit dem Text "Besetzung".
    Ich hänge mal die htmlout und die moviedata an. In htmlout sind die Infos alle enthalten, kommen aber nicht in der moviedata an.
    Könnt Ihr sagen warum nicht?


    Danke


    Christian

    Dateien

    Mein VDR:
    MSI K9N2GM, AMD Athlon2 4850e, 2x 1GB OZC RAM, 2x 1TB Festplatte SATA, Thermaltake DH101
    TechnoTrend Premium T1200+TV-Out, SATELCO EasyWatch DVB-C+CAM+Alphacrypt
    VDR 1.6.0-2 installiert mit x-vdr 0.8.9 unter Sidux Uranus
    DVB-T Rhein-Hessen, DVB-C bei Unitymedia

Jetzt mitmachen!

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