-
Notifications
You must be signed in to change notification settings - Fork 0
/
script-comic.py
106 lines (81 loc) · 2.48 KB
/
script-comic.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python3
import os
import comicbook
import comicprocessor
"""
This script is to convert comic from one format to another
Usage:
script-comic.py [--width=WIDTH] [--height=HEIGHT] [--rtl] input output
Supported input: folder, zip, cbz, pdf, epub, azw3
Supported output: cbz, zip, pdf, epub
"""
def main(args):
WIDTH = 1404
HEIGHT = 1872
RTL = False
USAGE = """Usage:
script-comic.py [--width=WIDTH] [--height=HEIGHT] [--rtl] input output
Supported input: folder, zip, cbz, pdf, epub, azw3
Supported output: cbz, zip, pdf, epub"""
# Parse parameter
args = args[1:]
while True:
if len(args) == 0:
print(USAGE)
return
if args[0][:2] != '--':
break
values = args[0][2:].split('=', 1)
k = values[0]
v = values[1] if len(values) == 2 else None
if k == 'width':
WIDTH = int(v)
elif k == 'height':
HEIGHT = int(v)
elif k == 'rtl':
RTL = True
elif k == 'ltr':
RTL = False
else:
print(USAGE)
return
args = args[1:]
if len(args) < 2:
print(USAGE)
return
input_file = args[0]
_, file_ext = os.path.splitext(input_file)
file_ext = file_ext.lower()
output_file = args[1]
_, output_ext = os.path.splitext(output_file)
output_ext = output_ext.lower()
print(input_file)
print(output_file)
if file_ext not in ['', '.cbz', '.zip', '.pdf', '.azw3', '.mobi', '.epub', '.epub2', '.epub3']:
print(USAGE)
return
if output_ext not in ['.cbz', '.zip', '.pdf', '.epub']:
print(USAGE)
return
print('Input file: {}'.format(input_file))
book = comicbook.load_book(input_file)
# Only specify direction for CBZ/ZIP/DIR
if file_ext == '.cbz' or file_ext == '.zip' or file_ext == '':
book.direction = -1 if RTL else 1
if output_ext != '.pdf':
print('Processing...')
processor = comicprocessor.ComicProcessor(dir=book.direction, resize=(WIDTH, HEIGHT))
output = comicbook.process_comic(book, processor)
else:
output = book
print('Saving...')
if output_ext == '.epub':
comicbook.write_as_epub(output, output_file)
elif output_ext == '.pdf':
comicbook.write_as_pdf(output, output_file)
else:
comicbook.write_as_zip(output, output_file)
print('Done!')
if __name__ == '__main__':
import sys
main(sys.argv)