#!/usr/bin/python
# Order list of images by similiarity
import sys,os,progressbar,shutil
data_directory=os.path.abspath(sys.argv[1]).rstrip('/')
output_directory=data_directory+'_lcp'
print 'Input: %s, Output: %s' % (data_directory,output_directory)
if not os.path.isdir(output_directory): os.mkdir(output_directory)
default_widgets=[progressbar.Percentage(), ' ', progressbar.Bar(), progressbar.ETA()]
file_list=os.listdir(data_directory)
jpg_list=sorted(filter(lambda x : 'jpg' in x.lower(),file_list))
total=len(jpg_list)**2
print '%d files -> %d comparisons' % (len(jpg_list),total)
count,matrix=0,[]
pbar = progressbar.ProgressBar(widgets=['Comparing: '] + default_widgets).start()
for f1 in jpg_list:
 matrix_line=[]
 for f2 in jpg_list:
  if f1==f2: 
   matrix_line.append(255)
   continue
  cmd='compare_images %s/%s %s/%s' % (data_directory,f1,data_directory,f2)
  d=int(os.popen(cmd).read().strip()) 
  matrix_line.append(d)
  count+=1
  pbar.update(float(count)/float(total)*100)
 matrix.append(matrix_line)
pbar.finish()
done,n=[],0
while len(done)<len(jpg_list):
 done.append(n)
 fn1='%s/%s' % (data_directory,jpg_list[n])
 fn2='%s/frame%06d.jpg' % (output_directory,len(done))
 shutil.copy(fn1,fn2)
 for d in done: matrix[n][d]=255
 n=matrix[n].index(min(matrix[n]))
ordr=map(lambda x : jpg_list[x],done)
print ordr
print len(ordr)
print len(set(ordr))