IGN:Fix minor bugs in setting metadata for MOBI and EPUB

This commit is contained in:
Kovid Goyal 2009-02-08 17:35:39 -08:00
parent f8aa3bf8de
commit d439798750
3 changed files with 5 additions and 2 deletions

View File

@ -141,6 +141,7 @@ def set_file_type_metadata(stream, mi, ftype):
plugin.set_metadata(stream, mi, ftype.lower().strip())
break
except:
print 'Failed to set metadata for', repr(getattr(mi, 'title', ''))
traceback.print_exc()

View File

@ -86,9 +86,9 @@ class MetadataUpdater(object):
image_base, = unpack('>I', record0[108:112])
flags, = unpack('>I', record0[128:132])
have_exth = self.have_exth = (flags & 0x40) != 0
self.cover_record = self.thumbnail_record = None
if not have_exth:
return
self.cover_record = self.thumbnail_record = None
exth_off = unpack('>I', record0[20:24])[0] + 16 + record0.start
exth = self.exth = StreamSlicer(stream, exth_off, record0.stop)
nitems, = unpack('>I', exth[8:12])
@ -143,6 +143,8 @@ class MetadataUpdater(object):
exth = ['EXTH', pack('>II', len(exth) + 12, len(recs)), exth, pad]
exth = ''.join(exth)
title = (mi.title or _('Unknown')).encode(self.codec, 'replace')
if getattr(self, 'exth', None) is None:
raise MobiError('No existing EXTH record. Cannot update metadata.')
title_off = (self.exth.start - self.record0.start) + len(exth)
title_len = len(title)
trail = len(self.exth) - len(exth) - len(title)

View File

@ -618,7 +618,7 @@ class OPF(object):
def fset(self, val):
remove = list(self.authors_path(self.metadata))
for elem in remove:
self.metadata.remove(elem)
elem.getparent().remove(elem)
for author in val:
attrib = {'{%s}role'%self.NAMESPACES['opf']: 'aut'}
elem = self.create_metadata_element('creator', attrib=attrib)