Python, Json werte aus einer variable vergleichen und zuordnen

  • Hallo,
    ich bin kompletter Neuling, also bitte etwas Nachsicht.

    ich rufe aktuell in meinem script die json api von kodi auf und hole mir alle Filme in der Datenbank.

    Jetzt möchte ich das Ergebnis mit dem Suchbegriff vergleichen (den ich dann an das script weitergebe) und mir dann bei passendem Resultat die movieid speichern, um diesen film dann per JSON-RPC abspielen zu können.

    mein script bisher

    die response variable sieht so aus

    {u'jsonrpc': u'2.0', u'id': u'1', u'result': {u'movies': [{u'movieid': 1, u'label': u'2 Fast 2 Furious'}, {u'movieid': 2, u'label': u"Charlie's Angels"}, usw usw.


    wäre für Hilfe dankbar

    @BJ1 vielleicht?

  • Im GTO habe ich mal einen Abgleich mit der Videodatenbank gemacht: https://github.com/b-jesch/script…lt.py#L289-L360

    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 erhältst ja sicherlich im Response eine riesige Liste (keine Variable!) im Feld 'result', nämlich alle deine Filme. Diese Liste musst Du iterativ in einer Schleife durchlaufen und die entsprechenden Datenfelder mit Deinen Suchbegriff abgleichen. Bei einem Treffer steigst Du aus der Liste mit dem gefunden Datensatz aus. Das wäre so der Ablauf.

    Da die in den Programmzeitschriften (hier die GTO-Scraper) beworbenen Titel in der Regel öfters mal anders heißen als die in der VideoDB vorhandenen Titel, habe ich mir da ein mehrstufiges Verfahren einfallen lassen. Vom Prinzip läuft es aber genauso ab wie oben beschrieben.

    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

  • ja soweit verstanden habe ich das, aber bis gestern habe ich mit python noch nix am hut gehabt, deswegen meine frage nach etwas mehr Hilfe, ich weiss nicht wie ich das anwenden soll.

    ich brauche ja nur exakte Treffer, da sonst das abspielen ja eh nicht klappen würde.

    also wäre es ja das hier oder


    Code
    for i in range(0, len(response) + 1):
            if i == 0:
                writeLog('Try exact matching of search pattern')

    nur wo wird der abgleich mit dem Suchbegriff gemacht?

  • Ne sorry, weder gebe ich Unterricht in Python Grundlagen noch schreibe ich für Andere die Skripte ;)
    Da musst Du dich schon selber durchbeißen. Wie man Schleifen iterativ durchläuft, findest Du z.B. hier: https://www.hdm-stuttgart.de/~maucher/Pytho…strukturen.html

    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

  • @BJ1
    also das habe ich, aber er zeigt mir keinen Fehler an

    aber der print bleibt auch leer


    EDIT

    so gehts


    aber wie hast du die klein und Grossschreibung umgangen? alexa versteht immer alles in kleingeschrieben aber die filme sind ja gross und klein geschrieben.

    EDIT

    habs

    .lower()

Jetzt mitmachen!

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