Wie Bewertung von Film am einfachsten Scrappen

  • Hallo beisammen,

    ich dachte mir ich mach mich mal etwas nützlich (nicht nur über HowTos) und versuche hier zu unterstützen. Ich hab ein Addon das ich gerne benutze, aber dummerweise hat leider die zugehörige Webseite und damit das Addon keine Bewertungen der Filme und ich muss nebenbei immer die dinger manuell bei diversen DB-Seiten suchen. Ich dachte mir die müsste man über themovieDB oder imdb oder ähnliches ja leicht beziehen können und wollte sowieso lange mal in Python/Kodi Addons einsteigen (Bisher nur C und Java Erfahrung...).

    Das "Setzen" der Bewertung ist ja kein Problem mit
    list_item = xbmcgui.ListItem(label=item)
    list_item.setInfo('video', 'rating': '9.1')
    aber - jetzt müsste man halt die Bewertung irgendwo herbekommen - 9.1 hat ja nicht jeder :whistling:

    Nachdem ich rausgefunden hab, dass die Webseite keine Bewertung der Filme mitliefert (und deswegen das fehlt), hab ich versucht rauszufinden, wie ich das mit Bordmitteln am besten über themovieDB oder imdb scrappe (Titel, Jahr, Gerne,... ist verfügbar!), hab aber leider nichts gefunden trotz längerer Suche...


    Könnte mir da jemand bitte helfen? Das muss doch irgendwie mit Bordmitteln gehen, oder?


    Viele Grüße,

    Linkin

  • Ist die Frage doch nicht so einfach oder war sie zu blöd?

    Warum zu blöd, diese Funktion wäre sicher sehr gut,
    ich z.B. nutze genau diese Funktion sehr oft auf meinem
    E2 Receiver wo ich über das EPG jeden Film nach der Bewertung
    bei IMDB abfragen kann.

    Möchte diese nützliche Funktion nicht missen, daher denke ich
    würde dies hier auch einigen bestimmt gefallen.

    Beim Umsetzen kann ich leider nicht helfen.

    Mein System:

    Shield pro 2019 Kodi 19.4
    FIRE TV 4K MAX Kodi 19.3
    FIRE TV CUBE Kodi 19.3

    Skin Rapier
    2TB SSD in QNAP TS-253D

  • Du müsstest ein Addon schreiben auf das Du zurückgreifen kannst. Dort kannst Du dann mit Phyton arbeiten.
    Ideen wie du die infos am besten bekommst kannst du von den TVDB und TMDB Scrapern bekommen.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Vielen Danke für die Hilfe und Ideen. Ich hab heute etwas Zeit verbracht mich in die verschiedenen Addons einzulesen und hab mit Hilfe von Sandman's Amazon Addon (Quellcode) des ursprünglichen e eine funktionierende Lösung gefunden. Leider gibt es noch ein paar Frage, wo ich eure Hilfe bräuchte:

    1) ich bekomm beim coden immer wieder Probleme mit "indents" --> hab noch nicht so viel Erfahrung mit Python und Notepad++ hat da scheinbar Probleme mit Indents... hat hier jemand einen Rat oder ein alternatives/konfortableres Codingtool für mich?
    2) Ich hab jetzt selber einen Apikey von MovieDB erzeugt, würde den aber ungerne in ein offizielles Repo reinbringen - gibts hier alternative Vorschläge? :)
    3) Bei MovieDB wird die Anzahl der Requests pro 10 Sekunden auf 40 limitiert - hab aktuell deswegen einen kleinen Workaround eingebaut (dass nur 30 abgefragt werden), aber hier deswegen die Frage: wie machen das die Scrapper? Fangen die das ab und warten dann 12 Sekunden?
    4) Ich möchte das Rating in der Liste irgendwie noch sinnvoll anzeigen (am liebsten mit Sternen!) - gibts hier eine schöne Darstellungsweise? Aktuell sieht man es nur, wenn man auf "Informationen" geht ...

    Code würde ich hier posten bzw. einen Pullrequest erstellen, sobald ich Glücklich mit dem Ergebnis bin :)

    1. PyCharm von JetBrains
    2. Sowas kann man in einem Addon "verschleiern" - als obfuscated Code. Mach z.B. ein ROT13 aus dem Key und lege ihn als Konstante im Script ab.

      Code
      mykey='meinApiKey'
      print mykey.encode('ROT13')
      zrvaNcvXrl
      print 'zrvaNcvXrl'.decode('ROT13')
      meinApiKey
    3. Ein Request ist ja nicht nur die Abfrage eines Wertes, sondern kann auch eine Anfrage sein, die sehr viele Ergebnisse zurückliefert, z.B 'gebe mir alle Neuerscheinungen ab dem 1.4.2017 zurück'. Das können dann je nach Ergebniss 30, 40 oder auch 200 Datensätze sein, ist aber nur 1 Request, den du abgesetzt hast.
    4. Das ist dann eine Kombi aus Skript und Grafik.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Erst einmal vielen Dank dir für die Info!

    1) Danke dir! Werde ich mir morgen mal anschauen!
    2) der Code ist zwar dann nicht im Klartext vorhanden, aber doch trotzdem oder? Wie macht das denn der moviedb scrapper der bei kodi dabei ist? Hab das nicht gefunden im scrapper...
    3) ich hab leider unzusammenhängende Filme, bin mir jetzt nicht ob bzw. Wie man das zu einer response zusammenfassen kann!
    4) du meinst quasi unterscheiden von 0 bis 10 in 0,5 Schritten und dann Bilder einblenden? Kennst du ein addon, dass das so macht? Gibt's da wirklich keine build in Lösung? Das ist ja schon ein Standard Problem eigentlich...

  • So, habs heute mal geschafft zu coden.

    1) Ich hab den Bug in Notepad++ gefunden - mit dem Bugfix läufts super:
    http://stackoverflow.com/questions/3366…ation-messes-up
    Go to Settings -> "Preferences..." -> Language Menu/Tab Settings and check 'Replace by space'
    (Tabulatorbreite 4 scheint zu funktionieren!)

    2) Ja das scheint nur ein "verstecken" zu sein - hab so z.B. auch einen funktionierende Api-Key eines anderen Entwicklers gefunden... Gibt es da eine bessere Methode das zu verstecken?

    zu: 3) + 4) Ich hab jetzt eine Möglichkeit gefunden auf 429 - Fehler zu überprüfen und habs so hinbekommen. "Allgemein" einen "active wait" einzubauen find ich jetzt nicht so toll, da das suchen bei mir eh schon knapp 20 Sekunden dauert...

    -----

    Schaut also mit Ausnahme von 2) alles ganz gut aus - aber eine zusätzliche Frage hab ich noch:


    5) gibts eine Möglichkeit die Liste mit Namen zu erstellen und anzuzeigen und während es schon angezeigt wird die Ratings im Hintergrund nachzuladen und die Info nachträglich hinzuzufügen? Geht das über Threading?

  • 2) Ja das scheint nur ein "verstecken" zu sein - hab so z.B. auch einen funktionierende Api-Key eines anderen Entwicklers gefunden... Gibt es da eine bessere Methode das zu verstecken?

    Wozu? Ein API-Key ist doch kein Geheimschlüssel wie die Geheimzahl deiner Kreditkarte? Der API-Key identifiziert doch lediglich deine Anwendung gegenüber dem Server! So einen Schlüssel kann doch jeder bekommen, der Anwendungen entwickelt und auf die DB des Servers zugreifen will. Ich würde da jetzt kein Drama daraus machen ;) .

    Ansonsten, wenns ums Verstecken geht, sind deiner Phantasie keine Grenzen gesetzt. Da kann man alle möglichen und unmöglichen Algorythmen einsetzen, über XOR-Verknüpfung, festen Offset (Schlüsselwert = ASCII-Wert (Original) + 5), von hinten nach vorn und umgedreht usw. usf.

    5) Threading nutze ich nicht, k.A.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Du verwechselst Lizenzkeys mit API-Keys. Da die API-Keys deiner App/Addon zugeordnet werden, musst Du die natürlich mit der App verteilen, ansonsten funktioniert ja deine App nicht. Allerdings is so ein API-Key nicht öffentlich im eigentlichen Sinn.

    Du hast z.B. mit Sandmanns Key für Traffic gesorgt, der aufgrund des Keys natürlich Sandmann zugeordnet wird. Solange aber z.B. der Traffic den Nutzungsvereinbarungen entspricht (die bekommst Du mit dem Key), passiert da auch nichts.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

Jetzt mitmachen!

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