1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2024-11-19 21:39:02 +00:00

[#25 state:fixed] Adjusted to the change in hsfs:[4] (Bundle change). It allows to leverage the File caching system, thus fixing #25.

--HG--
extra : convert_revision : svn%3Ac306627e-7827-47d3-bdf0-9a457c9553a1/trunk%4029
This commit is contained in:
hsoft 2009-06-09 17:39:42 +00:00
parent 6a4a93f767
commit ba75f3243d
2 changed files with 13 additions and 4 deletions

View File

@ -8,6 +8,7 @@
from hsfs.phys import Directory as DirectoryBase from hsfs.phys import Directory as DirectoryBase
from hsfs.phys.bundle import Bundle from hsfs.phys.bundle import Bundle
from hsutil.path import Path from hsutil.path import Path
from hsutil.misc import extract
from hsutil.str import get_file_ext from hsutil.str import get_file_ext
@ -15,13 +16,19 @@ from . import app_cocoa, data
from .directories import Directories as DirectoriesBase, STATE_EXCLUDED from .directories import Directories as DirectoriesBase, STATE_EXCLUDED
class DGDirectory(DirectoryBase): class DGDirectory(DirectoryBase):
def _create_sub_dir(self, name, with_parent = True): def _create_sub_file(self, name, with_parent=True):
ext = get_file_ext(name) ext = get_file_ext(name)
if ext == 'app': if ext == 'app':
parent = self if with_parent else None parent = self if with_parent else None
return Bundle(parent, name) return Bundle(parent, name)
else: else:
return super(DGDirectory, self)._create_sub_dir(name, with_parent) return super(DGDirectory, self)._create_sub_file(name, with_parent)
def _fetch_subitems(self):
subdirs, subfiles = super(DGDirectory, self)._fetch_subitems()
apps, normal_dirs = extract(lambda name: get_file_ext(name) == 'app', subdirs)
subfiles += apps
return normal_dirs, subfiles
class Directories(DirectoriesBase): class Directories(DirectoriesBase):

View File

@ -54,7 +54,11 @@ class Scanner(object):
SCAN_TYPE_CONTENT_AUDIO: lambda f: [str(f.audiosize)] SCAN_TYPE_CONTENT_AUDIO: lambda f: [str(f.audiosize)]
}[self.scan_type] }[self.scan_type]
for f in j.iter_with_progress(files, 'Read metadata of %d/%d files'): for f in j.iter_with_progress(files, 'Read metadata of %d/%d files'):
if self.size_threshold:
f.size # pre-read, makes a smoother progress if read here (especially for bundles)
f.words = func(f) f.words = func(f)
if self.size_threshold:
files = [f for f in files if f.size >= self.size_threshold]
return mf.getmatches(files, j) return mf.getmatches(files, j)
@staticmethod @staticmethod
@ -75,8 +79,6 @@ class Scanner(object):
j = j.start_subjob([8, 2]) j = j.start_subjob([8, 2])
for f in [f for f in files if not hasattr(f, 'is_ref')]: for f in [f for f in files if not hasattr(f, 'is_ref')]:
f.is_ref = False f.is_ref = False
if self.size_threshold:
files = [f for f in files if f.size >= self.size_threshold]
logging.info('Getting matches') logging.info('Getting matches')
if self.match_factory is None: if self.match_factory is None:
matches = self._getmatches(files, j) matches = self._getmatches(files, j)