This commit is contained in:
Kovid Goyal 2012-04-20 21:08:27 +05:30
parent 03ed4010f5
commit 8d44e8d83f
2 changed files with 11 additions and 7 deletions

View File

@ -175,7 +175,7 @@ class KF8Writer(object):
self.link_map = {}
count = 0
hrefs = {item.href for item in self.oeb.spine}
for i, item in enumerate(self.oeb.spine):
for item in self.oeb.spine:
root = self.data(item)
for a in XPath('//h:a[@href]')(root):
@ -184,8 +184,7 @@ class KF8Writer(object):
href, _, frag = ref.partition('#')
href = urlnormalize(href)
if href in hrefs:
placeholder = 'kindle:pos:fid:%04d:off:%s'%(i,
to_href(count))
placeholder = 'kindle:pos:fid:0000:off:%s'%to_href(count)
self.link_map[placeholder] = (href, frag)
a.set('href', placeholder)
@ -201,9 +200,9 @@ class KF8Writer(object):
aid = aidbase + j
tag.attrib['aid'] = to_base(aid, base=32)
if tag.tag == XHTML('body'):
self.id_map[(item.href, '')] = tag.attrib['aid']
self.id_map[(item.href, '')] = (i, tag.attrib['aid'])
if id_ is not None:
self.id_map[(item.href, id_)] = tag.attrib['aid']
self.id_map[(item.href, id_)] = (i, tag.attrib['aid'])
j += 1

View File

@ -341,7 +341,12 @@ class Chunker(object):
for match in re.finditer(br'<[^>]+? aid=[\'"]([A-Z0-9]+)[\'"]', text):
aid_map[match.group(1)] = match.start()
self.aid_offset_map = aid_map
placeholder_map = {bytes(k):bytes(to_href(aid_map[v])) for k, v in
def to_placeholder(x):
file_number, aid = x
return bytes('%04d:%s'%(file_number, to_href(aid_map[aid])))
placeholder_map = {bytes(k):to_placeholder(v) for k, v in
self.placeholder_map.iteritems()}
# Now update the links
@ -349,7 +354,7 @@ class Chunker(object):
raw = match.group()
pl = match.group(1)
try:
return raw[:-10] + placeholder_map[pl]
return raw[:-15] + placeholder_map[pl]
except KeyError:
pass
return raw