mirror of
https://github.com/gryf/pygtktalog.git
synced 2025-12-17 19:40:21 +01:00
Removing old class
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user