From fa758e1b2cf1a30fb7a9b676d7148abd1c599cca Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 5 Jan 2007 22:45:24 +0000 Subject: [PATCH] Added reading of classification and category from lrf file when book is added to library. --- src/libprs500/gui/database.py | 15 +++++++++++---- src/libprs500/lrf/meta.py | 4 +++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/libprs500/gui/database.py b/src/libprs500/gui/database.py index 209da28f58..bc3d04f5a4 100644 --- a/src/libprs500/gui/database.py +++ b/src/libprs500/gui/database.py @@ -57,18 +57,25 @@ class LibraryDatabase(object): title, author, publisher, size, cover = os.path.basename(_file), \ None, None, os.stat(_file)[ST_SIZE], None ext = title[title.rfind(".")+1:].lower() if title.find(".") > -1 else None - comments = None + comments, tags = None, None if ext == "lrf": lrf = LRFMetaFile(open(_file, "r+b")) title, author, cover, publisher = lrf.title, lrf.author.strip(), \ lrf.thumbnail, lrf.publisher.strip() - if "unknown" in publisher.lower(): + if "unknown" in publisher.lower() or 'some publisher' in publisher.lower(): publisher = None if "unknown" in author.lower(): author = None comments = lrf.free_text if not comments: comments = None + classification, category = lrf.classification, lrf.category + if 'unknown' in classification.lower(): + classification = '' + if 'unknown' in category.lower(): + category = '' + if classification or category: + tags = ", ".join((classification, category)) data = open(_file).read() usize = len(data) data = compress(data) @@ -79,7 +86,7 @@ class LibraryDatabase(object): self.con.execute("insert into books_meta (title, authors, publisher, "+\ "size, tags, comments, rating) values "+\ "(?,?,?,?,?,?,?)", \ - (title, author, publisher, size, None, comments, None)) + (title, author, publisher, size, tags, comments, None)) _id = self.con.execute("select max(id) from books_meta").next()[0] self.con.execute("insert into books_data values (?,?,?,?)", \ (_id, ext, usize, sqlite.Binary(data))) @@ -166,7 +173,7 @@ class LibraryDatabase(object): try: lrf = LRFMetaFile(s) lrf.author = metadata["authors"] - lrf.title = metadata["title"] + lrf.title = metadata["title"] # Not sure if I want to override the lrf freetext field # with a possibly null value #lrf.free_text = metadata["comments"] diff --git a/src/libprs500/lrf/meta.py b/src/libprs500/lrf/meta.py index 61b051ed2d..6f4fd0c182 100644 --- a/src/libprs500/lrf/meta.py +++ b/src/libprs500/lrf/meta.py @@ -389,7 +389,9 @@ class LRFMetaFile(object): break if offset >= (2**8)**4: # New offset is larger than a DWORD, so leave - # offset unchanged + # offset unchanged. I'm assuming offset is an offset from + # the previous object, otherwise this would impose a ~ 4MB limit + # on LRF files. offset -= delta self.pack(offset, fmt=DWORD, start=pos) try: