diff --git a/mangle-cli.py b/mangle-cli.py new file mode 100755 index 0000000..9c8e2b1 --- /dev/null +++ b/mangle-cli.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python2 +"""python mangle-cli.py extracted_cbz_folder/* + -d directory_name defaults to ./ + -t title defaults 'Unknown' + -o book.outputFormat defaults to 'CBZ only' + +NOTE order of arguments for image files is significant. + +Example: + + mkdir my_comic + cd my_comic + 7z x /full/path/my/comic.cbz + cd .. + python mangle-cli.py -tmy_comic my_comic/* + +""" + +import shutil +import sys +import os +import getopt + +import mangle.cbz +import mangle.image +from mangle.image import ImageFlags + + +class FakeBook: + device = 'Kindle 2/3/Touch' # See mangle/image.py KindleData.Profiles + outputFormat = 'CBZ only' + title = 'Unknown' + imageFlags = ImageFlags.Orient | ImageFlags.Resize | ImageFlags.Quantize + + +try: + opts, args = getopt.getopt(sys.argv[1:], 'd:t:o:') +except getopt.GetoptError, err: + print(str(err)) + sys.exit(2) + +directory = '.' + +book = FakeBook() +book.device = 'Kindle 2/3/Touch' +#book.device = 'Kindle Paperwhite 1 & 2' +book.outputFormat = 'CBZ only' +book.title = 'Unknown' + + +for o,a in opts: + if o == '-d': + directory = a + elif o == '-t': + book.title = a + elif o == '-o': + book.outputFormat = a + + +bookPath = os.path.join(directory, book.title) + +archive = mangle.cbz.Archive(bookPath) + +if not os.path.isdir(bookPath): + os.makedirs(bookPath) + + +for index in range(0, len(args)): + target = os.path.join(bookPath, '%05d.png' % index) # FIXME preserve original; format and name? + + print(index, args[index], target) # cheap display progress + mangle.image.convertImage(args[index], target, str(book.device), book.imageFlags) + archive.addFile(target); + + +if 'Image' not in book.outputFormat: + shutil.rmtree(bookPath) + +archive.close() +