X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/2f704d22ddbb461e0c84d709429a9a5dacfa00ed..1c58de768c37f60fb6207374cbf523537bfca9ae:/librarian/epub.py diff --git a/librarian/epub.py b/librarian/epub.py index 211ed06..712863c 100644 --- a/librarian/epub.py +++ b/librarian/epub.py @@ -11,6 +11,8 @@ import re import subprocess from StringIO import StringIO from copy import deepcopy +from mimetypes import guess_type + from lxml import etree import zipfile from tempfile import mkdtemp, NamedTemporaryFile @@ -329,9 +331,8 @@ def transform_chunk(chunk_xml, chunk_no, annotations, empty=False, _empty_html_s return output_html, toc, chars -def transform(wldoc, verbose=False, - style=None, html_toc=False, - sample=None, cover=None, flags=None): +def transform(wldoc, verbose=False, style=None, html_toc=False, + sample=None, cover=None, flags=None, ilustr_path=''): """ produces a EPUB file sample=n: generate sample e-book (with at least n paragraphs) @@ -424,6 +425,14 @@ def transform(wldoc, verbose=False, output_file = NamedTemporaryFile(prefix='librarian', suffix='.epub', delete=False) zip = zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED) + if os.path.isdir(ilustr_path): + for i, filename in enumerate(os.listdir(ilustr_path)): + file_path = os.path.join(ilustr_path, filename) + zip.write(file_path, os.path.join('OPS', filename)) + image_id = 'image%s' % i + manifest.append(etree.fromstring( + '' % (image_id, filename, guess_type(file_path)[0]))) + # write static elements mime = zipfile.ZipInfo() mime.filename = 'mimetype' @@ -435,13 +444,15 @@ def transform(wldoc, verbose=False, '' \ '') - #zip.write(get_resource('res/wl-logo-small.png'), os.path.join('OPS', 'logo_wolnelektury.png')) - zip.write(get_resource('res/koedlogo.png'), os.path.join('OPS', 'logo_koed.png')) - #zip.write(get_resource('res/jedenprocent.png'), os.path.join('OPS', 'jedenprocent.png')) + # zip.write(get_resource('res/wl-logo-small.png'), os.path.join('OPS', 'logo_wolnelektury.png')) + # zip.write(get_resource('res/koedlogo.png'), os.path.join('OPS', 'logo_koed.png')) + # zip.write(get_resource('res/jedenprocent.png'), os.path.join('OPS', 'jedenprocent.png')) if not style: style = get_resource('epub/style.css') zip.write(style, os.path.join('OPS', 'style.css')) + if cover is None: + cover = WLCover if cover: if cover is True: cover = WLCover @@ -507,15 +518,15 @@ def transform(wldoc, verbose=False, zip.writestr('OPS/annotations.html', etree.tostring( html_tree, method="html", pretty_print=True)) - toc.add("Strona redakcyjna", "last.html") - manifest.append(etree.fromstring( - '')) - spine.append(etree.fromstring( - '')) - html_tree = xslt(document.edoc, get_resource('epub/xsltLast.xsl')) - chars.update(used_chars(html_tree.getroot())) - zip.writestr('OPS/last.html', etree.tostring( - html_tree, method="html", pretty_print=True)) + # toc.add("Strona redakcyjna", "last.html") + # manifest.append(etree.fromstring( + # '')) + # spine.append(etree.fromstring( + # '')) + # html_tree = xslt(document.edoc, get_resource('epub/xsltLast.xsl')) + # chars.update(used_chars(html_tree.getroot())) + # zip.writestr('OPS/last.html', etree.tostring( + # html_tree, method="html", pretty_print=True)) if not flags or not 'without-fonts' in flags: # strip fonts