1#!/usr/local/bin/python3.8 2# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai 3 4 5__license__ = 'GPL v3' 6__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>' 7__docformat__ = 'restructuredtext en' 8 9import sys, os, shutil 10 11from calibre.ebooks.mobi.debug.headers import MOBIFile 12from calibre.ebooks.mobi.debug.mobi6 import inspect_mobi as inspect_mobi6 13from calibre.ebooks.mobi.debug.mobi8 import inspect_mobi as inspect_mobi8 14 15 16def inspect_mobi(path_or_stream, ddir=None): # {{{ 17 stream = (path_or_stream if hasattr(path_or_stream, 'read') else 18 open(path_or_stream, 'rb')) 19 f = MOBIFile(stream) 20 if ddir is None: 21 ddir = 'decompiled_' + os.path.splitext(os.path.basename(stream.name))[0] 22 try: 23 shutil.rmtree(ddir) 24 except: 25 pass 26 os.makedirs(ddir) 27 if f.kf8_type is None: 28 inspect_mobi6(f, ddir) 29 elif f.kf8_type == 'joint': 30 p6 = os.path.join(ddir, 'mobi6') 31 os.mkdir(p6) 32 inspect_mobi6(f, p6) 33 p8 = os.path.join(ddir, 'mobi8') 34 os.mkdir(p8) 35 inspect_mobi8(f, p8) 36 else: 37 inspect_mobi8(f, ddir) 38 39 print('Debug data saved to:', ddir) 40 41# }}} 42 43 44def main(): 45 inspect_mobi(sys.argv[1]) 46 47 48if __name__ == '__main__': 49 main() 50