mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-08-11 09:13:57 -04:00
...
This commit is contained in:
parent
03ed4010f5
commit
8d44e8d83f
@ -175,7 +175,7 @@ class KF8Writer(object):
|
|||||||
self.link_map = {}
|
self.link_map = {}
|
||||||
count = 0
|
count = 0
|
||||||
hrefs = {item.href for item in self.oeb.spine}
|
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)
|
root = self.data(item)
|
||||||
|
|
||||||
for a in XPath('//h:a[@href]')(root):
|
for a in XPath('//h:a[@href]')(root):
|
||||||
@ -184,8 +184,7 @@ class KF8Writer(object):
|
|||||||
href, _, frag = ref.partition('#')
|
href, _, frag = ref.partition('#')
|
||||||
href = urlnormalize(href)
|
href = urlnormalize(href)
|
||||||
if href in hrefs:
|
if href in hrefs:
|
||||||
placeholder = 'kindle:pos:fid:%04d:off:%s'%(i,
|
placeholder = 'kindle:pos:fid:0000:off:%s'%to_href(count)
|
||||||
to_href(count))
|
|
||||||
self.link_map[placeholder] = (href, frag)
|
self.link_map[placeholder] = (href, frag)
|
||||||
a.set('href', placeholder)
|
a.set('href', placeholder)
|
||||||
|
|
||||||
@ -201,9 +200,9 @@ class KF8Writer(object):
|
|||||||
aid = aidbase + j
|
aid = aidbase + j
|
||||||
tag.attrib['aid'] = to_base(aid, base=32)
|
tag.attrib['aid'] = to_base(aid, base=32)
|
||||||
if tag.tag == XHTML('body'):
|
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:
|
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
|
j += 1
|
||||||
|
|
||||||
|
@ -341,7 +341,12 @@ class Chunker(object):
|
|||||||
for match in re.finditer(br'<[^>]+? aid=[\'"]([A-Z0-9]+)[\'"]', text):
|
for match in re.finditer(br'<[^>]+? aid=[\'"]([A-Z0-9]+)[\'"]', text):
|
||||||
aid_map[match.group(1)] = match.start()
|
aid_map[match.group(1)] = match.start()
|
||||||
self.aid_offset_map = aid_map
|
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()}
|
self.placeholder_map.iteritems()}
|
||||||
|
|
||||||
# Now update the links
|
# Now update the links
|
||||||
@ -349,7 +354,7 @@ class Chunker(object):
|
|||||||
raw = match.group()
|
raw = match.group()
|
||||||
pl = match.group(1)
|
pl = match.group(1)
|
||||||
try:
|
try:
|
||||||
return raw[:-10] + placeholder_map[pl]
|
return raw[:-15] + placeholder_map[pl]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
return raw
|
return raw
|
||||||
|
Loading…
x
Reference in New Issue
Block a user