From 01afbf4b7c65d20437526079c2728d3d0e497a07 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Tue, 23 Oct 2012 16:32:20 +0200 Subject: [PATCH] extract epub metadata into top document --- src/filters/rclepub | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/filters/rclepub b/src/filters/rclepub index 545b3763..1c50592f 100755 --- a/src/filters/rclepub +++ b/src/filters/rclepub @@ -25,6 +25,31 @@ class rclEPUB: self.em = em self.em.setmimetype(rclepub_html_mtype) + def _selfdoc(self): + meta = self.book.opf.metadata + title = "" + for tt, lang in meta.titles: + title += tt + " " + author = "" + for name, role, fileas in meta.creators: + author += name + " " + data = "\n\n" + if title: + data += "" + self.em.htmlescape(title) + "\n" + if author: + data += '\n' + if meta.description: + data += '\n' + data = data.encode('UTF-8') + self.em.setmimetype('text/html') + if len(self.contents) == 0: + eof = rclexecm.RclExecM.eofnext + else: + eof = rclexecm.RclExecM.noteof + return (True, data, "", eof) + def extractone(self, id): """Extract one path-named internal file from the EPUB file""" @@ -38,7 +63,7 @@ class rclEPUB: if item is None: raise Exception("Item not found for id %s" % (id,)) doc = self.book.read_item(item) - doc = re.sub('''''', '''''', doc) self.em.setmimetype(rclepub_html_mtype) return (True, doc, id, iseof) @@ -63,18 +88,12 @@ class rclEPUB: def getipath(self, params): return self.extractone(params["ipath:"]) - + def getnext(self, params): if self.currentindex == -1: - # Return "self" doc self.currentindex = 0 - self.em.setmimetype('text/plain') - if len(self.contents) == 0: - eof = rclexecm.RclExecM.eofnext - else: - eof = rclexecm.RclExecM.noteof - return (True, "", "", eof) + return self._selfdoc() if self.currentindex >= len(self.contents): return (False, "", "", rclexecm.RclExecM.eofnow)