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