Ergebnis 1 bis 13 von 13

Thema: Release-Informationen per IMDB-ID

  1. #1
    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816

    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/MV5BODU4MjU4NjIwNl5BMl5BanBnXkFtZTgwMDU2MjEyMDE@._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:


  3. Werbung - Hier werben?
  4. #2
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    1,647
    Gefällt mir!
    949
    Du gefällst: 1,244
    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

  5. Diesen Mitgliedern gefällt dieser Beitrag:


  6. #3
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    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!
    SzeneBox.org bei Telegram https://t.me/szenebox

  7. #4
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    1,647
    Gefällt mir!
    949
    Du gefällst: 1,244
    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

  8. #5
    Anfänger
    Registriert
    Dec 2015
    Beiträge
    4
    Gefällt mir!
    4
    Du gefällst: 2
    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?

  9. #6
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    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.
    SzeneBox.org bei Telegram https://t.me/szenebox

  10. Diesen Mitgliedern gefällt dieser Beitrag:


  11. #7
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    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

  12. Diesen Mitgliedern gefällt dieser Beitrag:


  13. #8
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    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.

  14. Diesen Mitgliedern gefällt dieser Beitrag:


  15. #9
    Junior Avatar von bobby
    Registriert
    Nov 2016
    Beiträge
    72
    Gefällt mir!
    92
    Du gefällst: 16
    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

  16. #10
    Senior Avatar von Nimbus
    Registriert
    Oct 2015
    Beiträge
    561
    Gefällt mir!
    96
    Du gefällst: 573
    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.

  17. #11
    Senior
    Registriert
    Jul 2016
    Beiträge
    335
    Gefällt mir!
    83
    Du gefällst: 397
    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

  18. #12
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    1,647
    Gefällt mir!
    949
    Du gefällst: 1,244
    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

  19. Diesen Mitgliedern gefällt dieser Beitrag:


  20. #13
    Senior
    Registriert
    Jul 2016
    Beiträge
    335
    Gefällt mir!
    83
    Du gefällst: 397
    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. (BASH) - Crawler IMDB-ID by Release-Name / Dirname xrel.to srrdb.com
    Von syrius im Forum Entwicklung / Programmierung
    Antworten: 2
    Letzter Beitrag: 14.07.2019, 20:36
  2. GOOLE SEO (Meta Informationen) einer grösseren Website automatisieren?
    Von Guest im Forum Webmaster Daily Talk & OffTopic
    Antworten: 2
    Letzter Beitrag: 19.07.2017, 10:31
  3. imdb puling (IMDb: 7.4/10)
    Von murat im Forum IntelligeN
    Antworten: 8
    Letzter Beitrag: 02.06.2017, 21:51
  4. (Suche) - Coder / Informationen / Virtuelles Empfangssystem!
    Von TheLab im Forum Entwickler / IT-Techniker
    Antworten: 0
    Letzter Beitrag: 17.12.2015, 17:23
  5. [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