mirror of
https://github.com/gryf/pygtktalog.git
synced 2025-12-17 11:30:19 +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)
|
image_path = pygtktalog.misc.calculate_image_path(image_path.value)
|
||||||
|
|
||||||
self.img_path = image_path
|
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