Filme in Datenbank - aber USB Laufwerk offline - Meldung wo die Datei zu finden ist?

  • Hallo,

    ich bin begeistert vom xbmc, ein feines Stueck Software ist das!
    Eine Funktionalitaet vermisse ich jedoch. Ich habe 4 externe USB Festplatten mit Filmen. Alle (NTFS) Partitionen auf den Platten haben eindeutige Namen (HD01, HD02, HD03 etc).
    Ich habe zur "Videos" Source also nun "/media/HD01", "/media/HD02" etc hinzugefuegt.
    Dann habe ich jede Platte angesteckt und die Video Library nach neuem Content suchen lassen.
    Das hat soweit auch geklappt. Dann entferne ich die Platte mit dem Filemanager sicher und stecke eine neue dran.
    Wenn ich dann auf der neuen Platte nach content suchen lasse, so werden manchmal die Informationen (1080p, AR, Audio) zu den Filmen der vorigen Platte(n) "vergessen".
    Es scheint, als ob die Library diese Informationen nicht in der DB speichert, sondern "live" von dem Medium abfragt sobald man den Eintrag auswaehlt?

    Was allerdings gespeichert wird, ist der Pfad zu der Datei. Und was ich mir jetzt wuenschen wuerde waere nicht nur die Meldung "File not available" sondern auch der Pfad zur Datei in der Meldung.
    So wuesste ich schnell welche Platte ich anstoepseln muss.
    Es ist mir unklar, warum so ein Use-Case ueberhaupt nie bedacht wurde? Zwar werden die Platten immer groesser, aber vielleicht will man die auch nicht permanent am Strom haengen haben?

    Im englischen Forum wurde mal ueber einen Indikator fuer offline Medien nachgedacht, aber das wurde nie zuende gedacht oder umstaendlich mittels haendisch zu erstellender nfo Dateien geloest.

  • XBMC geht prinzipiell davon aus, das jeder Zeit alle Quellen zur Verfügung stehen.

    Daher gibt es für den UseCase mit vielen temporär zur Verfügung stehenden Festplatten keine wirklich gute Lösung. Hatten wir hier schon einige Beiträge zu vielleicht schaust du dir die mal genauer an.

    Allerdings können einige Skins den von dir gewünschten Pfad in der Filminfo anzeigen. Welche das alles können kann ich dir aber nicht sagen musst du einfach mal rum probieren. Der von mir verwendete Skin Cirrius EV2 kann es zumindest.

    Amazon Fire TV 4k | KODI 17.X
    HTPC: ASUS F2A85-M LE | A6-5400K | 4GB DDR3-1866 | 128GB SSD | Windows 10 64 bit | KODI 17.X
    AVR: Onkyo TX-NR509 5.1 + Teufel Consono 35
    TV: Samsung UE55ES6300 55"
    FB: Harmony 785

    Wo finde ich das xbmc.log File?

    Wer einen Rechtschreibfehler findet darf ihn behalten !

  • Danke fuer Deine Antwort! Ja ich habe schongemerkt, dass xmbc generell davon ausgeht, dass alle Medien immer online sind.
    Und die Haupt-Entwickler sind auch nicht gewillt einen anderen Usecase ueberhaupt mal in Betracht zu ziehen.
    Aber da das ganze OpenSource ist, hacke ich mir das vielleicht selber mal rein und sende einen pull request.
    Der Transparency Skin zeigt die info ueber den Pfad in der Movie info an. Vielleicht modde ich den dahingehend, dass er via regex den relevanten Teil des Pfad (/media/(\d+)) einfach auch in der Uebersich mit ausgibt.

  • Nochmal ein kleiner Nachtrag...beim den Worten HDD und Transparancy hatte es hinten im Hirn gezuckt...also hab ich mal was rausgesucht...hier ist die beste Lösung die du machen kannst:
    http://forum.xbmc.org/showthread.php?t=96183


    WOW! Ja, das ist genau was ich suchte! Ich habe dort auch gleich eine Frage zur Optimierung gestellt. Schaue aber gleich mal selber in den skin docs ob das mit einer regex gehen wuerde.

    Mir war schon bewusst, dass die Info in den Dialog einzubauen nicht schwer ist. Nur wo befindet sich dieser? Ist das ein script oder C++?

  • Nur wo befindet sich dieser? Ist das ein script oder C++?


    Das ist eine xml-Datei im 720p Ordner des Skins...
    Wenn du genau wissen willst, welche xml, öffne mal deine addon.xml des T! und setze "[definition='1','3']Debug[/definition]=" von false auf true.
    Starte dein XBMC neu und du siehst immer oben links,in welcher xml auf welchem control du dich befindest...
    Dann navigiere zu einem Filme der nicht vorhand ist und löse den Dialog aus...dann siehst du welcher es ist...

    mm

  • gerne. Ich versuche gerade herauszufinden, ob man das ganze etwas optimieren kann.
    Unterstuetzt denn <texture> denn sowas wie SubString($INFO[ListItem.Path], 10, 2)?
    Und visible sowas wie ne regex?

    Schoen waere, wenn man am Ende ein Addon haette, welches die storage flags in das ~/media/flags/storage speichert und das aktuelle skin Includes_MediaVideoFlags.xml via Python anpasst und das neue image control einfuegt.
    Gibts eigentlich bei XBMC sowas wie nen Event System, dass man sich ueber nen Skin-Change informieren lassen koennte? Dann wuerde das script immer laufen, wenn der Skin geaendert wird und die Aenderung, wenn das "storage icons" addon installiert ist, automatisch ins skin file einfuegen.

  • Unterstuetzt denn <texture> denn sowas wie SubString($INFO[ListItem.Path], 10, 2)?


    Ja das geht...

    Zitat

    Und visible sowas wie ne regex?


    Hab ich selber noch nicht versucht, glaube aber nicht...

    Zitat

    welches die storage flags in das ~/media/flags/storage speichert


    wie soll das denn gehen? du kannst doch nicht einfach sagen <texture>String<texture> und der macht ne grafik draus...
    du musst ne grafik hinterlegen, die so heisst wie der string, der eingesetzt wird...also müsstest du für alle fälle, die du abdecken willst, schon vorher ein flag erstellen...

    Zitat

    Gibts eigentlich bei XBMC sowas wie nen Event System


    Es gibt ein rudimentäres Eventsystem für Dinge wie <onload>, <oncklick> etc... da musst du im wiki mal genauer lesen was du alles machen kannst

    Zitat

    Dann wuerde das script immer laufen, wenn der Skin geaendert


    Wie meinsten das jetzt?

  • Ich meine damit folgendes: Ich moechte die ganze Storage-Movie flags Geschicht in ein AddOn packen. Das AddOn enthaelt auch die im aus dem englischen Forum stammenden 50 Grafiken fuer HD01-HD50. Das AddOn sollte nun, wenn ein Skin geaendert wird, aufgerufen werden und im Skin XML die entsprechenden Aenderungen machen (erstmal nur im Transparency skin).

    Code
    <control type="image">
    	<include>VideoMediaFlagsVideoCodec</include>
    	<texture>flags/movies/storage/$INFO[substring(10,2),,.png]</texture>
    	<visible>substring(ListItem.Path,/media/HD)</visible>
    </control>


    Damit das funktioniert, muessen die storage pngs aber ins skin verzeichnis kopiert werden. Besser waere es natuerlich, wenn die fuer alle skins an einem zentralen ort (am besten das AddOn Verzeichnis selber) liegen koennte.
    Wo gibts denn ne Doc ueber dieses $INFO Dingens? Ich finde dazu nix im Wiki und wie die Params in den eckigen Klammern zu benutzen sind. Ist das eine string concat operation? Und kann man da ueberhaupt substring benutzen? Gibt substring nicht nen bool zurueck?

  • Wo gibts denn ne Doc ueber dieses $INFO Dingens?


    http://wiki.xbmc.org/?title=InfoLabels

    Zitat

    Ich finde dazu nix im Wiki und wie die Params in den eckigen Klammern zu benutzen sind. Ist das eine string concat operation? Und kann man da ueberhaupt substring benutzen? Gibt substring nicht nen bool zurueck?


    http://wiki.xbmc.org/?title=Skinning_XBMC
    http://wiki.xbmc.org/index.php?title=XBMC%27s_Inner_Workings

  • Auf diesen Seiten war ich ueberall schon. Ich finde jedoch nix ueber diese Syntax:

    Code
    <texture fallback="mediaflag-resolution.png">flags/movies/resolution/$INFO[ListItem.VideoResolution,,.png]</texture>


    Da wird auf die $INFO variable zugegriffen. Und zwar auf das value "ListItem.VideoResolution". Was bedeutet der zweite, leere Eintrag danach?

  • Da wird auf die $INFO variable zugegriffen. Und zwar auf das value "ListItem.VideoResolution". Was bedeutet der zweite, leere Eintrag danach?


    Ich bin mir mit der syntax auch nicht immer sicher...aber im skin-dev thread im original forum kriegst du da bestimmt ne antwort...hitcher, jezz, igotdvds, ronie und noch ein paar andere sind da immer recht aktiv

  • die dazugehörigen flags -> quasi es gibt einen Ordner mit vielen flags drin und angezeigt wird dann das welches den entsprechenden Dateinamen besitzt. Beispiel mp4.png


  • Ich bin mir mit der syntax auch nicht immer sicher...aber im skin-dev thread im original forum kriegst du da bestimmt ne antwort...hitcher, jezz, igotdvds, ronie und noch ein paar andere sind da immer recht aktiv

    Habe es schon im C++ source gefunden:

    Code
    // Step 3: Find all $INFO[info,prefix,postfix] blocks

    Sollte allerdings auch mal im wiki erklaert werden.
    So bin schon weiter mit meinem AddOn. Habe es schon eingebunden. Statisch funktioniert das schon. Jetzt muss es nur noch so bauen, dass ich mit python alle skins durchgehen, von denen ich weiss an welcher Stelle ich meine Includes einfuegen muss.

    Im Default confluence skin wuerde die Aenderung in IncludesCodecFlagging sein:

    Code
    <include file="IncludesMediaStorageFlags.xml"/>
      
    <include name="VideoCodecFlaggingConditions">
            
       <include>MediaStorageFlags</include>
       <control type="image">
          <description>Video rez Image</description>
    	...

    In meinem script werde ich also via xpath (ich hoffe dafuer gibts support in python) die Ersetzung in den script files machen.
    Dazu muss ich wissen, in welchen files und an welcher Stelle die beiden Aenderungen reinmuessen.
    Das wuerde ich mir also so vorstellen (pseudocode):

    Code
    {
      skin: "skin.confluence",
      changes: [ 
        { 
          file: "IncludesCodecFlagging",
          at: "include[@name='VideoCodecFlaggingConditions']"
        }
      ]
    }

    Das wuerde im file "special://home/addons/skin.confluence/IncludesCodecFlagging.xml" die Zeile "<include file='IncludesMediaStorageFlags.xml'/>" direkt unter "<includes>" einfuegen. Und dann noch die Zeile "<include>MediaStorageFlags</include>" direct als child von "<include name="VideoCodecFlaggingConditions">".

    Momentan ist es auch noch notwendig, mein "IncludesMediaStorageFlags.xml" welches so aussieht:


    in den jeweilen scripts default ordner zu kopieren, weil das file attribute nur aus dem skin folder includes nachladen kann. Ich habe dazu schon einen feature request aufgemacht, dass "include file='special://...'" auch moeglich sein wird.

    Wenn der Skin eigene images fuer storage tagging bereitstellt, werden diese benutzt. Ansonsten die standard aus dem addon verwendet.

    Ich versuche jetzt gerade die visible conditions via setting einstellbar zu machen, sodass der Benutzer da sein eigenes Prefix waehlen kann.
    Dafuer waere es notwendig, dass mein script beim aendern der settings erneut aufgerufen wird. Ist sowas moeglich?

    In Zukunft koennte ich mir vorstellen, dass die Skin Developer die beiden notwendigen include Zeilen schon per default in die skins einbauen, und via "condition=system.hasaddon(script.video.media-storage-flags)" togglen.
    Das wuerde mir das ganze scripting erleichtern, weil ich dann nicht mehr die skin files aendern muesste.
    Ansonsten koennte ich mir auch vorstellen, dass auf meinem github repo die oben im pseudocode geschriebenen settings fuer jeden skin bereitgelegt werden koennten. Und mein script laedt dann die fuer das aktuelle skin notwendige "patch Anleitung" herunter.

    Aber erstmal funktioniert das primaer ;) Danke fuer Eure Hilfe schonmal!

    Externer Inhalt img59.imageshack.us
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.


    Externer Inhalt img820.imageshack.us
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

Jetzt mitmachen!

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