properly handle files in unsupported formats. print list of files that will not be syned due to format issues
This commit is contained in:
parent
72b5643e68
commit
77096ddb17
1 changed files with 17 additions and 20 deletions
|
@ -351,21 +351,17 @@ class Client(object):
|
||||||
modified = time.mktime(time.localtime())
|
modified = time.mktime(time.localtime())
|
||||||
created = modified
|
created = modified
|
||||||
|
|
||||||
sql = 'SELECT atime, ctime, mtime, size, created FROM file WHERE deleted < 0 AND path=?'
|
sql = 'SELECT atime, ctime, mtime, size, created, info FROM file WHERE deleted < 0 AND path=?'
|
||||||
c.execute(sql, [path])
|
c.execute(sql, [path])
|
||||||
stat = os.stat(path)
|
stat = os.stat(path)
|
||||||
for row in c:
|
for row in c:
|
||||||
if stat.st_atime == row[0] and stat.st_ctime == row[1] and stat.st_mtime == row[2] and stat.st_size == row[3]:
|
if stat.st_atime == row[0] and stat.st_ctime == row[1] and stat.st_mtime == row[2] and stat.st_size == row[3]:
|
||||||
created = row[4]
|
created = row[4]
|
||||||
|
info = json.loads(row[5])
|
||||||
update = False
|
update = False
|
||||||
break
|
break
|
||||||
if update or rescan:
|
if update or rescan:
|
||||||
info = utils.avinfo(path, cached=not rescan)
|
info = utils.avinfo(path, cached=not rescan)
|
||||||
'''
|
|
||||||
if 'error' in info or info['size'] == 0:
|
|
||||||
#print info
|
|
||||||
return False
|
|
||||||
'''
|
|
||||||
if info['size'] > 0:
|
if info['size'] > 0:
|
||||||
oshash = info['oshash']
|
oshash = info['oshash']
|
||||||
sha1 = None
|
sha1 = None
|
||||||
|
@ -375,7 +371,7 @@ class Client(object):
|
||||||
c.execute(u'INSERT OR REPLACE INTO file values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
|
c.execute(u'INSERT OR REPLACE INTO file values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
|
||||||
t)
|
t)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
return True
|
return 'error' not in info
|
||||||
|
|
||||||
def get_resolution(self, info):
|
def get_resolution(self, info):
|
||||||
height = info['video'][0]['height'] if info.get('video') else None
|
height = info['video'][0]['height'] if info.get('video') else None
|
||||||
|
@ -510,7 +506,7 @@ class Client(object):
|
||||||
files = list(set(files) - set(unknown))
|
files = list(set(files) - set(unknown))
|
||||||
|
|
||||||
for f in files:
|
for f in files:
|
||||||
if not self.scan_file(f):
|
if not self.scan_file(f, rescan):
|
||||||
unsupported.append(f)
|
unsupported.append(f)
|
||||||
|
|
||||||
if unknown:
|
if unknown:
|
||||||
|
@ -521,7 +517,6 @@ class Client(object):
|
||||||
print '\n\t'.join([f[len(path):].encode('utf-8') for f in unknown])
|
print '\n\t'.join([f[len(path):].encode('utf-8') for f in unknown])
|
||||||
print ''
|
print ''
|
||||||
|
|
||||||
'''
|
|
||||||
if unsupported:
|
if unsupported:
|
||||||
files = list(set(files) - set(unsupported))
|
files = list(set(files) - set(unsupported))
|
||||||
print 'The following files are in an unsupported format and will not be synced:'
|
print 'The following files are in an unsupported format and will not be synced:'
|
||||||
|
@ -529,6 +524,7 @@ class Client(object):
|
||||||
print '\n\t'.join([f[len(path):] for f in unsupported])
|
print '\n\t'.join([f[len(path):] for f in unsupported])
|
||||||
print ''
|
print ''
|
||||||
'''
|
'''
|
||||||
|
'''
|
||||||
|
|
||||||
deleted_files = filter(lambda f: f not in files, known_files)
|
deleted_files = filter(lambda f: f not in files, known_files)
|
||||||
new_files = filter(lambda f: f not in known_files, files)
|
new_files = filter(lambda f: f not in known_files, files)
|
||||||
|
@ -808,17 +804,18 @@ class Client(object):
|
||||||
path = row[0]
|
path = row[0]
|
||||||
oshash = row[1]
|
oshash = row[1]
|
||||||
info = json.loads(row[2])
|
info = json.loads(row[2])
|
||||||
for key in ('atime', 'ctime', 'mtime', 'path'):
|
if not 'error' in info:
|
||||||
if key in info:
|
for key in ('atime', 'ctime', 'mtime', 'path'):
|
||||||
del info[key]
|
if key in info:
|
||||||
files['info'][oshash] = info
|
del info[key]
|
||||||
files['files'].append({
|
files['info'][oshash] = info
|
||||||
'oshash': oshash,
|
files['files'].append({
|
||||||
'path': path[len(prefix):],
|
'oshash': oshash,
|
||||||
'atime': row[3],
|
'path': path[len(prefix):],
|
||||||
'ctime': row[4],
|
'atime': row[3],
|
||||||
'mtime': row[5],
|
'ctime': row[4],
|
||||||
})
|
'mtime': row[5],
|
||||||
|
})
|
||||||
return files
|
return files
|
||||||
|
|
||||||
def clean(self, args):
|
def clean(self, args):
|
||||||
|
|
Loading…
Reference in a new issue