From 5e1e75f4913376455e05dc474c39d0041adb327f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 28 Mar 2009 17:21:27 -0700 Subject: [PATCH] IGN:Read publish date from MOBI books and replace tag with
. Also revert writing of as it causes problems with some MOBI readers --- src/calibre/ebooks/mobi/reader.py | 16 +++++++++++----- src/calibre/ebooks/mobi/writer.py | 5 +++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index 37a1b7f85f..b5296e7092 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -5,7 +5,7 @@ __copyright__ = '2008, Kovid Goyal ' Read data from .mobi files ''' -import sys, struct, os, cStringIO, re, functools +import sys, struct, os, cStringIO, re, functools, datetime try: from PIL import Image as PILImage @@ -73,8 +73,14 @@ class EXTHHeader(object): if not self.mi.tags: self.mi.tags = [] self.mi.tags.append(content.decode(codec, 'ignore')) - #else: - # print 'unhandled metadata record', id, repr(content), codec + elif id == 106: + try: + self.mi.publish_date = datetime.datetime.strptime( + content, '%Y-%m-%d',).date() + except: + pass + else: + print 'unhandled metadata record', id, repr(content) class BookHeader(object): @@ -305,8 +311,8 @@ class MobiReader(object): mobi_version = self.book_header.mobi_version for tag in root.iter(etree.Element): if tag.tag in ('country-region', 'place', 'placetype', 'placename', - 'state', 'city', 'street', 'address'): - tag.tag = 'span' + 'state', 'city', 'street', 'address', 'content'): + tag.tag = 'div' if tag.tag == 'content' else 'span' for key in tag.attrib.keys(): tag.attrib.pop(key) continue diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index 9ab641104f..9990fa9061 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -211,13 +211,14 @@ class Serializer(object): def serialize_item(self, item): buffer = self.buffer - buffer.write('') + #buffer.write('') if not item.linear: self.breaks.append(buffer.tell() - 1) self.id_offsets[item.href] = buffer.tell() for elem in item.data.find(XHTML('body')): self.serialize_elem(elem, item) - buffer.write('') + #buffer.write('') + buffer.write('') def serialize_elem(self, elem, item, nsrmap=NSRMAP): buffer = self.buffer