diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2007-10-07 10:24:05 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2007-10-07 10:24:05 +0000 |
| commit | fdb15fdd11d88b73900badf092cf2db0e8d3aabf (patch) | |
| tree | de15e3cad382c7e77575fbcb9c41e47689dba718 /lib/python/Plugins/Extensions | |
| parent | 22284d888f6eac661e4485ede53ca193f5ac248d (diff) | |
| download | enigma2-fdb15fdd11d88b73900badf092cf2db0e8d3aabf.tar.gz enigma2-fdb15fdd11d88b73900badf092cf2db0e8d3aabf.zip | |
move media scanner components into core, patch by Moritz Venn (002_enigma2_move_mediascanner_components_into_core.patch)
Diffstat (limited to 'lib/python/Plugins/Extensions')
4 files changed, 13 insertions, 160 deletions
diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py b/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py index d9a3d490..4893dc47 100644 --- a/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py +++ b/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py @@ -20,7 +20,7 @@ class IpkgInstaller(Screen): def __init__(self, session, list): self.skin = IpkgInstaller.skin Screen.__init__(self, session) - + self.list = SelectionList() self["list"] = self.list for listindex in range(len(list)): @@ -47,14 +47,13 @@ class IpkgInstaller(Screen): self.session.open(Ipkg, cmdList = cmdList) def filescan_open(list, session, **kwargs): - session.open(IpkgInstaller, list) # list + filelist = [x.path for x in list] + session.open(IpkgInstaller, filelist) # list def filescan(**kwargs): - # we expect not to be called if the MediaScanner plugin is not available, - # thus we don't catch an ImportError exception here - from Plugins.Extensions.MediaScanner.plugin import Scanner, ScanPath + from Components.Scanner import Scanner, ScanPath return \ - Scanner(extensions = ["ipk"], + Scanner(mimetypes = ["application/x-debian-package"], paths_to_scan = [ ScanPath(path = "ipk", with_subdirs = True), diff --git a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py index 06b6bfab..0de820c8 100644 --- a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py @@ -717,7 +717,7 @@ def filescan_open(list, session, **kwargs): mp.switchToPlayList() for file in list: - ref = eServiceReference(4097, 0, file) + ref = eServiceReference(4097, 0, file.path) mp.playlist.addFile(ref) # TODO: rather play first than last file? @@ -725,9 +725,7 @@ def filescan_open(list, session, **kwargs): mp.playlist.updateList() def filescan(**kwargs): - # we expect not to be called if the MediaScanner plugin is not available, - # thus we don't catch an ImportError exception here - from Plugins.Extensions.MediaScanner.plugin import Scanner, ScanPath + from Components.Scanner import Scanner, ScanPath return [ Scanner(mimetypes = ["video/mpeg"], paths_to_scan = diff --git a/lib/python/Plugins/Extensions/MediaScanner/plugin.py b/lib/python/Plugins/Extensions/MediaScanner/plugin.py index 3c4b9779..ed114008 100644 --- a/lib/python/Plugins/Extensions/MediaScanner/plugin.py +++ b/lib/python/Plugins/Extensions/MediaScanner/plugin.py @@ -1,148 +1,5 @@ from Plugins.Plugin import PluginDescriptor -from os import path as os_path, walk as os_walk -from string import lower - -def getExtension(file): - p = file.rfind('.') - if p == -1: - ext = "" - else: - ext = file[p+1:] - - return lower(ext) - -class Scanner: - def __init__(self, name, extensions = [], paths_to_scan = [], description = "", openfnc = None): - self.extensions = extensions - self.name = name - self.paths_to_scan = paths_to_scan - self.description = description - self.openfnc = openfnc - - def checkFile(self, filename): - return True - - def handleFile(self, res, filename, ext): - if (self.extensions is None or ext in self.extensions) and self.checkFile(filename): - res.setdefault(self, []).append(filename) - - def __repr__(self): - return "<Scanner " + self.name + ">" - - def open(self, list, *args, **kwargs): - if self.openfnc is not None: - self.openfnc(list, *args, **kwargs) - -class ScanPath: - def __init__(self, path, with_subdirs = False): - self.path = path - self.with_subdirs = with_subdirs - - def __repr__(self): - return self.path + "(" + str(self.with_subdirs) + ")" - - # we will use this in a set(), so we need to implement __hash__ and __cmp__ - def __hash__(self): - return self.path.__hash__() ^ self.with_subdirs.__hash__() - - def __cmp__(self, other): - if self.path < other.path: - return -1 - elif self.path > other.path: - return +1 - else: - return self.with_subdirs.__cmp__(other.with_subdirs) - -#scanner = [ -# Scanner(extensions = ["jpg", "jpe", "jpeg"], -# paths_to_scan = -# [ -# ScanPath(path = "DCIM", with_subdirs = True), -# ScanPath(path = "", with_subdirs = False), -# ], -# name = "Pictures", -# description = "View Photos..." -# ), -# -# Scanner(extensions = ["mpg", "vob", "ts"], -# paths_to_scan = -# [ -# ScanPath(path = ""), -# ScanPath(path = "movie", with_subdirs = True), -# ], -# name = "Movie", -# description = "View Movies..." -# ), -# -# Scanner(extensions = ["mp3", "ogg"], -# name = "Media", -# paths_to_scan = -# [ -# ScanPath(path = "", with_subdirs = False), -# ], -# description = "Play music..." -# ), -# -# Scanner(extensions = ["ipk"], -# name = "Packages", -# paths_to_scan = -# [ -# ScanPath(path = ""), -# ], -# description = "Install software..." -# ), -# ] - -def scanDevice(mountpoint): - from Components.PluginComponent import plugins - - scanner = [ ] - - for p in plugins.getPlugins(PluginDescriptor.WHERE_FILESCAN): - l = p() - if not isinstance(l, list): - l = [l] - scanner += l - - print "scanner:", scanner - - res = { } - - # merge all to-be-scanned paths, with priority to - # with_subdirs. - - paths_to_scan = set() - - # first merge them all... - for s in scanner: - paths_to_scan.update(set(s.paths_to_scan)) - - # ...then remove with_subdir=False when same path exists - # with with_subdirs=True - for p in set(paths_to_scan): - if p.with_subdirs == True and ScanPath(path=p.path) in paths_to_scan: - paths_to_scan.remove(ScanPath(path=p.path)) - - # convert to list - paths_to_scan = list(paths_to_scan) - - # now scan the paths - for p in paths_to_scan: - path = os_path.join(mountpoint, p.path) - - for root, dirs, files in os_walk(path): - for f in files: - ext = getExtension(f) - pathname = os_path.join(root, f) - for s in scanner: - s.handleFile(res, pathname, ext) - - # if we really don't want to scan subdirs, stop here. - if not p.with_subdirs: - del dirs[:] - - # res is a dict with scanner -> [files] - return res +from Components.Scanner import scanDevice def execute(option): print "execute", option @@ -152,7 +9,6 @@ def execute(option): (_, scanner, files, session) = option scanner.open(files, session) - def mountpoint_choosen(option): if option is None: return diff --git a/lib/python/Plugins/Extensions/PicturePlayer/plugin.py b/lib/python/Plugins/Extensions/PicturePlayer/plugin.py index 4462df13..b6699bab 100644 --- a/lib/python/Plugins/Extensions/PicturePlayer/plugin.py +++ b/lib/python/Plugins/Extensions/PicturePlayer/plugin.py @@ -531,14 +531,14 @@ def main(session, **kwargs): session.open(picmain) def filescan_open(list, session, **kwargs): - session.open(picmain) # list + # Recreate List as expected by PicView + filelist = [((file.path, False), None) for file in list] + session.open(PicView, filelist, "", "") def filescan(**kwargs): - # we expect not to be called if the MediaScanner plugin is not available, - # thus we don't catch an ImportError exception here - from Plugins.Extensions.MediaScanner.plugin import Scanner, ScanPath + from Components.Scanner import Scanner, ScanPath return \ - Scanner(extensions = ["jpg", "jpe", "jpeg"], + Scanner(mimetypes = ["image/jpeg", "image/png", "image/gif", "image/bmp"], paths_to_scan = [ ScanPath(path = "DCIM", with_subdirs = True), |
