From 8d23a63a46783283d3cb67c93ee7e9611ecbcff2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 17 Mar 2012 21:35:59 +0530 Subject: [PATCH] ... --- src/calibre/ebooks/mobi/reader/markup.py | 3 ++- src/calibre/ebooks/mobi/reader/mobi8.py | 10 ++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/calibre/ebooks/mobi/reader/markup.py b/src/calibre/ebooks/mobi/reader/markup.py index 26583cf30c..721de28ff4 100644 --- a/src/calibre/ebooks/mobi/reader/markup.py +++ b/src/calibre/ebooks/mobi/reader/markup.py @@ -33,7 +33,8 @@ def update_internal_links(mobi8_reader): for m in posfid_index_pattern.finditer(tag): posfid = m.group(1) offset = m.group(2) - filename, idtag = mr.get_id_tag_by_pos_fid(posfid, offset) + filename, idtag = mr.get_id_tag_by_pos_fid(int(posfid, 32), + int(offset, 32)) suffix = (b'#' + idtag) if idtag else b'' replacement = filename.encode(mr.header.codec) + suffix tag = posfid_index_pattern.sub(replacement, tag, 1) diff --git a/src/calibre/ebooks/mobi/reader/mobi8.py b/src/calibre/ebooks/mobi/reader/mobi8.py index 1e4d63d72e..5105e20f0b 100644 --- a/src/calibre/ebooks/mobi/reader/mobi8.py +++ b/src/calibre/ebooks/mobi/reader/mobi8.py @@ -230,11 +230,10 @@ class Mobi8Reader(object): def get_id_tag_by_pos_fid(self, posfid, offset): # first convert kindle:pos:fid and offset info to position in file - row = int(posfid, 32) - off = int(offset, 32) - [insertpos, idtext, filenum, seqnm, startpos, length] = self.elems[row] - pos = insertpos + off - fname = self.get_file_info(pos).filename + insertpos, idtext, filenum, seqnm, startpos, length = self.elems[posfid] + pos = insertpos + offset + fi = self.get_file_info(pos) + fname = fi.filename # an existing "id=" must exist in original xhtml otherwise it would not # have worked for linking. Amazon seems to have added its own # additional "aid=" inside tags whose contents seem to represent some @@ -318,7 +317,6 @@ class Mobi8Reader(object): for entry in index_entries: pos = entry['pos'] fi = self.get_file_info(pos) - #print (11111111, fi, entry['pos_fid']) if fi.filename is None: raise ValueError('Index entry has invalid pos: %d'%pos) idtag = self.get_id_tag(pos).decode(self.header.codec)