2016-09-26 9 views
0

Wie kann ich eine lokale Datei zu einem Kodi Addon hinzufügen? Im folgenden Beispiel funktioniert die Internetdatei (URL = 'http: // ...'). Aber die lokale Datei (URL = 'Datei: // ...') nicht.Wie kann ich eine lokale Datei zu einem Kodi Addon hinzufügen?

import xbmc 
import xbmcgui 
import xbmcplugin 
import xbmcaddon 
import xbmcvfs 
import sys 
addon_handle = int(sys.argv[1]) 
xbmcplugin.setContent(addon_handle, 'songs') 

#this works 
xbmcplugin.addDirectoryItem(handle=addon_handle, url='http://www.noiseaddicts.com/samples_1w72b820/2537.mp3', listitem=xbmcgui.ListItem('internet_file')) 

#this do not work 
xbmcplugin.addDirectoryItem(handle=addon_handle, url='file://media/usb0/music/bn/local_file.mp3', listitem=xbmcgui.ListItem('local_file')) 

xbmcplugin.endOfDirectory(addon_handle) 

Antwort

1

Nach längerem Suchen fand ich special:// Protokoll des Kodi: http://kodi.wiki/view/Special_protocol, die ich hier zitieren:

Die "Special Protocol" ist Lösung Plattform von Kodi Verzeichnisse abhängig. Gemeinsame Verzeichnisnamen erhalten einen speziellen: // [Name] Pfad, der innerhalb von Kodi weitergegeben und dann in den plattformspezifischen Pfad übersetzt wird, bevor das Betriebssystem ihn sieht. Dies hilft halten die meisten der Plattform Chaos im Code zentralisiert.

Mit dem special:// Protokoll folgenden Code wird es tun:

xbmcplugin.addDirectoryItem(handle=addon_handle, 
          url='special://home/bn/local_file.mp3', 
          listitem=xbmcgui.ListItem('local_file')) 
1

Dies sollte zum Beispiel '/foo/bar/spam.mp4' (* nichts) oder 'c:\\foo\\bar\\spam.mp4' (Win) ohne Präfixe, ein absoluter Pfad im Dateisystem sein. Ich denke, Netzwerk-Dateisysteme funktionieren auch und für sie benötigen Sie Präfixe wie smb:// oder nfs: // `, aber nicht für lokale Dateien.

+0

Ihre Antwort richtig ist. daher aufgewertet. Trotzdem löst es das Problem nicht in einem Addon, das in verschiedenen Dateisystemen funktionieren soll (Linux, Win etc.) – wolfrevo

+0

Ihr Kommentar macht keinen Sinn. Ein Pfad zu einer lokalen Datei befindet sich immer in einem Dateisystem, in dem sich diese Datei befindet. Sie müssen diesen Pfad irgendwie erhalten, indem Sie zum Beispiel ein Verzeichnis mit 'os.listdir()' scannen. Ein hardcoded Pfad wird nicht überall funktionieren, weil es einfach unmöglich ist. Wie können Sie garantieren, dass sich die Datei an jedem Computer befindet, auf dem Ihr Addon ausgeführt wird? Dies ist nicht zu erwähnen, dass die Kompatibilität mit verschiedenen Dateisystemen nicht in Ihrer Anfangsfrage war. –

+0

Für meine Zwecke macht es Sinn, weil ich möchte, dass das Addon in verschiedenen Dateisystemen funktioniert. Zum Glück haben die Entwickler von Kodi dieses Problem behoben, als sie das "special: //" -Protokoll eingeführt haben, das möglich macht, was unmöglich erscheint. Siehe meine Antwort. IMHO Kompatibilität mit verschiedenen Dateisystemen ist implizit durch Addon erforderlich. Tut mir leid, wenn ich es nicht explizit ausgesprochen habe. Wie auch immer: Danke für deine wertvolle Antwort und deine Bemühungen. – wolfrevo

Verwandte Themen