aboutsummaryrefslogtreecommitdiffstats
path: root/src/epy_reader/ebooks/azw.py
blob: 139fcc533a4a825a2ba2a73055604847502cc364 (plain) (blame)
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
import contextlib
import os
import shutil
import tempfile
import zipfile

from epy_reader.ebooks.epub import Epub
from epy_reader.tools import unpack_kindle_book


class Azw(Epub):
    def __init__(self, fileepub):
        self.path = os.path.abspath(fileepub)
        self.tmpdir = tempfile.mkdtemp(prefix="epy-")
        basename, _ = os.path.splitext(os.path.basename(self.path))
        self.tmpepub = os.path.join(self.tmpdir, "mobi8", basename + ".epub")

    def initialize(self):
        with contextlib.redirect_stdout(None):
            unpack_kindle_book(self.path, self.tmpdir, epubver="A", use_hd=True)
        self.file = zipfile.ZipFile(self.tmpepub, "r")
        Epub.initialize(self)

    def cleanup(self) -> None:
        shutil.rmtree(self.tmpdir)
        return