[python] [xbmcplugin] SET/GET in/aus resources/settings.xml

  • Ich wieder. ich möchte mal ein bisschen cachen, damit zB Thumbnails nicht immer gescraped werden müssen. Also dachte ich mir, ich schau mir mal die getSetting/setSetting()-Sachen an. Unter xbmcaddon hat er mir mit jedem Zugriff die gespeicherten Daten gelöscht. Unter xbcmplugin landet Nix in der recources/settings.xml - Es schien alles so straightforward zu sein.

    Code-Ausschnitt:


    -Da ich weiss, dass ich hier die Richtigen frage, bedanke ich mich schon mal im Voraus für die Antworten.

    mfg chmee

  • ui. ich hab xbmcaddon bzw. die settings.xml in resources falsch verstanden. Dennoch bin ich weiterhin auf der Suche nach Läuterung:)

  • Thema mit vfs geklärt. verbraten im burningseries-addon.

    2 Mal editiert, zuletzt von chmee (2. März 2013 um 02:12)

  • Nein, mit Sandbox hat das ganze nichts zutun - im Gegenteil, die XBMC Add-on API bewegt sich sogar vom Sandbox Konzept weg. Ein Beispiel davon ist der Wechseln von internem zu externem Python seit XBMC Eden.

    Der Vorteil (den du gar nicht benötigst) von xbmcvfs ist, dass du damit auch Pfade innerhalb des XBMC Virtual-File-Systems benutzen kannst.
    z.B. Wenn dein Add-on es erlaubt eine Setting vom Typ "Folder" zu setzen kann es durchaus sein, dass dieser Folder per SMB/SSH/SCP/FTP/whatever über eine XBMC-Quelle erreichbar ist, also eine URI "smb://user:pass@server/share" oder "ftp://1.2.3.4/path" hat. xbmcvfs beherrscht eben diese URIs.

    Wenn du nur cachen willst dann speichere doch einfach die Bilder im "user_data/http://dein.addon.id/"-Verzeichnis, z.B. erreichbar über:

    Code
    storage_path = xbmc.translatePath(addon.getAddonInfo('profile'))
    local_file = os.path.join(storage_path, 'local_image.jpg')
    success = urllib.urlretrieve(picture_url, local_file)

    Grüße,
    sphere

  • Beim Auslesen des Seriennamen mußich pro Serie in die Serien-Unterseite und die url auslesen, kryptische Namen und so. Wenn ich das Bild aus dem eigentlichen Cache aufrufen wollte, brauche ich weiterhin den Namen, den ich doch wieder auslesen/parsen muß. Das ist die Bremse, die ich umgehen will. Bessere Ideen gerne gehört :) Momentan speichere ich das Tupel Serienname<>bildurl

    Code
    serie/90210<>http://www.burning-seri.es/asset/img/cover/61eeec72.jpg
    serie/hack-Sign<>http://www.burning-seri.es/asset/img/cover/0f5c9b12.jpg
    serie/10-Dinge-die-ich-an-dir-hasse<>http://www.burning-seri.es/asset/img/cover/023b8aeb.jpg
    serie/10-8-Officers-on-Duty<>http://www.burning-seri.es/asset/img/cover/14aba3b1.jpg
    ..


    Ich habe mich für ein API-Modul entschieden, weil ich gleichermaßen Zweifel hatte, ob XBMC alle Datenzugriffe per python zulassen täte. Ich könnte nun auch dieses Modul wieder pythonkonform schreiben, damit es Eden-Kompatibel ist. Aber ich bin mal ehrlich, es funktioniert unter Eden und die Bilder sind ein Ansporn Frodo zu installieren :)

    mfg chmee

  • Verstehe - da hatte ich dein Problem falsch verstanden.

    Sieht wie ein abgeschnittener Hash oder eine CRC Summe aus - vielleicht lässt die URL sich berechnen...
    Andererseits, wenn du ein Android Gerät hast, installiere dir doch mal die App von denen und schau dir mir Wireshark an, was die so treibt. Ich wette es gibt auch eine Json/XML API...

  • Ah ok das mit den URIs über xbmcvfs ergibt Sinn und wäre je nach Anwendungfall auch ein Vorteil.

    Eine Api gibt es wirklich die ist aber eher wie die Mobilvariante der Seite und zeigt keine Bilder.

    Selber lokal speichern wie von dersphere vorgeschlagen wäre doch ne ganz gute Möglichkeit. Dann könntest du die Dateinamen auch selbst bestimmen.

  • Mal abgesehen von dem Problem erst einmal an die URLs zu kommen, würde ich nicht empfehlen die Bilder alle selbst zu cachen (also in python herunterzuladen).
    Das XBMC interne image caching arbeitet einfach besser (asynchron und parallel).

  • Wie ist das eigentlich, wenn XBMC schon mal ein Bild von einer Url angezeigt hat, wird das automatisch gecached? Wenn das nächste mal das Bild von dieser Url angezeigt werden soll, nimmt XBMC automatisch die lokale Variante? Und wenn ja bleibt die "ewig" erhalten oder nur über einen gewissen Zeitraum?

  • Ja, XBMC cached alle* Bilder, auch die lokalen (damit man per <thumbsize> auf schwächeren Maschinen alles downscalen kann. *=Per Skin referenzierte Bilder nicht).

    Für eine detaillierte Beschreibung siehe XBMC Wiki.
    In kurz: Einfach als black-box welche gut funktioniert betrachten :D

  • Euch beiden erstmal Danke für die Infos und Anregungen. Im aktuellen Fall ist es ja so, dass ich - abseits der möglichen synthetischen Erstellung der bild-url, letztlich nur die url zum Bild cache. Den Rest macht dann XBMC. Ist das Bild einmal angezeigt, landet es auch im XBMC-Thumbnail-Cache und beim nächsten Aufruf sind die bild-urls meinerseits gecacht (kein scraping) und XBMC greift mit seinem Caching bei der schnellen Anzeige der Thumbnails ein.

    Was ich letztlich für uU sinnvoll hielte, wäre das Ablegen von key-value Paaren, so wie es temporär mit xbmcaddon passiert, eben nur zeitlich unbegrenzt/einstellbar. Letztlich das, was ich nachgebaut habe.

  • Warum bettest du nicht einfach alle jetzigen URLs statisch ein?

  • Daran hab ich auch gedacht, aber die Antwort hast Du selbst gegeben. Es ist statisch und bedarf unregelmäßiger Updates. Im Moment muß ich letztlich nur noch nen Button in die Config einbauen, irgendwas Richtung Refresh/ReNew Picture-Cache. Somit muß ich nichts tun, wenn neue Serien dazukommen oder Bilder gewechselt werden. Es bleibt dynamisch, was mir im Addon-Konzept auch wichtig ist.

    Um meinen Cache kleiner zu machen, könnte ich die URL noch kürzen, so wie Du es schon mit dem serie-key gemacht hast.

    Code
    STATIC_THUMBS = {
        '90210': '61eeec72.jpg',
        'hack-Sign': '0f5c9b12.jpg',
        '10-Dinge-die-ich-an-dir-hasse': '023b8aeb.jpg',
        '10-8-Officers-on-Duty': '14aba3b1.jpg'
    }

    mfg chmee

    Einmal editiert, zuletzt von chmee (7. März 2013 um 14:34)

Jetzt mitmachen!

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