4 ms·
Nit (maybe minor, maybe not): The EPUB standard requires[1] that the `mimetype` file be the first file stored in the ZIP container, and also that it be stored w
by velcrovan 2y ago
Nit (maybe minor, maybe not): The EPUB standard requires[1] that the `mimetype` file be the first file stored in the ZIP container, and also that it be stored without being compressed.
It doesn't look like the author's code is conforming to this part of the standard.
If that is the case, then their Kindle may be able to tolerate the deviation. But using this code with an e-reader that adheres closely to the EPUB spec may produce broken results.
[1]: https://www.w3.org/TR/epub-33/#sec-zip-container-mime https://www.w3.org/TR/epub-33/#sec-zip-container-mime
- facundo_olano 2y agoTIL thanks for commenting, I'll make a note to fix this.
- velcrovan 2y agoYeah, understandable given that the "sample-epub-minimal" repo you were going off of effectively says "just zip it all up and you're good to go", which is incorrect. Not sure what the best remedy is there, maybe I'll open a pull request. [1] https://github.com/thansen0/sample-epub-minimal https://github.com/thansen0/sample-epub-minimal
- davidwtbuxton 2y agoMy crusty Python code implementing EPUB, with the conforming uncompressed mimetype file as first member in the archive: https://github.com/davidwtbuxton/ucflib/blob/e576fb97fc2a2ea8396fbcb294892d52897a2d28/ucf.py#L163 https://github.com/davidwtbuxton/ucflib/blob/e576fb97fc2a2ea...
- velcrovan 2y agoRobin Sloan has a good Ruby project that builds good-looking web pages alongside EPUB files: https://github.com/robinsloan/perfect-edition https://github.com/robinsloan/perfect-edition It was in porting that to Racket [1] that I learned about some of these EPUB standard details. But spoiler alert, both projects just shell out to `zip` to do the actual compression. [1]: https://github.com/otherjoel/perfect-edition-pollen/blob/master/epub.rkt https://github.com/otherjoel/perfect-edition-pollen/blob/mas...