diff --git a/pygtktalog/scan.py b/pygtktalog/scan.py index 6f01f83..4cecb5d 100644 --- a/pygtktalog/scan.py +++ b/pygtktalog/scan.py @@ -508,272 +508,3 @@ class Scan(object): image_path = pygtktalog.misc.calculate_image_path(image_path.value) self.img_path = image_path - - -class asdScan(object): - """ - Retrieve and identify all files recursively on given path - """ - def __init__(self, path, tree_model): - self.path = path - self.abort = False - self.label = None - self.DIR = None - self.source = None - - def scan(self): - """ - scan content of the given path - """ - self.busy = True - - # count files in directory tree - LOG.debug("Calculating number of files in directory tree...") - - step = 0 - try: - for root, dirs, files in os.walk(self.path): - step += len(files) - except Exception, ex: - LOG.warning("exception on file %s: %s: %s" \ - % (self.path, ex.__class__.__name__, str(ex))) - pass - - step = 1 / float(step or 1) - - self.count = 0 - - def _recurse(parent_id, name, path, date, size, filetype, - discs_tree_iter=None): - """recursive scans given path""" - if self.abort: - return -1 - - _size = size - - if parent_id == 1: - sql = """INSERT INTO - files(parent_id, filename, filepath, date, - size, type, source) - VALUES(?,?,?,?,?,?,?)""" - print(sql, (parent_id, name, path, date, size, - filetype, self.source)) - else: - sql = """INSERT INTO - files(parent_id, filename, filepath, date, size, type) - VALUES(?,?,?,?,?,?)""" - print(sql, (parent_id, name, path, - date, size, filetype)) - - sql = """SELECT seq FROM sqlite_sequence WHERE name='files'""" - print(sql) - currentid = None #db_cursor.fetchone()[0] - - try: - root, dirs, files = os.walk(path).next() - except: - LOG.warning("Cannot access %s", path) - return 0 - - ############# - # directories - for i in dirs: - j = i #j = self.__decode_filename(i) - current_dir = os.path.join(root, i) - - try: - st = os.lstat(current_dir) - st_mtime = st.st_mtime - except OSError: - st_mtime = 0 - - # do NOT follow symbolic links - if os.path.islink(current_dir): - l = self.__decode_filename(os.readlink(current_dir)) - - sql = """INSERT INTO - files(parent_id, filename, filepath, date, size, type) - VALUES(?,?,?,?,?,?)""" - print(sql, (currentid, j + " -> " + l, - current_dir, st_mtime, 0, - self.LIN)) - dirsize = 0 - else: - myit = None - dirsize = _recurse(currentid, j, current_dir, - st_mtime, 0, self.DIR, myit) - - if dirsize == -1: - break - else: - _size = _size + dirsize - - ######## - # files: - for i in files: - if self.abort: - break - - self.count = self.count + 1 - current_file = os.path.join(root, i) - - try: - st = os.lstat(current_file) - st_mtime = st.st_mtime - st_size = st.st_size - except OSError: - st_mtime = 0 - st_size = 0 - - _size = _size + st_size - j = i #self.__decode_filename(i) - - # do NOT follow symbolic links - if os.path.islink(current_file): - l = self.__decode_filename(os.readlink(current_file)) - sql = """INSERT INTO - files(parent_id, filename, filepath, date, size, type) - VALUES(?,?,?,?,?,?)""" - print(sql, (currentid, j + " -> " + l, - current_file, st_mtime, 0, - self.LIN)) - else: - sql = """INSERT INTO - files(parent_id, filename, filepath, date, size, type) - VALUES(?,?,?,?,?,?)""" - print(sql, (currentid, j, current_file, - st_mtime, st_size, self.FIL)) - - if self.count % 32 == 0: - update = True - else: - update = False - - ########################### - # fetch details about files - if self.config.confd['retrive']: - update = True - exif = None - - sql = """SELECT seq FROM sqlite_sequence - WHERE name='files'""" - print(sql) - fileid = 1 # dummy! - - ext = i.split('.')[-1].lower() - - # Video - if ext in self.MOV: - v = Video(current_file) - cfn = v.capture() - img = Img(cfn, self.image_path) - th = img.save() - if th: - sql = """INSERT INTO - thumbnails(file_id, filename) - VALUES(?, ?)""" - print(sql, (fileid, th + "_t")) - sql = """INSERT INTO images(file_id, filename) - VALUES(?, ?)""" - print(sql, (fileid, th)) - os.unlink(cfn) - - # Images - thumbnails and exif data - if self.config.confd['thumbs'] and ext in self.IMG: - thumb = Thumbnail(current_file, self.image_path) - th, exif = thumb.save() - if th: - sql = """INSERT INTO - thumbnails(file_id, filename) - VALUES(?, ?)""" - print(sql, (fileid, th)) - - # exif - store data in exif table - jpg = ['jpg', 'jpeg'] - if self.config.confd['exif'] and ext in jpg: - p = None - if self.config.confd['thumbs'] and exif: - p = ParseExif(exif_dict=exif) - else: - p = ParseExif(exif_file=current_file) - if not p.exif_dict: - p = None - if p: - p = p.parse() - p = list(p) - p.insert(0, fileid) - sql = """INSERT INTO exif (file_id, - camera, - date, - aperture, - exposure_program, - exposure_bias, - iso, - focal_length, - subject_distance, - metering_mode, - flash, - light_source, - resolution, - orientation) - values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)""" - print(sql, (tuple(p))) - - # gthumb - save comments from gThumb program - if self.config.confd['gthumb']: - gt = GthumbCommentParser(root, i) - cmnts = gt.parse() - if cmnts: - sql = """insert into gthumb(file_id, - note, - place, - date) - values(?,?,?,?)""" - print(sql, (fileid, - cmnts['note'], - cmnts['place'], - cmnts['date'])) - if 'keywords' in cmnts: - # TODO: add gthumb keywords to tags - pass - - # Extensions - user defined actions - if ext in self.config.confd['extensions'].keys(): - cmd = self.config.confd['extensions'][ext] - arg = current_file.replace('"', '\\"') - output = os.popen(cmd % arg).readlines() - desc = '' - for line in output: - desc += line - - sql = """UPDATE files SET description=? - WHERE id=?""" - print(sql, (desc, fileid)) - - ### end of scan - if update: - self.statusmsg = "Scannig: %s" % current_file - self.progress = step * self.count - - sql = """UPDATE files SET size=? WHERE id=?""" - print(sql, (_size, currentid)) - if self.abort: - return -1 - else: - return _size - - if _recurse(1, self.label, self.path, 0, 0, self.DIR) == -1: - LOG.debug("interrupted self.abort = True") - else: - LOG.debug("recursive goes without interrupt") - if self.currentid: - LOG.debug("removing old branch") - self.statusmsg = "Removing old branch..." - self.currentid = None - - self.busy = False - - # refresh discs tree - self.statusmsg = "Idle" - self.progress = 0 - self.abort = False