View Single Post
Old 01-18-2019, 02:43 AM   #10
mergen3107
Wizard
mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.mergen3107 ought to be getting tired of karma fortunes by now.
 
mergen3107's Avatar
 
Posts: 1,508
Karma: 5000046
Join Date: Feb 2012
Location: Cape Canaveral
Device: Kindle Scribe
Some updates on my investigation.

1) I used showlog -f to see what is going on with the opened book. I was able to get something like this:
Code:
...
190113:223323 cvm[15492]: I ReaderInfoLog:BookInformation:book asin=f3203e96-c039-416b-aa47-9082f48637e3,file size=2200211,file last mod date=2018-11-18 18.56.26 -0500,content type=ebook,language=en/en,length=MobiPosition_ 1530687,access=2019-01-13 22.28.24 -0500,last read position=MobiSerializedPosition_ 968606 968607,isEncrypted=false,isSample=false,isNew=false,isTTSMetdataPresent=false,isTTSMetadataAllowed=true,fileExtn=mobi:
...
These length=MobiPosition_ 1530687 and last read position=MobiSerializedPosition_ 968606 968607 are definitely within my interest, however only the former appears in the cc.db . These values from showlog and cc.db match: 'length' and 'p_contentSize'; calculated 'last read position'/'length' and 'p_percentFinished' (about 63%).

2) @NiLuJe,
Thank you very much!
I tried your part of code from 'cover'extract' about extracting sqlite entries into variable and it works. So now I can tweak my needs of fetching these pieces of data from the last opened book. Particularly I only need p_contentSize, p_percentFinished types of data.

One problem I found though is that cc.db seems to be updated upon each book close, not every page turn. So now I have to think about how to properly determine current position to redraw it.

3) I used KindleUnpack plugin in Calibre to see mobi7 and mobi8 (azw3) files' contents.
For mobi7 toc.ncx file easily shows file position of each TOC entry:
Code:
...
<navMap>
    <navPoint id="np_1" playOrder="1">
    <navLabel>
    <text>Title Page</text>
    </navLabel>
    <content src="book.html#filepos241"/>
    </navPoint>
    <navPoint id="np_2" playOrder="2">
    <navLabel>
    <text>Copyright</text>
    </navLabel>
    <content src="book.html#filepos816"/>
    </navPoint>
    <navPoint id="np_3" playOrder="3">
...
As for mobi8, however, it is a little more tricky! toc.ncx does not reveal entries' position, but only tocref### references. Surprisingly for me, mobi8 files resemble epub files a lot, which also rely only on xhtml content size.
However, %book/Text/ folder contains separate files, each of which represents just another TOC entry (but it doesn't differentiate of which level).

So I am thinking about two things:
1) I should give up on different TOC level indications on progress bar;
2) I can calculate very rough position of these TOC entries based on ... cumulative file sizes with respect to total file size of this folder I tried it manually by hand on Victor Hugo's 'Les Miserables' (about 2500 print pages) and it works within +/- 3%

I'll try to write a little PC script (when I find enough free time) to pre-process mobi7 and mobi8 files to extract TOC entries' positions.

Last edited by mergen3107; 01-18-2019 at 03:07 AM.
mergen3107 is offline   Reply With Quote