regluit/core/epub.py

62 lines
2.1 KiB
Python
Raw Normal View History

"""
Utilities that manipulate epub files
"""
2020-02-13 04:22:11 +00:00
from io import StringIO, BytesIO
2020-02-12 16:39:47 +00:00
from pyepub import EPUB, InvalidEpub
from django.template.loader import render_to_string
def personalize(epub_file, acq):
output = EPUB(epub_file, "a")
context={'acq':acq}
2020-02-12 16:36:49 +00:00
part = StringIO(str(render_to_string('epub/datedcc_license.xhtml', context)))
output.addpart(part, "datedcc_license.xhtml", "application/xhtml+xml", 1) #after title, we hope
2013-09-20 21:44:37 +00:00
output.addmetadata('rights','%s after %s'%(acq.work.last_campaign().license_url,acq.work.last_campaign().cc_date))
2020-02-17 21:34:02 +00:00
personalized_epub= BytesIO()
2014-04-30 19:17:10 +00:00
output.writetodisk(personalized_epub)
#logger.info("personalized")
return personalized_epub
2014-09-05 20:35:57 +00:00
def ask_epub(epub_file, context):
output = EPUB(epub_file, "a")
2020-02-12 16:36:49 +00:00
part = StringIO(str(render_to_string('epub/ask.xhtml', context)))
2014-09-05 20:35:57 +00:00
output.addpart(part, "ask.xhtml", "application/xhtml+xml", 1) #after title, we hope
2020-02-13 04:22:11 +00:00
asking_epub = BytesIO()
2014-09-05 20:35:57 +00:00
output.writetodisk(asking_epub)
return asking_epub
def ungluify(epub_file, campaign):
output = EPUB(epub_file, "a")
context={'campaign':campaign}
2020-02-12 16:36:49 +00:00
part = StringIO(str(render_to_string('epub/cc_license.xhtml', context)))
output.addpart(part, "cc_license.xhtml", "application/xhtml+xml", 1) #after title, we hope
output.addmetadata('rights', campaign.license_url)
output.close()
2014-01-15 13:32:55 +00:00
return output
from regluit.booxtream import BooXtream
watermarker = BooXtream()
def test_epub(epub_file):
try:
output = EPUB(epub_file, "a")
output.close()
#just use Booxtream to run epubcheck
params={
'customername': 'epubcheck',
'languagecode':'1033',
'expirydays': 1,
'downloadlimit': 1,
'exlibris':0,
'chapterfooter': 0,
'disclaimer':0,
'referenceid': 'N/A',
'kf8mobi': False,
'epub': True,
}
output.filename.seek(0)
boox = watermarker.platform(epubfile=output.filename, **params)
return None
except Exception as e:
return "error:%s" % e