From ae02ce25becf72aa7bf439c1a7238ef6c679ea88 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 6 Aug 2011 11:07:34 -0600 Subject: [PATCH 1/5] Get Books: Always read metadata from the file contents, ignoring the setting in Preferences->Adding books --- src/calibre/gui2/ebook_download.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/ebook_download.py b/src/calibre/gui2/ebook_download.py index 2fea67b9f0..d39ea47e52 100644 --- a/src/calibre/gui2/ebook_download.py +++ b/src/calibre/gui2/ebook_download.py @@ -66,8 +66,8 @@ class EbookDownload(object): raise Exception(_('Not a support ebook format.')) from calibre.ebooks.metadata.meta import get_metadata - with open(filename) as f: - mi = get_metadata(f, ext) + with open(filename, 'rb') as f: + mi = get_metadata(f, ext, force_read_metadata=True) mi.tags.extend(tags) id = gui.library_view.model().db.create_book_entry(mi) From 76200fa4cd8639ab864b9b246f58a69b4282bb22 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 6 Aug 2011 11:13:26 -0600 Subject: [PATCH 2/5] Fix #822004 (WSJ News Fetch Script is picking up buttons in article) --- recipes/wsj.recipe | 1 + recipes/wsj_free.recipe | 1 + 2 files changed, 2 insertions(+) diff --git a/recipes/wsj.recipe b/recipes/wsj.recipe index a3bc041d25..7a044aa5a7 100644 --- a/recipes/wsj.recipe +++ b/recipes/wsj.recipe @@ -38,6 +38,7 @@ class WallStreetJournal(BasicNewsRecipe): dict(id=["articleTabs_tab_article", "articleTabs_tab_comments", "articleTabs_tab_interactive","articleTabs_tab_video","articleTabs_tab_map","articleTabs_tab_slideshow","articleTabs_tab_quotes","articleTabs_tab_document"]), {'class':['footer_columns','network','insetCol3wide','interactive','video','slideshow','map','insettip','insetClose','more_in', "insetContent", 'articleTools_bottom', 'aTools', "tooltip", "adSummary", "nav-inline"]}, dict(rel='shortcut icon'), + {'class':lambda x: x and 'sTools' in x}, ] remove_tags_after = [dict(id="article_story_body"), {'class':"article story"},] diff --git a/recipes/wsj_free.recipe b/recipes/wsj_free.recipe index dd42fb5540..331a393c03 100644 --- a/recipes/wsj_free.recipe +++ b/recipes/wsj_free.recipe @@ -40,6 +40,7 @@ class WallStreetJournal(BasicNewsRecipe): dict(name='div', attrs={'data-flash-settings':True}), {'class':['insetContent embedType-interactive insetCol3wide','insetCol6wide','insettipUnit']}, dict(rel='shortcut icon'), + {'class':lambda x: x and 'sTools' in x}, ] remove_tags_after = [dict(id="article_story_body"), {'class':"article story"},] From 6b7d51e282bcb34665391447a1459568de0ab7c5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Aug 2011 10:25:22 -0600 Subject: [PATCH 3/5] Fix regression in 0.8.13 that caused incorrect title/author for downloaded news if you turned off reading metadata from file contents in Preferences->Adding books --- src/calibre/ebooks/metadata/meta.py | 6 +----- src/calibre/library/database2.py | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index b0c43a8182..3f3cc3e142 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -67,10 +67,6 @@ def _metadata_from_formats(formats, force_read_metadata=False, pattern=None): return mi -def is_recipe(filename): - return filename.startswith('calibre') and \ - filename.rpartition('.')[0].endswith('_recipe_out') - def get_metadata(stream, stream_type='lrf', use_libprs_metadata=False, force_read_metadata=False, pattern=None): pos = 0 @@ -106,7 +102,7 @@ def _get_metadata(stream, stream_type, use_libprs_metadata, mi = MetaInformation(None, None) name = os.path.basename(getattr(stream, 'name', '')) base = metadata_from_filename(name, pat=pattern) - if force_read_metadata or is_recipe(name) or prefs['read_file_metadata']: + if force_read_metadata or prefs['read_file_metadata']: mi = get_file_type_metadata(stream, stream_type) if base.title == os.path.splitext(name)[0] and \ base.is_null('authors') and base.is_null('isbn'): diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index fff2d2189c..3471d93332 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -3024,7 +3024,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): format = os.path.splitext(path)[1][1:].lower() stream = path if hasattr(path, 'read') else lopen(path, 'rb') stream.seek(0) - mi = get_metadata(stream, format, use_libprs_metadata=False) + mi = get_metadata(stream, format, use_libprs_metadata=False, + force_read_metadata=True) stream.seek(0) if mi.series_index is None: mi.series_index = self.get_next_series_num_for(mi.series) From b270e3a69f71298b2dd8c1a08b703fd7a7f6b58f Mon Sep 17 00:00:00 2001 From: John Schember Date: Sun, 7 Aug 2011 13:53:04 -0400 Subject: [PATCH 4/5] Store: Fix bug #822359, typo in open books store. --- src/calibre/gui2/store/stores/open_books_plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/store/stores/open_books_plugin.py b/src/calibre/gui2/store/stores/open_books_plugin.py index 2e6c438d9d..73bfda26da 100644 --- a/src/calibre/gui2/store/stores/open_books_plugin.py +++ b/src/calibre/gui2/store/stores/open_books_plugin.py @@ -28,7 +28,7 @@ class OpenBooksStore(BasicStoreConfig, StorePlugin): if external or self.config.get('open_external', False): open_url(QUrl(url_slash_cleaner(detail_item if detail_item else url))) else: - d = WebStoreDialog(self.gui, self.url, parent, detail_item) + d = WebStoreDialog(self.gui, url, parent, detail_item) d.setWindowTitle(self.name) d.set_tags(self.config.get('tags', '')) d.exec_() From 8408f0119f4294378e3c9d3c434f5fdbff8f3c04 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 7 Aug 2011 11:54:48 -0600 Subject: [PATCH 5/5] Fix #822359 (AttributeError:'OpenBooksStore' object has no attribute 'url' Traceback (most recent call last): File "/usr/lib/calibre/calibre/gui2/actions/store.py", line 126, in open_store store_plugin.open(self.gui) File "/usr/lib/calibre/calibre/gui2/store/stores/open_books_plugin.py", line 31, in open d = WebStoreDialog(self.gui, self.url, parent, detail_item) AttributeError: 'OpenBooksStore' object has no attribute 'url' [with fix]) --- src/calibre/gui2/store/stores/open_books_plugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/store/stores/open_books_plugin.py b/src/calibre/gui2/store/stores/open_books_plugin.py index 2e6c438d9d..99b68656e9 100644 --- a/src/calibre/gui2/store/stores/open_books_plugin.py +++ b/src/calibre/gui2/store/stores/open_books_plugin.py @@ -28,7 +28,7 @@ class OpenBooksStore(BasicStoreConfig, StorePlugin): if external or self.config.get('open_external', False): open_url(QUrl(url_slash_cleaner(detail_item if detail_item else url))) else: - d = WebStoreDialog(self.gui, self.url, parent, detail_item) + d = WebStoreDialog(self.gui, url, parent, detail_item) d.setWindowTitle(self.name) d.set_tags(self.config.get('tags', '')) d.exec_() @@ -44,7 +44,7 @@ class OpenBooksStore(BasicStoreConfig, StorePlugin): for data in doc.xpath('//ul[@id="object_list"]//li'): if counter <= 0: break - + id = ''.join(data.xpath('.//div[@class="links"]/a[1]/@href')) id = id.strip() if not id: