def html_content_for(book, src_dir): html_fpath = src_dir.joinpath(fname_for(book, "html")) # is HTML file present? if not html_fpath.exists(): logger.warn("Missing HTML content for #{} at {}".format(book.id, html_fpath)) return None, None try: return read_file(html_fpath) except UnicodeDecodeError: logger.error("Unable to read HTML content: {}".format(html_fpath)) raise
def html_content_for(book, static_folder, download_cache): html_fpath = os.path.join(download_cache, fname_for(book, 'html')) # is HTML file present? if not path(html_fpath).exists(): logger.warn("Missing HTML content for #{} at {}" .format(book.id, html_fpath)) return None, None try: return read_file(html_fpath) except UnicodeDecodeError: logger.error("Unable to read HTML content: {}".format(html_fpath)) raise
def handle_companion_file(fname, dstfname=None, book=None, force=False, as_ext=None): ext = path(fname).ext if as_ext is None else as_ext src = os.path.join(path(download_cache).abspath(), fname) if dstfname is None: dstfname = fname dst = os.path.join(path(static_folder).abspath(), dstfname) if path(dst).exists() and not force: logger.debug("\t\tSkipping existing companion {}".format(dstfname)) return # optimization based on mime/extension if ext in (".png", ".jpg", ".jpeg", ".gif"): logger.info( "\t\tCopying and optimizing image companion {}".format(fname)) # copy_from_cache(src, dst) optimize_image(src, dst) elif ext == ".epub": logger.info("\t\tCreating optimized EPUB file {}".format(fname)) tmp_epub = tempfile.NamedTemporaryFile(suffix=".epub", dir=TMP_FOLDER) tmp_epub.close() try: optimize_epub(src, tmp_epub.name) except zipfile.BadZipFile: logger.warn("\t\tBad zip file. " "Copying as it might be working{}".format(fname)) handle_companion_file(fname, dstfname, book, force, as_ext="zip") else: path(tmp_epub.name).move(dst) else: # excludes files created by Windows Explorer if src.endswith("_Thumbs.db"): return # copy otherwise (PDF mostly) logger.debug("\t\tshitty ext: {}".format(dst)) logger.info("\t\tCopying companion file to {}".format(fname)) copy_from_cache(src, dst)
def handle_companion_file(fname, dstfname=None, book=None, force=False, as_ext=None): ext = path(fname).ext if as_ext is None else as_ext src = os.path.join(path(download_cache).abspath(), fname) if dstfname is None: dstfname = fname dst = os.path.join(path(static_folder).abspath(), dstfname) if path(dst).exists() and not force: logger.debug("\t\tSkipping existing companion {}".format(dstfname)) return # optimization based on mime/extension if ext in ('.png', '.jpg', '.jpeg', '.gif'): logger.info("\t\tCopying and optimizing image companion {}" .format(fname)) # copy_from_cache(src, dst) optimize_image(src, dst) elif ext == '.epub': logger.info("\t\tCreating optimized EPUB file {}".format(fname)) tmp_epub = tempfile.NamedTemporaryFile(suffix='.epub', dir=TMP_FOLDER) tmp_epub.close() try: optimize_epub(src, tmp_epub.name) except zipfile.BadZipFile: logger.warn("\t\tBad zip file. " "Copying as it might be working{}".format(fname)) handle_companion_file(fname, dstfname, book, force, as_ext='zip') else: path(tmp_epub.name).move(dst) else: # excludes files created by Windows Explorer if src.endswith('_Thumbs.db'): return # copy otherwise (PDF mostly) logger.debug("\t\tshitty ext: {}".format(dst)) logger.info("\t\tCopying companion file to {}".format(fname)) copy_from_cache(src, dst)
def handle_companion_file( fname, dstfname=None, book=None, force=False, as_ext=None, html_file_list=None, s3_storage=None, ): ext = fname.suffix if as_ext is None else as_ext src = fname if dstfname is None: dstfname = fname.name dst = static_folder.joinpath(dstfname) if dst.exists() and not force: logger.debug("\t\tSkipping existing companion {}".format(dstfname)) return # optimization based on mime/extension if ext in (".png", ".jpg", ".jpeg", ".gif"): logger.info("\t\tCopying and optimizing image companion {}".format(fname)) optimize_image(src, dst) if dst.name == (f"{book.id}_cover_image.jpg") and s3_storage: upload_to_cache( asset=dst, book_format="cover", book_id=book.id, etag=book.cover_etag, s3_storage=s3_storage, optimizer_version=optimizer_version, ) update_download_cache(src, dst) elif html_file_list: html_file_list.append(dst) update_download_cache(src, dst) elif ext == ".epub": logger.info("\t\tCreating optimized EPUB file {}".format(fname)) tmp_epub = tempfile.NamedTemporaryFile(suffix=".epub", dir=TMP_FOLDER) tmp_epub.close() try: optimize_epub(src, tmp_epub.name) except zipfile.BadZipFile: logger.warn( "\t\tBad zip file. " "Copying as it might be working{}".format(fname) ) handle_companion_file(fname, dstfname, book, force, as_ext=".zip") else: path(tmp_epub.name).move(dst) if s3_storage: upload_to_cache( asset=dst, book_format="epub", book_id=book.id, etag=book.epub_etag, s3_storage=s3_storage, optimizer_version=optimizer_version, ) update_download_cache(src, dst) else: # excludes files created by Windows Explorer if src.name.endswith("_Thumbs.db"): return # copy otherwise (PDF mostly) logger.info("\t\tCopying companion file to {}".format(dst)) copy_file(src, dst) if ext != ".pdf" and ext != ".zip" and html_file_list: html_file_list.append(dst) update_download_cache(src, dst)