#! /usr/bin/env python
+from __future__ import print_function
import os
from time import mktime
from shutil import copyfileobj
__all__ = ['download']
-_format = '%f'
-_compile_format = True
-_compiled_format = '%(file)s'
+format = '%f'
+compile_format = True
+compiled_format = '%(file)s'
-def _do_compile_format():
- global _format, _compile_format, _compiled_format
- if _compile_format:
- _compile_format = False
+def _compile_format():
+ global format, compile_format, compiled_format
+ if compile_format:
+ compile_format = False
try:
- _format = get_config().get('download', 'format')
- except:
+ format = get_config().get('download', 'format')
+ except Exception:
return
got_percent = False
compiled = []
- for c in _format:
+ for c in format:
if c == '%':
if got_percent:
got_percent = False
compiled.append(new_format)
else:
compiled.append(c)
- _compiled_format = ''.join(compiled)
+ compiled_format = ''.join(compiled)
_library_path = None
-def download(book, path=None):
- if path is None:
+def download(book, dest_path=None, lib_path=None, a_format=None):
+ if lib_path is None:
global _library_path
if _library_path is None:
_library_path = get_config().get('library', 'path')
- path = _library_path
+ lib_path = _library_path
- global _compiled_format
- _do_compile_format()
- if _compiled_format[-1] in ('\0', '\\', '/'):
- raise ValueError('Bad format: "%s"' % _compiled_format)
+ global format, compile_format, compiled_format
+ if a_format:
+ format = a_format
+ compile_format = True
+ _compile_format()
+ if compiled_format[-1] in ('\0', '\\', '/'):
+ raise ValueError('Bad format: "%s"' % compiled_format)
bdict = {}
bdict['author'] = book.authors[0].fullname
bdict['extension'] = book.extension.name
bdict['ser_no'] = book.ser_no or 0
bdict['series'] = book.series
bdict['title'] = book.title
- if '%(extension)s' not in _compiled_format:
- _compiled_format += '.%(extension)s'
- filename = _compiled_format % bdict
+ if '%(extension)s' not in compiled_format:
+ compiled_format += '.%(extension)s'
+ filename = compiled_format % bdict
+ full_path = os.path.join(dest_path, filename)
try:
- os.makedirs(os.path.dirname(filename))
+ os.makedirs(os.path.dirname(full_path))
except OSError:
pass # Already exists
- zf = ZipFile(os.path.join(path, book.archive), 'r')
+ zf = ZipFile(os.path.join(lib_path, book.archive), 'r')
infile = zf.open('%s.%s' % (book.file, book.extension.name))
- outfile = open(filename, 'wb')
+ outfile = open(full_path, 'wb')
copyfileobj(infile, outfile)
outfile.close()
infile.close()
zf.close()
dt = mktime(book.date.timetuple())
- os.utime(filename, (dt, dt))
+ os.utime(full_path, (dt, dt))
def test():
- _do_compile_format()
- print _compiled_format
+ _compile_format()
+ print(compiled_format)
+
if __name__ == '__main__':
test()