Imdb id nur mit Titel herausfinden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Erestris
User
Beiträge: 5
Registriert: Mittwoch 14. November 2018, 19:28

Hallo,

ich bin recht neu und hoffe jemand kann mir helfen.

Wie ist es möglich mit Python möglichst kurz und nur mit einem Titel (Format: „Filmtitel (2018)“ ist so vorgegeben) die imdb id (tt1234567) zu ermitteln (und keine weiteren Informationen) ohne zusätzliche Sachen wie Beautfulsoup etc. sondern nur mit Standardcodes um die ID dann weiter zu verwenden?

Hoffe mir kann jemand helfen und evtl. auch mit nem Code-Beispiel wie das geht?

Lg.

Andy
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Erestris: Was hast Du denn schon probiert? Und warum schliesst Du externe Module aus? Das beisst sich ein wenig mit dem „möglichst kurz“, weil man dann ja Sachen selber programmieren muss, die es schon fertig gibt. Zumal es ja auch speziell für IMDB schon Module gibt.

Hast Du schon geschaut ob und welche Daten IMDB in welchen Formaten zur Verfügung stellt? Da gibt es nämlich welche.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Erestris
User
Beiträge: 5
Registriert: Mittwoch 14. November 2018, 19:28

So sieht momentan der Teil der Datei aus den ich versuche zu erstellen:

Code: Alles auswählen

import re
import json
import urllib
import urllib2
import urlparse
import xbmc
import xbmcgui
import xbmcvfs
import os
import inspect
from resources.lib.modules import control
from resources.lib.modules import trakt

def titel(name):

    if control.setting('Ordnerstruktur.auf.Deutsch') != 'false' and len(content) == 0:
        title = name [:-7]
        transyear = name.replace("(|)","")
        year = transyear [-4:]
        imdb = trakt.SearchMovie(title, year, full=False)[0]
        imdb = imdb.get('movie', '0')
        imdb = imdb.get('ids', {}).get('imdb', '0')
        imdb = 'tt' + re.sub('[^0-9]', '', str(imdb))
        lang = 'de'
        germantitle = trakt.getMovieTranslation(imdb, lang)
        transname = germantitle.translate(None, '\/:*?"<>|').strip('.')
    elif control.setting('Ordnerstruktur.auf.Deutsch') != 'false' and not len(content) == 0:
        title = name [:-7]
        transyear = name.replace("(|)","")
        year = transyear [-4:]
        imdb = trakt.SearchTVShow(title, year, full=False)[0]
        imdb = imdb.get('show', '0')
        imdb = imdb.get('ids', {}).get('imdb', '0')
        imdb = 'tt' + re.sub('[^0-9]', '', str(imdb))
        lang = 'de'
        germantitle = trakt.getTVShowTranslation(imdb, lang)
        transname = germantitle.translate(None, '\/:*?"<>|').strip('.')
     elif control.setting('Ordnerstruktur.auf.Deutsch') != 'true' and len(content) == 0:
        transname = name.translate(None, '\/:*?"<>|').strip('.'
     elif control.setting('Ordnerstruktur.auf.Deutsch') != 'true' and not len(content) == 0:
        transtvshowtitle = name.translate(None, '\/:*?"<>|').strip('.')




Als „name“ wird z.b. „FilmXYZ (2018)“ übergeben.

Dann wird die Einstellung in einer settings.xml kontrolliert und dann ob es sich um einen Film (if) oder eine Serie (elif) handelt. Wird die Option ausgeschaltet soll der englische Titel (elif, elif)) verwendet werden.

Hintergrund ist dass es bisher alles in englisch angelegt wurde und es nun die Option geben soll es auch auf deutsch anlegen lassen zu können. Möglichst kurz heißt dass keine weiteren Bibliotheken hinzugefügt werden sollen.

Ich sage gleich dazu dass ich nicht programmieren kann.... ich suche mir meist Code zusammen und manipuliere ihn so bis er macht was ich will. Nur hier komme ich nicht weiter.
Erestris
User
Beiträge: 5
Registriert: Mittwoch 14. November 2018, 19:28

Erledigt :-) habe es gerade hinbekommen :-)
Erestris
User
Beiträge: 5
Registriert: Mittwoch 14. November 2018, 19:28

Hallo,

nun habe ich doch noch ein Problem.
Um den Titel übersetzen zu können muss ich bei Serien die Staffel und Episoden Information wegschneiden und natürlich am Ende nach der Übersetzung wieder hinzufügen. Dies löse ich momentan wie folgt:

episode = Beispielserie S01E01 [-6:]

Dadurch kann ich nach dem alles erledigt ist mit episode wieder alles zusammenfügen...

Problem:

episode = ExtremLangeSerie S999E999 [-6:]

Dies gibt natürlich dann am Ende keine brauchbare Infos mehr zu Staffel und Episode.

Frage:

Wie kann ich soetwas dynamisch herausfiltern mit Python? Die Serien sind natürlich nichts fixes sondern kommen immer aus der Quelle S00E00 ist alles jedes Mal mit anderen zahlen versehen.
Erestris
User
Beiträge: 5
Registriert: Mittwoch 14. November 2018, 19:28

Erledigt..... warum finde ich die Lösungen eigentlich nach stundenlanger Suche doch immer erst kurz nachdem ich gefragt hab.... die Lösung war rsplit.
Antworten