import sys,os,string,time,shutil
data_dir=os.path.abspath(sys.argv[1]).rstrip('/')+'/'
movie_s=60
framerate=25
movie_frames=movie_s*framerate
out_dir=data_dir.split('/')[-2]+'_short'
print 'Output directory:',out_dir
day=7,18
if not os.path.isdir(out_dir): os.mkdir(out_dir)
def scanDir(d):
rl=[]
for fn in os.listdir(d):
if os.path.isdir(d+fn): rl+=scanDir(d+fn+'/')
else: rl.append(d+fn)
return rl
def is_day(t):
h=int(time.strftime('%H',time.localtime(t)))
if h>day[0] and h<day[1]: return True
getTime=lambda x : int(filter(lambda y : y in string.digits,os.path.basename(x)))
fSize=lambda x : int(os.stat(x)[6])
to_day=lambda x : time.strftime('%j',time.localtime(x))
files=scanDir(data_dir)
photos=filter(lambda x:x[-3:]=='jpg',files)
basename=os.path.splitext(os.path.basename(photos[0]))[0]
prefix=basename.replace(str(getTime(photos[0])),'')
print 'Prefix:',prefix
timeList=map(getTime,photos)
dayList=filter(is_day,timeList)
print '%d photos, %d during daytime' % (len(timeList),len(dayList))
daydict={}
for t in dayList:
d=to_day(t)
daydict[d]=daydict.get(d,[])+[t]
t1,t2=min(dayList),max(dayList)
print 'Start date: %s' % time.strftime('%Y-%m-%d',time.localtime(t1))
print 'End date: %s' % time.strftime('%Y-%m-%d',time.localtime(t2))
duration=(t2-t1)/(60*60*24)
print 'Duration in days: %d' % duration
frames_per_day=movie_frames/duration
print 'Frames per day:',frames_per_day
selected=[]
for k,v in sorted(daydict.items()):
if len(v)<=frames_per_day: continue
print k,len(v)
sizelist=map(lambda x : fSize(data_dir+prefix+'%d.jpg'%x),v)
timesize=zip(sizelist,v)
timesize.sort()
timesize.reverse()
selected+=map(lambda x : '%s%s%d.jpg' % (data_dir,prefix,x[1]),timesize[:frames_per_day])
for s in selected: shutil.copy(s,out_dir)