aboutsummaryrefslogtreecommitdiffstats
path: root/src/epy_reader/ebooks/azw.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/epy_reader/ebooks/azw.py')
-rw-r--r--src/epy_reader/ebooks/azw.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/epy_reader/ebooks/azw.py b/src/epy_reader/ebooks/azw.py
new file mode 100644
index 0000000..139fcc5
--- /dev/null
+++ b/src/epy_reader/ebooks/azw.py
@@ -0,0 +1,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