Ergebnis 1 bis 13 von 13

Thema: Release-Informationen per IMDB-ID

  1. #1
    Avatar von Syrius
    Registriert
    Mar 2015
    Beiträge
    2,137
    Gefällt mir!
    1,171
    Du gefällst: 2,743

    Release-Informationen per IMDB-ID

    Hab hier heute was zusammen geschrieben um Informationen über Filme per BASH zu sammeln:



    Code:
    imdb () {
        # execute: imdb "datei.nfo"
        # execute debug: imdb "datei.nfo" "whatever"
        proxy_user=""
        proxy_pass=""
        proxy_host=""
        proxy_port=""
        if ([ -n "${proxy_user}" ] && [ -n "${proxy_pass}" ] && [ -n "${proxy_host}" ] && [ -n "${proxy_port}" ]); then
    ​	    PROXY_IF="-U ${proxy_user}:${proxy_pass} --socks5 ${proxy_host}:${proxy_port}"
        else
    ​	    unset PROXY_IF
        fi
        imdb_id=`tr '[\000-\011\013-\037\177-\377]' '.' < ${1} | grep -m1 -oE "tt[0-9]{7}"`
        if [ -n "${imdb_id}" ]; then
            apikey=""
            omdb=`curl -sS ${PROXY_IF} -L "http://www.omdbapi.com/?i=${imdb_id}&plot=full&r=xml"`
            movie_title=`echo "${omdb}" | cut -d\" -f8`
            movie_title_de=`curl -sS ${PROXY_IF} -L "http://www.imdb.com/title/${imdb_id}/releaseinfo" | grep "German" -A1 | grep "</td>" | grep "<td>" | grep -v "German" | cut -d\> -f2 | cut -d\< -f1 | head -n1`
            movie_year=`echo "${omdb}" | cut -d\" -f10`
            movie_duration=`echo "${omdb}" | cut -d\" -f16`
            movie_genre=`echo "${omdb}" | cut -d\" -f18`
            movie_actor=`echo "${omdb}" | cut -d\" -f24`
            movie_country=`echo "${omdb}" | cut -d\" -f30`
            movie_poster=`echo "${omdb}" | cut -d\" -f34`
            movie_rating=`echo "${omdb}" | cut -d\" -f38`
            movie_votes=`echo "${omdb}" | cut -d\" -f40`
            movie_type=`echo "${omdb}" | cut -d\" -f44`
            themoviedb_temp=`curl -sS ${PROXY_IF} -L "https://api.themoviedb.org/3/find/${imdb_id}?api_key=${apikey}&external_source=imdb_id&language=de"`
            themoviedb_plot=`echo "${themoviedb_temp}" | sed 's/","/\n"/g' | grep "overview" | cut -c 13- | sed 's/"//g' | sed 's/\\\//g'`
            if [ -n "${2}" ]; then
                echo "# DEBUG -----------------------------------------------------------------------"
                echo "Titel         : ${movie_title}"
                echo "Titel (DE)    : ${movie_title_de}"
                echo "Jahr          : ${movie_year}"
                echo "Laufzeit      : ${movie_duration}"
                echo "Genre         : ${movie_genre}"
                echo "Schauspieler  : ${movie_actor}"
                echo "Land          : ${movie_country}"
                echo "Poster        : ${movie_poster}"
                echo "Bewertung     : ${movie_rating}"
                echo "Votes         : ${movie_votes}"
                echo "Typ           : ${movie_type}"
                echo "Plot          : ${themoviedb_plot}"
                echo "# /DEBUG ----------------------------------------------------------------------"
            fi
        else
            echo "Die NFO gibt es nicht oder enthaelt keine IMDB-ID ..."
        fi
    }
    Ausgabe: imdb "datei.nfo" "debug"
    Code:
    # DEBUG -----------------------------------------------------------------------
    Titel         : The Shawshank Redemption
    Titel (DE)    : Die Verurteilten
    Jahr          : 1994
    Laufzeit      : 142 min
    Genre         : Crime, Drama
    Schauspieler  : Tim Robbins, Morgan Freeman, Bob Gunton, William Sadler
    Land          : USA
    Poster        : http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg
    Bewertung     : 9.3
    Votes         : 1
    Typ           : movie
    Plot          : Das Shawshank Gefängnis in den 30ern: der wegen Mordes an seiner Frau verurteilte Andy Dufresne kommt als Neuling lebenslänglich hinter Gittern. Zurückhaltend wie er ist, ist er ständig das Ziel sexueller Angriffe, doch als er als Banker durchblicken läßt, daß er finanziell für den Direktor und die Wärter eine Menge tun kann, ist für seine Sicherheit gesorgt. Langsam aber sicher freundet er sich mit dem Langzeitinsassen Red an, baut die Gefängnisbibliothek auf und rückt nie von seiner Überzeugung ab, unschuldig zu sein. Viele Jahre vergehen, bis etwas geschieht, was sogar Reds Leben für immer verändern wird...
    # /DEBUG ----------------------------------------------------------------------
    apikey: Es muss zuvor ein Account erstellt und der Key eingetragen werden.

  2. Diesen Mitgliedern gefällt dieser Beitrag:


    • szeneBOX.org Partner - Partner werden?



  3. #2
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    928
    Gefällt mir!
    669
    Du gefällst: 872
    Ich sponsor mal den Regex um die IMDB Id in der nfo zu suchen

    Code:
       
    nfofile=$(cat *.nfo)
    nfoIMDB=`echo "$nfofile" |grep -m1 -oE "tt[0-9]{7}"`
    You are offline
    Try:
    • Don't Panic
    • Look around
    • Interact with reality

  4. Diesen Mitgliedern gefällt dieser Beitrag:


  5. #3
    THEMENSTARTER

    Avatar von Syrius
    Registriert
    Mar 2015
    Beiträge
    2,137
    Gefällt mir!
    1,171
    Du gefällst: 2,743
    meine unprofessionelle Lösung - da ich REGEX nich abhab,

    read_nfo = pfad/datei.nfo

    Code:
    cat "${read_nfo}" | grep "imdb.com" | sed 's/tt/\ntt/g' | sed 's/\//\n/g' | grep -v ":" | grep "tt"
    Danke FLX, deine Variante findet bei mir auf jeden Fall Verwendung!
    Wo Straßen enden, beginnt Freiheit | Antenne Bayern <3


  6. #4
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    928
    Gefällt mir!
    669
    Du gefällst: 872
    Dann ist es doch eine win:win Situation. Ich mag deinen iMDB/TMDB Crawler
    und der bekommt auch sicher Verwendung sobald die Zeit es zulässt oder nen Script Recode ansteht

    PS: bash ist toll
    You are offline
    Try:
    • Don't Panic
    • Look around
    • Interact with reality

  7. #5
    Anfänger
    Registriert
    Dec 2015
    Beiträge
    4
    Gefällt mir!
    4
    Du gefällst: 4
    Code:
    movie_votes=`echo "${omdb}" | cut -d\" -f40 | cut -d\, -f1`
    Hat das nen tieferen Sinn, dass du bei den Votes alles nach der ersten Zahl entfernst?

  8. #6
    THEMENSTARTER

    Avatar von Syrius
    Registriert
    Mar 2015
    Beiträge
    2,137
    Gefällt mir!
    1,171
    Du gefällst: 2,743
    Zitat Zitat von xavier61803 Beitrag anzeigen
    Hat das nen tieferen Sinn, dass du bei den Votes alles nach der ersten Zahl entfernst?
    Stimmt das ergibt keinen Sinn - fixxed.
    Wo Straßen enden, beginnt Freiheit | Antenne Bayern <3


  9. Diesen Mitgliedern gefällt dieser Beitrag:


  10. #7
    THEMENSTARTER

    Avatar von Syrius
    Registriert
    Mar 2015
    Beiträge
    2,137
    Gefällt mir!
    1,171
    Du gefällst: 2,743
    Zitat Zitat von FLX Beitrag anzeigen
    nfoIMDB=`echo "$nfofile" |grep -m1 -oE "tt[0-9]{7}"`[/code]
    Bei Binärdateien gibts da Probleme - eine Lösung anbei.

    Ausgabe
    Code:
    cat "${nfo_name}" | grep -m1 -oE "tt[0-9]{7}"
    Übereinstimmungen in Binärdatei (Standardeingabe).
    Lösung
    Code:
    tr '[\000-\011\013-\037\177-\377]' '.' < ${nfo_name} | grep -m1 -oE "tt[0-9]{7}"
    Zusatz
    Wurde oben mit eingebaut - somit ändert sich die Ausführung wie folgt
    Code:
    imdb "datei.nfo" # ohne Ausgabe
    imdb "datei.nfo" "debug" # mit Ausgabe

  11. Diesen Mitgliedern gefällt dieser Beitrag:


  12. #8
    THEMENSTARTER

    Avatar von Syrius
    Registriert
    Mar 2015
    Beiträge
    2,137
    Gefällt mir!
    1,171
    Du gefällst: 2,743
    Wurde mal noch um Socks5 Proxy für Abfragen der Schnittstellen erweitert

    Code:
        proxy_user=""
        proxy_pass=""
        proxy_host=""
        proxy_port=""
        if ([ -n "${proxy_user}" ] && [ -n "${proxy_pass}" ] && [ -n "${proxy_host}" ] && [ -n "${proxy_port}" ]); then
    ​        PROXY_IF="-U ${proxy_user}:${proxy_pass} --socks5 ${proxy_host}:${proxy_port}"
        else
    ​        unset PROXY_IF
        fi
    Die Variable "PROXY_IF" darf hinter cURL ruhig stehen bleiben - sofern sie gefüllt ist, werden die Daten über den Socks geleitet - andernfalls ist kein Proxy aktiv. Sinnig ist es natürlich die Proxy-Daten vor Aufruf einzulesen und nicht manuell hier innerhalb der Funktion anzupassen - das wurde lediglich zum Verständnis aufgenommen.

    Arbeite sehr gern mit einer Proxy-Rotation. Zum Beispiel wenn man auf einem Server mehrere Adressen hat und diese per ipTables in Rotation laufen lässt. So kann ein Funktionsaufruf über die eine IP raus gehen, der nächste über die andere, usw... Nutze dazu "mocks proxy", adde dann meine IP-Adressen auf dem Server. cURL spricht mit mocks und durch die ipTable-Rotation geht er immer über eine andere IP raus. Man kann natürlich auch einen Crawler schreiben der diverse Proxy-Seiten einliest, die Proxies vor Absetzen des Funktionsaufrufs checkt und dann einen derer nutzt... möglich ist alles

    Sowas geht natürlich auch prima mit dem TOR-Netzwerk. So habe ich mir ein TOR-Relay aufgesetzt und habe ihn für meine IP-Adresse als SOCKS freigegeben. Damit lässt sich dann auch einfach arbeiten. Ein kleiner Cronjob der auf den TOR-Server ein reload macht (neue IP beziehen), und host:port für cURL verwenden. Ist natürlich gerade beim verschieben von großen Dateien aufgrund der geringen Bandbreite/schlechten Routings... untauglich.. aber möglich. Zuvor findet natürlich ein "uptime check" des Hosts statt ob der Proxy nicht beim Host gesperrt ist... wenn doch kann man in einer Schleife ein reload machen bis es durch geht.

  13. Diesen Mitgliedern gefällt dieser Beitrag:


  14. #9
    Junior Avatar von bobby
    Registriert
    Nov 2016
    Beiträge
    42
    Gefällt mir!
    62
    Du gefällst: 9
    gute Idee, vor allem bashing


    ich tendiere immer zu kleinen und schnellen onelinern, deshalb ein kleiner vorschlag / goodie meinerseits:

    omdb=`curl -sS ${PROXY_IF} -L "http://www.omdbapi.com/?i=${imdb_id}&plot=full&r=xml"`
    movie_title=`echo "${omdb}" | cut -d\" -f8`
    movie_title_de=`curl -sS ${PROXY_IF} -L "http://www.imdb.com/title/${imdb_id}/releaseinfo" | grep "German" -A1 | grep "</td>" | grep "<td>" | grep -v "German" | cut -d\> -f2 | cut -d\< -f1 | head -n1`
    Code:
    ..movie_title...
    
    movie_title_de=`curl -sS ${PROXY_IF} -L "http://www.imdb.com/title/${imdb_id}/releaseinfo" | grep "Germany" -A1 | perl -ne '/item__title">([^<]+)/ && print "$1\n"'`
    will der router nicht mehr routen, dann musst du rebooten

  15. #10
    Senior Avatar von Nimbus
    Registriert
    Oct 2015
    Beiträge
    434
    Gefällt mir!
    83
    Du gefällst: 427
    Zum Beispiel wenn man auf einem Server mehrere Adressen hat
    Hierzu sei erwähnt, dass man in diesem Fall auch das "interface" Argument nutzen kann.

  16. #11
    Junior
    Registriert
    Jul 2016
    Beiträge
    53
    Gefällt mir!
    10
    Du gefällst: 35
    Tjo, nach ca. 9 Monaten habe ich den Thread endlich auch endeckt - und schon funzt er nicht mehr. Ein weiteres Beispiel das alles andauernd angepasst werden muss.
    Trotzdem Danke an Syrius das er uns solche Dinge zur Verfügung stellt.

    Zuerst aber ein paar Grundsätzliche Fragen.

    Irgendwie kapiere ich das als Anfänger nicht ganz, also bitte nicht böse sein falls das jetzt dumm klingt.
    Warum wurden da gleich 3 DataBases abgefragt?

    IMDB alleine wegen deutschen Titel, aber - entweder die Filme liegen sowieso in Deutsch mit deutschen Titel vor, oder sind in Orginalsprache. In Orginalsprache interessiert aber der Deutsche Titel eigentlich nicht.
    Und warum wird der Plot von TheMovieDatabase geholt und nicht auch von OMDB ? Oder gleich alle Infos von TMDb ?

    Wobei, ich glaube die Lösung dürfte sein das omdb in der Regel nur Englische Titel/Angaben liefert. Auch weil keine Sprachsuche per api möglich ist.
    Deswegen die deutsche Titelsuche auf IMDB und der Plot von TMDB.
    Stimmt das soweit ?
    Aber warum nicht gleich das ganze auf IMDB oder TMDB suchen ? Gibt es da zuwenig Treffer oder gehen dort andere Infos ab ?


    IMDB hat einige Dinge umgestellt, leider klappt deswegen unter anderem auch das parsen des deutschen Titels nicht mehr und man kann diese eigentlich zeile löschen. In meinen Augen aber auch nicht wichtig, siehe auch oben.

    Ändern muss man aber auch folgendes:
    Zusätzlich eine Zeile mit apiKey von omdb einfügen und diesen Wert an die curl Zeile anhängen.
    api_key_omdb=XXXXXXXX
    omdb=`curl -sS ${PROXY_IF} -L "http://www.omdbapi.com/?i=${imdb_id}&plot=full&r=xml&apikey=$api_key_omdb "`
    Geändert von banane (11.07.2019 um 16:09 Uhr) Grund: Amazon statt imdb geschrieben

  17. #12
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    928
    Gefällt mir!
    669
    Du gefällst: 872
    Die Fragen lassen sich relativ leicht zu beantworten.
    Der Omdb API Key kam erst später dazu und da Imdb/Tmdb und Konsorten jeweils einen anderen Datenbestand haben findet man oftmals treffer die der andere Anbieter nicht hat.
    You are offline
    Try:
    • Don't Panic
    • Look around
    • Interact with reality

  18. Diesen Mitgliedern gefällt dieser Beitrag:


  19. #13
    Junior
    Registriert
    Jul 2016
    Beiträge
    53
    Gefällt mir!
    10
    Du gefällst: 35
    Ja, das wäre logisch.
    Nur, es wird aber nicht versucht von drei Seiten die Komplettinfos zu einem Film abzurufen, sondern von jeder der Seiten ein Schnipsel genommen. Gerade eben weil der Datenbestand unterschiedlich ist, ist die wahrscheinlichkeit das Teilinfos fehlen damit größer, da der Film auf allen drei Seiten vorhanden sein muß.
    Und da wollte ich die Gründe dafür wissen.

Ähnliche Themen

  1. (Suche) - Coder / Informationen / Virtuelles Empfangssystem!
    Von TheLab im Forum Entwickler / IT-Techniker
    Antworten: 0
    Letzter Beitrag: 17.12.2015, 16:23
  2. (PHP) - mygully.com - Prüfen ob Release Thread bereits existiert und wenn ja in diesen posten
    Von darkness im Forum Entwicklung / Programmierung
    Antworten: 5
    Letzter Beitrag: 15.11.2015, 14:14
  3. X-Share V1.1 Release (One-Click-Hoster)
    Von xshare im Forum Werbung
    Antworten: 37
    Letzter Beitrag: 18.09.2015, 23:48
  4. [TuT] Private Informationen aus einem Bild entfernen
    Von Celv im Forum Tutorials & Papers
    Antworten: 4
    Letzter Beitrag: 10.04.2015, 16:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org