Register Guidelines E-Books Search Today's Posts Mark Forums Read

Go Back   MobileRead Forums > E-Book Readers > More E-Book Readers > iRex > iRex Developer's Corner

Notices

Reply
 
Thread Tools Search this Thread
Old 07-02-2011, 07:13 AM   #61
Mackx
Guru
Mackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to behold
 
Posts: 999
Karma: 19985
Join Date: Dec 2008
Location: Netherlands
Device: iRex DR1000S
Quote:
Originally Posted by Iņigo View Post
that's an interesting feature some of us have been thinking on too, but it's not so easy to implement.
As you indicated I implemented something like it in dr1000-hackx (although that version is not yet published) it reads .drinfo files that contains metadata and a reference to an image. The current implementation is mainly to see how it can be done, my next step was indeed to link it with Calibre.
@Mr. X.: can you point me to some documents about the format of the .metadata and .cover files from Calibre?
Quote:
Originally Posted by Iņigo View Post
For pdf and epub files, UDS will overwrite every changed field if they don't match with what it reads from the books metadata. There is a hack in Mackx's DR1000 hack to block UDS writing but it's not present in DR800+ yet.

Adding many .metadata and .cover files will pollute the file system with may new files. Also .cover files will be inserted in global.db as valid documents.
Since mdbindex needs to be changed, the .metadata and .cover files can easily be excluded. (Furthermore only files with 'known' extension will be added. since .cover is not an extension linked to an application it will also not be added to global.db)
W.r.t. the extra files, mdbindex can be changed to remove the extra files once they are processed. (although this might give sync-problems with Calibre).
Quote:
Originally Posted by Iņigo View Post
The perfect solution would be to set the proper metadata outside DR (this is not valid for covers), and then let mdbindex do its work.
Poppler library (the pdf handling library used in Linux) has an experimental branch with editing of metadata, but it hasn't released yet.
The problem that I have with this is that some documents, mainly magazines, do not have correct metadata. So the extracted metadata is useless, that is why I added the extra functionality to change the metadata (and block UDS from changing it). Or do you want to use poppler to correct the metadata and let UDS extract it?
Mackx is offline   Reply With Quote
Old 07-02-2011, 07:18 AM   #62
Mackx
Guru
Mackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to behold
 
Posts: 999
Karma: 19985
Join Date: Dec 2008
Location: Netherlands
Device: iRex DR1000S
Quote:
Originally Posted by Iņigo View Post
Hi,

I've been some days away for work reasons.

Anyway tonight I've rewritten some parts of the patch.
Now the covers are stored as <sd_card>/System/.covers/size/xx/file_id.png
where:
size = thumbnail size: "small" or "medium"
xx = file_id % 256, in hexadecimal
file_id = book identifier index inside global.db

This way we could provide a two way conversion between "classic" format (with thumbnails inside the db) and new format.

Now I have to complete the code to handle file deletion and finish the migration tools.

Best regards,
Iņigo
That is a brilliant move, using the unique file_id from global.db. I pushed a solution based on your previous code to BitBucket a few days ago. But this will make it more easy I guess.
Mackx is offline   Reply With Quote
Advert
Old 07-02-2011, 07:24 AM   #63
Iņigo
Guru
Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.
 
Posts: 730
Karma: 72743
Join Date: Feb 2008
Location: Here or there
Device: iRex iLiad, iRex DR800S. K4NT. Kobo Aura, Aura One, Libra 2.
Quote:
Originally Posted by Mackx View Post
That is a brilliant move, using the unique file_id from global.db.
This was my first idea, but main problem was that model doesn't know about files id. Thus I used the md5 hash for path/filename. But this is only on-way.
Adding id to model required changing some of the db queries and I wasn't sure enough it wouldn't break other parts of the CTB code.

Quote:
Originally Posted by Mackx View Post
I pushed a solution based on your previous code to BitBucket a few days ago. But this will make it more easy I guess.
Now after some different tests I've extended the public API of libermetadb with a new function:
Code:
gint64 ermetadb_get_file_id(erMetadb thiz, const gchar* filename, const gchar* dirpath);
As it's executed a few times for each page only, it's fast enough.


Wait a couple of days, I won't be able to work on it this afternoon, but I'm close to finish the code to delete files from ctb. I think that's the last work to be done on the DR code.
Anyway you can look at the last patch I published in this thread. It lacks delete files handling and some minor last-time fixes, but the other parts are finished.
I expect to push the final version to BB tomorrow.

Last edited by Iņigo; 07-02-2011 at 07:31 AM.
Iņigo is offline   Reply With Quote
Old 07-02-2011, 07:41 AM   #64
Mackx
Guru
Mackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to beholdMackx is a splendid one to behold
 
Posts: 999
Karma: 19985
Join Date: Dec 2008
Location: Netherlands
Device: iRex DR1000S
Quote:
Originally Posted by Iņigo View Post
This was my first idea, but main problem was that model doesn't know about files id. Thus I used the md5 hash for path/filename. But this is only on-way.
Adding id to model required changing some of the db queries and I wasn't sure enough it wouldn't break other parts of the CTB code.



Now after some different tests I've extended the public API of libermetadb with a new function:
Code:
gint64 ermetadb_get_file_id(erMetadb thiz, const gchar* filename, const gchar* dirpath);
As it's executed a few times for each page only, it's fast enough.


Wait a couple of days, I won't be able to work on it this afternoon, but I'm close to finish the code to delete files from ctb. I think that's the last work to be done on the DR code.
Anyway you can look at the last patch I published in this thread. It lacks delete files handling and some minor last-time fixes, but the other parts are finished.
I expect to push the final version to BB tomorrow.
Deleting from mdbindex is not the most challenging (it is always per file), but deleting a complete folder from the UI is. I had to add an extra query to get the involved files and delete their icons one-by-one.
Mackx is offline   Reply With Quote
Old 07-02-2011, 08:32 AM   #65
Iņigo
Guru
Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.
 
Posts: 730
Karma: 72743
Join Date: Feb 2008
Location: Here or there
Device: iRex iLiad, iRex DR800S. K4NT. Kobo Aura, Aura One, Libra 2.
Quote:
Originally Posted by Mackx View Post
Deleting from mdbindex is not the most challenging (it is always per file), but deleting a complete folder from the UI is. I had to add an extra query to get the involved files and delete their icons one-by-one.
I've completed the code to delete covers file when a file is marked as UKNOWN in mdbindex, now I'm working in the code that gets all the files under a directory the user is deleting from CTB.
What I'm doing is:
- run "find /path"
- parse the lines building a list of file
- split in dirname, basename
- get file_id
- remove covers files

As I've said, I'll finish it tomorrow as I have to go out in half an hour, and then push to BB.
Iņigo is offline   Reply With Quote
Advert
Old 07-02-2011, 10:35 AM   #66
Mr. X
Connoisseur
Mr. X is on a distinguished road
 
Posts: 68
Karma: 64
Join Date: Mar 2010
Location: Philadelphia
Device: iRex DR800SG
Quote:
Originally Posted by Iņigo View Post
For pdf and epub files, UDS will overwrite every changed field if they don't match with what it reads from the books metadata. There is a hack in Mackx's DR1000 hack to block UDS writing but it's not present in DR800+ yet.
Ah, didn't realize that... Somehow I had it in my mind that it was the reverse, and that in the past I had gone in to an already indexed pdf to set an author and that it hadn't been reindexed until I deleted it and then copied it back... It's mostly encrypted PDFs where the metadata can't be changed without corrupting the pdf where I can't just alter the pdf/epub before copying (Calibre does this itself usually)

Quote:
Originally Posted by Iņigo View Post
Adding many .metadata and .cover files will pollute the file system with may new files. Also .cover files will be inserted in global.db as valid documents.
I remember there being a blacklist of file extensions hard coded in to the indexer that get hidden... That's why I was thinking .cover even though it would really be a .png or .jpg, so that it wouldn't break indexing images...

If you put all thousand of your books in a single directory the 3x number of files would probably be trouble on FAT32, but calibre puts them in /Books/Author/ (and I organized my books similarly before calibre came along) which limits the number of files in any single directory.
Mr. X is offline   Reply With Quote
Old 07-02-2011, 10:40 AM   #67
Mr. X
Connoisseur
Mr. X is on a distinguished road
 
Posts: 68
Karma: 64
Join Date: Mar 2010
Location: Philadelphia
Device: iRex DR800SG
Quote:
Originally Posted by Mackx View Post
As you indicated I implemented something like it in dr1000-hackx (although that version is not yet published) it reads .drinfo files that contains metadata and a reference to an image. The current implementation is mainly to see how it can be done, my next step was indeed to link it with Calibre.
@Mr. X.: can you point me to some documents about the format of the .metadata and .cover files from Calibre?
They don't exist currently. For the nook color it resizes the image and saves it as the same name as the book but with .jpg instead of .epub/.pdf. It includes an embedded ImageMagick library so resizing to the small and medium dimensions and converting to png (I think that's what were in the SQL blobs?) are possible. For author/title metadata there is the xml opf file, but those are huge and overkill and not included in any of the existing device drivers. The strings themselves are, so I was just going to open the file and write the author string, a newline, the title string, newline, EOF. Maybe Author= and Title= if you want to get fancy...

Quote:
Originally Posted by Mackx View Post
Since mdbindex needs to be changed, the .metadata and .cover files can easily be excluded. (Furthermore only files with 'known' extension will be added. since .cover is not an extension linked to an application it will also not be added to global.db)
W.r.t. the extra files, mdbindex can be changed to remove the extra files once they are processed. (although this might give sync-problems with Calibre).
aha. my memory wasn't inventing things. Yeah, cleaning up the files afterward wouldn't really break anything since Calibre doesn't really 'synch' devices yet except maybe the Sony's... For everything else things only happen on "Send to device" the first time. And if it did synch, writing a new cover/metadata file would be a good way to indicate to the indexer that global.db needs updating too

Quote:
Originally Posted by Mackx View Post
The problem that I have with this is that some documents, mainly magazines, do not have correct metadata. So the extracted metadata is useless, that is why I added the extra functionality to change the metadata (and block UDS from changing it). Or do you want to use poppler to correct the metadata and let UDS extract it?
Yep, it's mostly my collection of magazines that have print/copy/etc restrictions on them that can't be changed. An on-device metadata editor would be an improvement over right now but still an extra step since Calibre knows what the real info is
Mr. X is offline   Reply With Quote
Old 07-02-2011, 05:25 PM   #68
Iņigo
Guru
Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.
 
Posts: 730
Karma: 72743
Join Date: Feb 2008
Location: Here or there
Device: iRex iLiad, iRex DR800S. K4NT. Kobo Aura, Aura One, Libra 2.
Ok, code is now fully functional and finished.
You can find it in bitbucket repository, revision 55.

Next steps are:
- finish migration tool to work in both directions: fs2db and db2fs
- adapt "icons" tool to handle in-filesystem thumbnails
- write some documentation
- adapt DR800+ installer to run migration tool, both for installation and also for uninstallation
- release a new version of DR800+

Iņigo
Iņigo is offline   Reply With Quote
Old 07-03-2011, 02:59 AM   #69
yuri_b
Connoisseur
yuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enough
 
Posts: 71
Karma: 592
Join Date: Aug 2010
Device: irex dr800sg DR1000S
Quote:
Originally Posted by Iņigo View Post
Ok, code is now fully functional and finished.
- release a new version of DR800+

Iņigo
Good luck.

One thing: I use an ereader a lot and it happens when a battery stop working in middle of page turn. Usually it happens in the middle of page turn. In such case a data base going to be corrupted and you have to delete it and recreate all thumbnails. A lot of time You know.
My solution is - to keep a backup of database on the same place, so every time I add/delete files from SD-card I also copy a global.db to global_.db.
And if global.db is corrupted I use a working version of global.db.

The problem with your solution: it is hard to backup/restore a database if it not a one big file.

I'd like an option to use/or not to use different thumbnails handling.

Sincerely
Yura
yuri_b is offline   Reply With Quote
Old 07-03-2011, 03:24 AM   #70
yuri_b
Connoisseur
yuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enoughyuri_b will become famous soon enough
 
Posts: 71
Karma: 592
Join Date: Aug 2010
Device: irex dr800sg DR1000S
Additional problem, we almost forgot about, is indexing.

How it works:
1) At start of indexing it select from data base all files on the SD-card and create linked list of them(Huge memory load).
2) Then it creates linked list of all files on SD-card (Huge memory load)
3) Then for each file on disk it looks for (very slow) corresponding file on database list.
4) Compare it and mark if they different/missed/new
5) For every entry in data base list it apply changes if any.

So to speed up indexing, one should
1) Limit count of items in memory. Limit memory load.
2) speed up search items in database list. IMHO it's useless to select all items from data base and then search it this list, database does this faster.
3) Limit count of file items in memory: limit memory load from file list.


Sincerely
Yura
yuri_b is offline   Reply With Quote
Old 07-03-2011, 03:54 AM   #71
Iņigo
Guru
Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.
 
Posts: 730
Karma: 72743
Join Date: Feb 2008
Location: Here or there
Device: iRex iLiad, iRex DR800S. K4NT. Kobo Aura, Aura One, Libra 2.
Quote:
Originally Posted by yuri_b View Post
Good luck.

One thing: I use an ereader a lot and it happens when a battery stop working in middle of page turn. Usually it happens in the middle of page turn. In such case a data base going to be corrupted and you have to delete it and recreate all thumbnails. A lot of time You know.
My solution is - to keep a backup of database on the same place, so every time I add/delete files from SD-card I also copy a global.db to global_.db.
And if global.db is corrupted I use a working version of global.db.

The problem with your solution: it is hard to backup/restore a database if it not a one big file.
I've never seen a broken global.db, and I also use my DR a lot.
Anyway, it's not a big issue either. As you make a backup of global.db, you can make a backup of System/.covers directory as well.

Quote:
Originally Posted by yuri_b View Post
I'd like an option to use/or not to use different thumbnails handling.
I considered this, but don't think it's feasible.
A runtime option would make code too complex even with current changes only.
And providing two sets of binaries is very time consuming for me.
Anyway I've included a compilation flag in the code (DR800_ENABLE_NODB_COVERS in ermetadb and ctb) to enable or disable it so anyone could build their own binaries if they want.

Iņigo
Iņigo is offline   Reply With Quote
Old 07-03-2011, 03:58 AM   #72
Iņigo
Guru
Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.
 
Posts: 730
Karma: 72743
Join Date: Feb 2008
Location: Here or there
Device: iRex iLiad, iRex DR800S. K4NT. Kobo Aura, Aura One, Libra 2.
Quote:
Originally Posted by yuri_b View Post
Additional problem, we almost forgot about, is indexing.
[...]
I'll look at your changes for next version, once we get more feedback about the new changes and the speed improvements.
Iņigo is offline   Reply With Quote
Old 07-03-2011, 04:41 AM   #73
fekhner
Addict
fekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animalsfekhner is kind to children and small, furry animals
 
Posts: 326
Karma: 6908
Join Date: Sep 2010
Device: DRs, EE, ipad/iphone, Helix
Quote:
Originally Posted by Mackx View Post
. The current implementation is mainly to see how it can be done, my next step was indeed to link it with Calibre.
a better integration with calibre sounds great to me as it is what I use on my computer to manage books as well
fekhner is offline   Reply With Quote
Old 07-04-2011, 12:26 PM   #74
Iņigo
Guru
Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.Iņigo did not drink the Kool Aid.
 
Posts: 730
Karma: 72743
Join Date: Feb 2008
Location: Here or there
Device: iRex iLiad, iRex DR800S. K4NT. Kobo Aura, Aura One, Libra 2.
In case someone missed it, I've just released v4 of DR800+ with the feature I've been working and commenting here: store thumbnails in file system instead of in global.db.

It's much faster with many books (> 500-1000) than the original firmware.
Iņigo is offline   Reply With Quote
Old 07-04-2011, 05:30 PM   #75
Mr. X
Connoisseur
Mr. X is on a distinguished road
 
Posts: 68
Karma: 64
Join Date: Mar 2010
Location: Philadelphia
Device: iRex DR800SG
Quote:
Originally Posted by Mackx View Post
@Mr. X.: can you point me to some documents about the format of the .metadata and .cover files from Calibre?
Actually, it looks like pretty much the entire .opf file is already copied by Calibre, just as JSON instead of XML and put in a single file (metadata.calibre at the root of the memory card). Each book has an entry like so:

Code:
  {
    "rating": 0, 
    "author_sort": "Lessig, Lawrence", 
    "application_id": 238, 
    "pubdate": "2006-02-15T05:00:00+00:00", 
    "series": null, 
    "author_sort_map": {
      "Lawrence Lessig": "Lessig, Lawrence"
    }, 
    "publication_type": null, 
    "size": 4334892, 
    "author_link_map": {
      "Lawrence Lessig": ""
    }, 
    "uuid": "1edb160e-2306-45a7-8fdb-e204b5213a33", 
    "title": "Code 2.0", 
    "user_categories": {}, 
    "comments": "<p class=\"description\">SUMMARY:<br>There\u2019s a common belief that cyberspace cannot be regulated-that it is, in its very essence, immune from the government\u2019s (or anyone else\u2019s) control. Code, first published in 2000, argues that this belief is wrong. It is not in the nature of cyberspace to be unregulable; cyberspace has no \u201cnature.\u201d It only has code-the software and hardware that make cyberspace what it is. That code can create a place of freedom-as the original architecture of the Net did-or a place of oppressive control. Under the influence of commerce, cyberspace is becoming a highly regulable space, where behavior is much more tightly controlled than in real space. But that\u2019s not inevitable either. We can-we must-choose what kind of cyberspace we want and what freedoms we will guarantee. These choices are all about architecture: about what kind of code will govern cyberspace, and who will control it. In this realm, code is the most significant form of law, and it is up to lawyers, policymakers, and especially citizens to decide what values that code embodies. Since its original publication, this seminal book has earned the status of a minor classic. This second edition, or Version 2.0, has been prepared through the author\u2019s wiki, a web site that allows readers to edit the text, making this the first reader-edited revision of a popular book.</p>", 
    "languages": [], 
    "user_metadata": {}, 
    "thumbnail": [
      45, 
      68, 
      "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"
    ], 
    "db_id": null, 
    "tags": [
      "_type:Book"
    ], 
    "timestamp": "2010-02-23T05:00:00+00:00", 
    "mime": null, 
    "authors": [
      "Lawrence Lessig"
    ], 
    "publisher": "New York : Basic Books, c2006.", 
    "series_index": null, 
    "lpath": "Books/Lessig, Lawrence/Code 2.0 - Lawrence Lessig.pdf", 
    "language": "und", 
    "rights": null, 
    "title_sort": "Code 2.0", 
    "cover": null, 
    "book_producer": null, 
    "identifiers": {
      "isbn": "9780465039142"
    }
  },
The thumbnail is a base64 encoded jpg, resized to a height of 68 pixels. Not sure how bad those would look resizing them up to 120px for the cover view (that's what uses the medium version, right?), or if there is base64 decoding support on the device already (presumably jpg to png support is there already, although maybe it relies on uds for that part...).

But the nook driver provides an example of how to put a higher resolution cover (or pair of covers) in the filesystem, and you could move those to .covers when indexing as you suggested if pulling the thumbnail from metadata.calibre turns out not to work or look good.
Mr. X is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Mobiperl Mobiperl - Perl tools for handling MobiPocket files tompe Kindle Formats 890 01-17-2021 06:16 PM
Large number of books on memory card pwalker8 Sony Reader 8 03-24-2009 02:20 PM
huge pdf files on iliad yolle iRex 7 08-23-2008 10:59 AM
Fictionwise Handling Fee Against Credit Card Terms of Service? Gideon News 9 08-15-2008 02:13 PM
Huge RTF files after conversion TheMadBrewer Sony Reader 2 01-01-2007 02:55 AM


All times are GMT -4. The time now is 02:08 AM.


MobileRead.com is a privately owned, operated and funded community.