new relative path search for image_list
This commit is contained in:
@@ -45,6 +45,8 @@ def setup_options():
|
||||
help="Minimum pixel width/height of stored image for --small search [%(default)s]")
|
||||
parser.add_argument("-r",action="store_true",dest="random",default=False,
|
||||
help="Create randomized files for landscape and portrait images [%(default)s]")
|
||||
parser.add_argument("-R",action="store_true",dest="relative",default=False,
|
||||
help="Try to find relative path of files, if --measuring from a different machine [%(default)s]")
|
||||
parser.add_argument("-s",type=str,dest="search",default=False,
|
||||
help="Search list based on path pattern")
|
||||
parser.add_argument("--measure",action="store_true",dest="measure",default=False,
|
||||
@@ -194,7 +196,7 @@ def add_recurse(options):
|
||||
sys.exit(1)
|
||||
# if file mentioned, and hash same, no need to change entry
|
||||
conn.commit()
|
||||
append_data(conn)
|
||||
append_data(options)
|
||||
return
|
||||
|
||||
def add_single(conn,filename,change=False,hash=None,minsize=0):
|
||||
@@ -213,7 +215,9 @@ def add_single(conn,filename,change=False,hash=None,minsize=0):
|
||||
print("adding: %(f)s (%(x)s)" % {'f':filename, 'x':humanize_size(fsize)})
|
||||
return
|
||||
|
||||
def append_data(conn):
|
||||
def append_data(options):
|
||||
conn=sqlite3.connect(options.sqlfile)
|
||||
conn.text_factory=str
|
||||
print("Append basic metadata...")
|
||||
db=conn.cursor()
|
||||
dbh=conn.cursor()
|
||||
@@ -228,6 +232,7 @@ def append_data(conn):
|
||||
filename=hash2file(conn.cursor(),row[0])
|
||||
if filename==None:
|
||||
continue
|
||||
filename=check_path(filename,options)
|
||||
dims=get_dims(filename)
|
||||
if int(dims[0])<int(dims[1]):
|
||||
portrait=1
|
||||
@@ -356,8 +361,8 @@ def call_viewer(opts, files):
|
||||
devnull = open('/dev/null', 'w')
|
||||
subprocess.call(opts.viewer.replace('%f', " ".join(files)), stderr=devnull, shell=True)
|
||||
|
||||
def append_colors(sqlfile):
|
||||
conn=sqlite3.connect(sqlfile)
|
||||
def append_colors(opt):
|
||||
conn=sqlite3.connect(opt.sqlfile)
|
||||
conn.text_factory=str
|
||||
db=conn.cursor()
|
||||
dbh=conn.cursor()
|
||||
@@ -368,15 +373,11 @@ def append_colors(sqlfile):
|
||||
filename=hash2file(conn.cursor(),row[0])
|
||||
if filename==None:
|
||||
continue
|
||||
filename=check_path(filename,opt)
|
||||
colors=get_colors(filename)
|
||||
dbh.execute("UPDATE data SET R=?, G=?, B=?, BR=?, BG=?, BB=? \
|
||||
WHERE hash=?",(colors[0][0],colors[0][1],colors[0][2],
|
||||
colors[1][0],colors[1][1],colors[1][2],row[0]))
|
||||
filebase=" "+os.path.basename(filename)
|
||||
dirname=os.path.dirname(filename)
|
||||
if dirname!=dirname_old:
|
||||
dirname_old=dirname
|
||||
filebase=filename
|
||||
print("%(i)d: %(f)s (%(r)s %(g)s %(b)s)" % {'i':count-i, 'f':filename, 'r':colors[0][0],
|
||||
'g':colors[0][1], 'b':colors[0][2]})
|
||||
if (i%50==0):
|
||||
@@ -499,8 +500,8 @@ def get_ratio_diff(d1,d2):
|
||||
|
||||
return abs( float(d1[0])/float(d1[1]) - float(d2[0])/float(d2[1]) )
|
||||
|
||||
def append_fingerprints(sqlfile):
|
||||
conn=sqlite3.connect(sqlfile)
|
||||
def append_fingerprints(opt):
|
||||
conn=sqlite3.connect(opt.sqlfile)
|
||||
conn.text_factory=str
|
||||
db=conn.cursor()
|
||||
dbh=conn.cursor()
|
||||
@@ -511,15 +512,11 @@ def append_fingerprints(sqlfile):
|
||||
filename=hash2file(conn.cursor(),row[0])
|
||||
if filename==None:
|
||||
continue
|
||||
filename=check_path(filename,opt)
|
||||
fp=get_fingerprint(filename)
|
||||
dbh.execute("UPDATE data SET fingerprint=? \
|
||||
WHERE hash=?",(fp,row[0]))
|
||||
filebase=" "+os.path.basename(filename)
|
||||
dirname=os.path.dirname(filename)
|
||||
if dirname!=dirname_old:
|
||||
dirname_old=dirname
|
||||
filebase=filename
|
||||
print("%(nr)i %(f)s" % {'f':filebase, 'nr':count-i})
|
||||
print("%(nr)i %(f)s" % {'f':filename, 'nr':count-i})
|
||||
if (i%50==0):
|
||||
conn.commit();
|
||||
conn.commit()
|
||||
@@ -663,8 +660,8 @@ def find_fingerprint_nearest(opts):
|
||||
call_viewer(opts, (cmp,this[0]))
|
||||
|
||||
|
||||
def append_sharpness(sqlfile):
|
||||
conn=sqlite3.connect(sqlfile)
|
||||
def append_sharpness(opt):
|
||||
conn=sqlite3.connect(opt.sqlfile)
|
||||
conn.text_factory=str
|
||||
db=conn.cursor()
|
||||
dbh=conn.cursor()
|
||||
@@ -675,15 +672,11 @@ def append_sharpness(sqlfile):
|
||||
filename=hash2file(conn.cursor(),row[0])
|
||||
if filename==None:
|
||||
continue
|
||||
filename=check_path(filename,opt)
|
||||
sp=get_sharpness(filename)
|
||||
dbh.execute("UPDATE data SET sharpness=? \
|
||||
WHERE hash=?",(sp,row[0]))
|
||||
filebase=" "+os.path.basename(filename)
|
||||
dirname=os.path.dirname(filename)
|
||||
if dirname!=dirname_old:
|
||||
dirname_old=dirname
|
||||
filebase=filename
|
||||
print("%(nr)i %(f)s %(s)f" % {'f':filebase, 'nr':count-i,'s':sp})
|
||||
print("%(nr)i %(f)s %(s)f" % {'f':filename, 'nr':count-i,'s':sp})
|
||||
if (i%25==0):
|
||||
conn.commit();
|
||||
conn.commit()
|
||||
@@ -965,6 +958,25 @@ def import_metadata(options):
|
||||
|
||||
print("Imported %d metadata, %d tags." % (after-before,tagsafter-tagsbefore))
|
||||
|
||||
def check_path(path,opt):
|
||||
""" return relative path name to DB if real path doesnt exist """
|
||||
if os.path.isfile(path):
|
||||
return path
|
||||
if not opt.relative:
|
||||
if not os.path.isfile(path):
|
||||
raise IOError("File %s not found. try -R for relative search" % path)
|
||||
|
||||
sqlpath=os.path.dirname(os.path.realpath(opt.sqlfile))
|
||||
rel=os.path.join(sqlpath, path)
|
||||
searchpath=path.split(os.sep)
|
||||
while not os.path.isfile(rel):
|
||||
searchpath=searchpath[1:]
|
||||
if len(searchpath)==0:
|
||||
raise IOError("File %s not found" % path)
|
||||
rel=os.path.join(sqlpath, os.sep.join(searchpath))
|
||||
#~ print(rel)
|
||||
return rel
|
||||
|
||||
|
||||
def main():
|
||||
options=setup_options();
|
||||
@@ -982,12 +994,13 @@ def main():
|
||||
if options.search:
|
||||
print_structure(searchdb(options.sqlfile,options.search))
|
||||
if options.measure:
|
||||
append_data(options)
|
||||
print('Measure colors...')
|
||||
append_colors(options.sqlfile)
|
||||
append_colors(options)
|
||||
print('Measure fingerprints...')
|
||||
append_fingerprints(options.sqlfile)
|
||||
append_fingerprints(options)
|
||||
print('Measure sharpness...')
|
||||
append_sharpness(options.sqlfile)
|
||||
append_sharpness(options)
|
||||
if options.random:
|
||||
print('Random lists...')
|
||||
random_lists(options.sqlfile)
|
||||
|
||||
Reference in New Issue
Block a user