Thank you for the great plugin. Would it be possible to add the ability to do a bulk "KF8 to epub?" When I select multiple books, it only does one.

That's probably not going to happen, sorry. While I can certainly recognize the attraction of such a feature, it would involve quite an overhaul of the current process. Plus, I just never envisioned the plugin as a bulk converter/processor of any kind. It's mainly intended to inspect the contents of the various kindle formats with a few extra features included for convenience.

Should now match the version of the core standalone code (v0.62). Changes to the core code include:

- fix for improved command line handling on Windows boxes under multiprocessing
- improvements to split to allow it to work with newer Kindle Previewers
- improvements to split to allow it to replace fonts with zero-szed sections in Mobi 7
- improvements to opf to prevent html tags from interfering with opf xml creation.

That's probably not going to happen, sorry. While I can certainly recognize the attraction of such a feature, it would involve quite an overhaul of the current process. Plus, I just never envisioned the plugin as a bulk converter/processor of any kind. It's mainly intended to inspect the contents of the various kindle formats with a few extra features included for convenience.

Thanks anyway. It's nice to extract an epub I can work with when I get books from Amazon. I Don't have a Kindle.

Thanks anyway. It's nice to extract an epub I can work with when I get books from Amazon. I Don't have a Kindle.

You should also run Modify ePub to add in the cover. KF8 does not use a separate XML for the cover.

Also, validate the ePub you made with epubcheck because it may not be completely valid as is (mostly valid). If there are embedded fonts in the KF8, you'll need to tweak eBook for the AZW3 and copy out the fonts. So you can add them into the ePub. Also, in the META-INF directory in the ePub's file structure, there is probable a file called encryption.xml which will need to be deleted from the ePub.

After running an AZW3 to ePub conversion, it says it went fine, but when I try to open the resulting ePub using Calibre's internal viewer, I get:

Code:

calibre, version 0.9.33
ERROR: Could not open ebook: No valid entries in the spine of this EPUB
Traceback (most recent call last):
File "site-packages/calibre/gui2/viewer/main.py", line 40, in run
File "lib/python2.7/threading.py", line 763, in run
File "site-packages/calibre/ebooks/oeb/iterator/book.py", line 99, in __enter__
File "site-packages/calibre/customize/conversion.py", line 239, in __call__
File "site-packages/calibre/ebooks/conversion/plugins/epub_input.py", line 224, in convert
ValueError: No valid entries in the spine of this EPUB

After running an AZW3 to ePub conversion, it says it went fine, but when I try to open the resulting ePub using Calibre's internal viewer, I get:

Code:

calibre, version 0.9.33
ERROR: Could not open ebook: No valid entries in the spine of this EPUB
Traceback (most recent call last):
File "site-packages/calibre/gui2/viewer/main.py", line 40, in run
File "lib/python2.7/threading.py", line 763, in run
File "site-packages/calibre/ebooks/oeb/iterator/book.py", line 99, in __enter__
File "site-packages/calibre/customize/conversion.py", line 239, in __call__
File "site-packages/calibre/ebooks/conversion/plugins/epub_input.py", line 224, in convert
ValueError: No valid entries in the spine of this EPUB

Did you validate the ePub? You have to in order to find what needs fixing. Then after it validates with epubcheck 3.0.1, then you can open it in the Calibre Viewer.

ERROR: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub/OEBPS/content.opf(23,33): An invalid XML character (Unicode: 0x{2}) was found in the value of attribute "{1}" and element is "0".
ERROR: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub/OEBPS/content.opf: An invalid XML character (Unicode: 0x{2}) was found in the value of attribute "{1}" and element is "0".
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00291.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00278.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00282.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0058.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00280.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0055.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0046.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0057.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00281.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0003.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0028.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0047.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0019.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00267.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0041.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0021.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0056.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00293.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0007.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0061.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0012.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0036.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0065.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0060.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0009.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0002.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0049.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0022.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0032.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0053.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00284.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0030.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0000.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00272.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0013.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0050.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0066.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0064.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00275.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00287.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00289.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00296.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0043.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0020.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00290.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0044.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00263.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00276.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0006.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00288.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00285.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0001.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00266.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0017.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00277.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0023.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0054.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0031.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00262.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0059.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00265.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0033.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0027.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0026.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0051.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0014.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0034.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Styles/style0003.css) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0040.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0048.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00273.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00264.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00295.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00286.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0024.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00270.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00283.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0010.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0008.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0037.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0052.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0011.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0035.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0063.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0025.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Styles/style0001.css) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0029.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0062.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0016.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00274.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0005.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0045.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00279.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00268.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0018.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00294.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00269.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Styles/style0002.css) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00261.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0038.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0039.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0042.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0015.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/toc.ncx) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00292.jpeg) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Text/part0004.xhtml) exists in the zip file, but is not declared in the OPF file
WARNING: /Users/<myname>/Documents/Calibre/Test/<path</<book name>.epub: item (OEBPS/Images/image00271.jpeg) exists in the zip file, but is not declared in the OPF file
Check finished with warnings or errors

It's best not to think of it as being an actual conversion process. It's more or less an extraction, actually. Sometimes, a valid ePub can't always be created from the code extracted from a KF8 book (without major alterations/assumptions anyway--something which mobiunpack strives hard to avoid). This mostly occurs when the KF8 ebook wasn't created from an epub in the first place. In those instances, it's best to unpack the book to an external folder and see if it can be manually manipulated into what you need.