mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-28 18:00:09 +00:00
added ImageGrid.ui fav dirs export script
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
3d41a07c7a
commit
4bf5657f10
112
ui/exportdirs.py
Executable file
112
ui/exportdirs.py
Executable file
@ -0,0 +1,112 @@
|
||||
#=======================================================================
|
||||
|
||||
__version__ = '''0.0.01'''
|
||||
__sub_version__ = '''20130410162136'''
|
||||
__copyright__ = '''(c) Alex A. Naanou 2011'''
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import json
|
||||
import urllib2
|
||||
|
||||
from pprint import pprint
|
||||
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
#----------------------------------------------------------build_dirs---
|
||||
def build_dirs(data, path, rewrite=None):
|
||||
'''
|
||||
rewrite can be:
|
||||
'force' - allways rewrite a destination file.
|
||||
'older' - rewrite only older files.
|
||||
None - never rewrite.
|
||||
'''
|
||||
ribbons = data['ribbons']
|
||||
|
||||
depth = len(ribbons)
|
||||
fav_path = os.path.join(path, *(['fav'] * depth))
|
||||
|
||||
if not os.path.exists(fav_path):
|
||||
os.makedirs(fav_path)
|
||||
|
||||
err_urls = []
|
||||
|
||||
for i, ribbon in enumerate(ribbons):
|
||||
level_path = os.path.join(path, *(['fav'] * (depth - i)))
|
||||
|
||||
for guid, image in ribbon.items():
|
||||
try:
|
||||
# XXX for some magical reason this works and url2pathname does not...
|
||||
##!!! this will also break on utf paths...
|
||||
img = urllib2.urlopen(image['path'])
|
||||
p = img.fp.name
|
||||
img.close()
|
||||
|
||||
# XXX do we need to indicate overwriting in the status?
|
||||
if rewrite == 'force' or not os.path.exists(os.path.join(level_path, os.path.split(p)[-1])):
|
||||
shutil.copy(p, level_path)
|
||||
yield 'written', level_path, image
|
||||
elif rewrite == 'older':
|
||||
raise NotImplementedError
|
||||
##!!! check dates...
|
||||
##!!!
|
||||
yield 'written', level_path, image
|
||||
else:
|
||||
yield 'skipped', level_path, image
|
||||
|
||||
except urllib2.URLError:
|
||||
yield 'err', level_path, image
|
||||
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
from optparse import OptionParser
|
||||
|
||||
parser = OptionParser()
|
||||
|
||||
##!!! need to define the path so that it shoes up in -h
|
||||
|
||||
options, args = parser.parse_args()
|
||||
|
||||
# settings...
|
||||
##!!! make this configurable...
|
||||
|
||||
if len(args) != 2:
|
||||
parser.print_usage()
|
||||
|
||||
else:
|
||||
data, path = args[0], args[1]
|
||||
|
||||
path = path.replace('\\', '/')
|
||||
data = json.load(file(data, 'r'))
|
||||
err_urls = []
|
||||
cur_p = None
|
||||
|
||||
for status, p, img in build_dirs(data, path):
|
||||
if cur_p != p:
|
||||
cur_p = p
|
||||
print
|
||||
print 'Level:', p
|
||||
if status == 'written':
|
||||
print '.',
|
||||
elif status == 'skipped':
|
||||
print '-',
|
||||
elif status == 'err':
|
||||
print 'x',
|
||||
err_urls += [img['path']]
|
||||
print
|
||||
|
||||
if len(err_urls) != 0:
|
||||
print 'Could not open %s files:' % len(err_urls)
|
||||
pprint(err_urls)
|
||||
|
||||
|
||||
|
||||
|
||||
#=======================================================================
|
||||
# vim:set ts=4 sw=4 nowrap :
|
||||
Loading…
x
Reference in New Issue
Block a user