From aee791c4a07f1e1e1fa4b74a3ebdd4c7c66fd9ae Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 09:09:44 -0700 Subject: [PATCH 1/9] Thai Post Daily by Chotechai. Fixes #9239 (Thai Post Daily Newspaper recipe) --- resources/recipes/thai_post_daily.recipe | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 resources/recipes/thai_post_daily.recipe diff --git a/resources/recipes/thai_post_daily.recipe b/resources/recipes/thai_post_daily.recipe new file mode 100644 index 0000000000..9cd943e593 --- /dev/null +++ b/resources/recipes/thai_post_daily.recipe @@ -0,0 +1,18 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1299054026(BasicNewsRecipe): + title = u'Thai Post Daily' + __author__ = 'Chotechai P.' + language = 'th' + oldest_article = 7 + max_articles_per_feed = 100 + + feeds = [(u'\u0e02\u0e48\u0e32\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e19\u0e36\u0e48\u0e07', u'http://thaipost.net/taxonomy/term/1/all/feed'), (u'\u0e1a\u0e17\u0e1a\u0e23\u0e23\u0e13\u0e32\u0e18\u0e34\u0e01\u0e32\u0e23', u'http://thaipost.net/taxonomy/term/11/all/feed'), (u'\u0e40\u0e1b\u0e25\u0e27 \u0e2a\u0e35\u0e40\u0e07\u0e34\u0e19', u'http://thaipost.net/taxonomy/term/2/all/feed'), (u'\u0e2a\u0e20\u0e32\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e0a\u0e19', u'http://thaipost.net/taxonomy/term/3/all/feed'), (u'\u0e16\u0e39\u0e01\u0e17\u0e38\u0e01\u0e02\u0e49\u0e2d', u'http://thaipost.net/taxonomy/term/4/all/feed'), (u'\u0e01\u0e32\u0e23\u0e40\u0e21\u0e37\u0e2d\u0e07', u'http://thaipost.net/taxonomy/term/5/all/feed'), (u'\u0e17\u0e48\u0e32\u0e19\u0e02\u0e38\u0e19\u0e19\u0e49\u0e2d\u0e22', u'http://thaipost.net/taxonomy/term/12/all/feed'), (u'\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e34\u0e40\u0e28\u0e29', u'http://thaipost.net/taxonomy/term/66/all/feed'), (u'\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e1e\u0e34\u0e40\u0e28\u0e29', u'http://thaipost.net/taxonomy/term/67/all/feed'), (u'\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e2b\u0e19\u0e49\u0e32 4', u'http://thaipost.net/taxonomy/term/13/all/feed'), (u'\u0e40\u0e2a\u0e35\u0e22\u0e1a\u0e0b\u0e36\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32', u'http://thaipost.net/taxonomy/term/64/all/feed'), (u'\u0e04\u0e31\u0e19\u0e1b\u0e32\u0e01\u0e2d\u0e22\u0e32\u0e01\u0e40\u0e25\u0e48\u0e32', u'http://thaipost.net/taxonomy/term/65/all/feed'), (u'\u0e40\u0e28\u0e23\u0e29\u0e10\u0e01\u0e34\u0e08', u'http://thaipost.net/taxonomy/term/6/all/feed'), (u'\u0e01\u0e23\u0e30\u0e08\u0e01\u0e44\u0e23\u0e49\u0e40\u0e07\u0e32', u'http://thaipost.net/taxonomy/term/14/all/feed'), (u'\u0e01\u0e23\u0e30\u0e08\u0e01\u0e2b\u0e31\u0e01\u0e21\u0e38\u0e21', u'http://thaipost.net/taxonomy/term/71/all/feed'), (u'\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e01\u0e23\u0e30\u0e41\u0e2a', u'http://thaipost.net/taxonomy/term/69/all/feed'), (u'\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19', u'http://thaipost.net/taxonomy/term/68/all/feed'), (u'\u0e2d\u0e34\u0e42\u0e04\u0e42\u0e1f\u0e01\u0e31\u0e2a', u'http://thaipost.net/taxonomy/term/10/all/feed'), (u'\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32-\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e2a\u0e38\u0e02', u'http://thaipost.net/taxonomy/term/7/all/feed'), (u'\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28', u'http://thaipost.net/taxonomy/term/8/all/feed'), (u'\u0e01\u0e35\u0e2c\u0e32', u'http://thaipost.net/taxonomy/term/9/all/feed')] + + def print_version(self, url): + return url.replace(url, 'http://www.thaipost.net/print/' + url [32:]) + + remove_tags = [] + remove_tags.append(dict(name = 'div', attrs = {'class' : 'print-logo'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'print-site_name'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'print-breadcrumb'})) From 95da860ee2b668c66e35746d5fe94abdae53adf6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 09:16:04 -0700 Subject: [PATCH 2/9] Post Today by Chotechai. Fixes #9240 (Post Today newspaper recipe) --- resources/recipes/post_today.recipe | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 resources/recipes/post_today.recipe diff --git a/resources/recipes/post_today.recipe b/resources/recipes/post_today.recipe new file mode 100644 index 0000000000..dc86e68191 --- /dev/null +++ b/resources/recipes/post_today.recipe @@ -0,0 +1,21 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1299061355(BasicNewsRecipe): + title = u'Post Today' + language = 'th' + __author__ = "Chotechai" + oldest_article = 7 + max_articles_per_feed = 100 + cover_url = 'http://upload.wikimedia.org/wikipedia/th/2/2e/Posttoday_Logo.png' + feeds = [(u'Breaking News', u'http://www.posttoday.com/rss/src/breakingnews.xml'), (u'\u0e02\u0e48\u0e32\u0e27', u'http://www.posttoday.com/rss/src/news.xml'), (u'\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c', u'http://www.posttoday.com/rss/src/analyse.xml'), (u'\u0e40\u0e21\u0e32\u0e17\u0e4c\u0e01\u0e31\u0e19\u0e43\u0e2b\u0e49 z', u'http://www.posttoday.com/rss/src/mouth.xml'), (u'\u0e44\u0e17\u0e22\u0e42\u0e0b\u0e44\u0e0b\u0e15\u0e35\u0e49', u'http://www.posttoday.com/rss/src/thaisociety.xml'), (u'\u0e44\u0e25\u0e1f\u0e4c\u0e2a\u0e44\u0e15\u0e25\u0e4c', u'http://www.posttoday.com/rss/src/lifestyle.xml'), (u'\u0e0a\u0e35\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e23\u0e27\u0e22', u'http://www.posttoday.com/rss/src/moneyguide.xml'), (u'\u0e1a\u0e49\u0e32\u0e19-\u0e04\u0e2d\u0e19\u0e42\u0e14', u'http://www.posttoday.com/rss/src/homecondo.xml'), (u'\u0e22\u0e32\u0e19\u0e22\u0e19\u0e15\u0e4c', u'http://www.posttoday.com/rss/src/motor.xml'), (u'\u0e14\u0e34\u0e08\u0e34\u0e15\u0e2d\u0e25\u0e44\u0e25\u0e1f\u0e4c', u'http://www.posttoday.com/rss/src/digitallife.xml'), (u'\u0e01\u0e35\u0e2c\u0e32', u'http://www.posttoday.com/rss/src/sport.xml'), (u'\u0e23\u0e2d\u0e1a\u0e42\u0e25\u0e01', u'http://www.posttoday.com/rss/src/world.xml'), (u'\u0e01\u0e34\u0e19-\u0e40\u0e17\u0e35\u0e48\u0e22\u0e27', u'http://www.posttoday.com/rss/src/eattravel.xml'), (u'Mind & Soul', u'http://www.posttoday.com/rss/src/mindsoul.xml'), (u'\u0e1a\u0e25\u0e47\u0e2d\u0e01 \u0e1a\u0e01.', u'http://www.posttoday.com/rss/src/blogs.xml')] + keep_only_tags = [] + keep_only_tags.append(dict(name = 'div', attrs = {'class' : +'articleContents'})) + + remove_tags = [] + remove_tags.append(dict(name = 'label')) + remove_tags.append(dict(name = 'span')) + remove_tags.append(dict(name = 'div', attrs = {'class' : +'socialBookmark'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : +'misc'})) From 36fba3beac60f4edfde0a89de5988814d0099513 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 09:35:36 -0700 Subject: [PATCH 3/9] RBC.ru by Chewi --- resources/recipes/rbc_ru.recipe | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 resources/recipes/rbc_ru.recipe diff --git a/resources/recipes/rbc_ru.recipe b/resources/recipes/rbc_ru.recipe new file mode 100644 index 0000000000..4c377a334b --- /dev/null +++ b/resources/recipes/rbc_ru.recipe @@ -0,0 +1,49 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1286819935(BasicNewsRecipe): + title = u'RBC.ru' + __author__ = 'A. Chewi' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + conversion_options = {'linearize_tables' : True} + remove_attributes = ['style'] + language = 'ru' + timefmt = ' [%a, %d %b, %Y]' + + keep_only_tags = [dict(name='h2', attrs={}), + dict(name='div', attrs={'class': 'box _ga1_on_'}), + dict(name='h1', attrs={'class': 'news_section'}), + dict(name='div', attrs={'class': 'news_body dotted_border_bottom'}), + dict(name='table', attrs={'class': 'newsBody'}), + dict(name='h2', attrs={'class': 'black'})] + + feeds = [(u'Главные новости', u'http://static.feed.rbc.ru/rbc/internal/rss.rbc.ru/rbc.ru/mainnews.rss'), + (u'Политика', u'http://static.feed.rbc.ru/rbc/internal/rss.rbc.ru/rbc.ru/politics.rss'), + (u'Экономика', u'http://static.feed.rbc.ru/rbc/internal/rss.rbc.ru/rbc.ru/economics.rss'), + (u'Общество', u'http://static.feed.rbc.ru/rbc/internal/rss.rbc.ru/rbc.ru/society.rss'), + (u'Происшествия', u'http://static.feed.rbc.ru/rbc/internal/rss.rbc.ru/rbc.ru/incidents.rss'), + (u'Финансовые новости Quote.rbc.ru', u'http://static.feed.rbc.ru/rbc/internal/rss.rbc.ru/quote.ru/mainnews.rss')] + + + remove_tags = [dict(name='div', attrs={'class': "video-frame"}), + dict(name='div', attrs={'class': "photo-container videoContainer videoSWFLinks videoPreviewSlideContainer notes"}), + dict(name='div', attrs={'class': "notes"}), + dict(name='div', attrs={'class': "publinks"}), + dict(name='a', attrs={'class': "print"}), + dict(name='div', attrs={'class': "photo-report_new notes newslider"}), + dict(name='div', attrs={'class': "videoContainer"}), + dict(name='div', attrs={'class': "videoPreviewSlideContainer"}), + dict(name='a', attrs={'class': "videoPreviewContainer"}), + dict(name='a', attrs={'class': "red"}),] + + def preprocess_html(self, soup): + for alink in soup.findAll('a'): + if alink.string is not None: + tstr = alink.string + alink.replaceWith(tstr) + return soup + + def print_version(self, url): + return url + '?print=true' From 0a05ba617a58b17369d534f5ecb79e0b782e79f9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 10:51:58 -0700 Subject: [PATCH 4/9] Fix bug that caused preferences->behavior to not show the output format set by the welcome wizard, and instead default to showing epub --- src/calibre/gui2/wizard/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 5f9f1828fa..c629b10b5d 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -51,7 +51,7 @@ class Device(object): @classmethod def set_output_format(cls): if cls.output_format: - prefs.set('output_format', cls.output_format) + prefs.set('output_format', cls.output_format.lower()) @classmethod def commit(cls): From a4fe0095dfc50ab7c60ef3bba602b08eeeb56f2b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 10:57:58 -0700 Subject: [PATCH 5/9] Update Credit Slips --- resources/images/news/credit_slips.png | Bin 0 -> 4847 bytes resources/recipes/credit_slips.recipe | 47 +++++++++++++++---------- 2 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 resources/images/news/credit_slips.png diff --git a/resources/images/news/credit_slips.png b/resources/images/news/credit_slips.png new file mode 100644 index 0000000000000000000000000000000000000000..50ac1dc02ec55eff5c2be056e01f15ce70014ad0 GIT binary patch literal 4847 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 by ' + article.author + '

') From 5611a96148e1fdf959b665ddd60059c33698a1c9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 11:05:13 -0700 Subject: [PATCH 6/9] ... --- src/calibre/gui2/preferences/__init__.py | 7 +++++-- src/calibre/gui2/preferences/behavior.py | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/preferences/__init__.py b/src/calibre/gui2/preferences/__init__.py index 7267716ea8..54eb2f713c 100644 --- a/src/calibre/gui2/preferences/__init__.py +++ b/src/calibre/gui2/preferences/__init__.py @@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en' import textwrap from PyQt4.Qt import QWidget, pyqtSignal, QCheckBox, QAbstractSpinBox, \ - QLineEdit, QComboBox, QVariant + QLineEdit, QComboBox, QVariant, Qt from calibre.customize.ui import preferences_plugins from calibre.utils.config import ConfigProxy @@ -82,6 +82,8 @@ class ConfigWidgetInterface(object): class Setting(object): + CHOICES_SEARCH_FLAGS = Qt.MatchExactly | Qt.MatchCaseSensitive + def __init__(self, name, config_obj, widget, gui_name=None, empty_string_is_None=True, choices=None, restart_required=False): self.name, self.gui_name = name, gui_name @@ -168,7 +170,8 @@ class Setting(object): elif self.datatype == 'string': self.gui_obj.setText(val if val else '') elif self.datatype == 'choice': - idx = self.gui_obj.findData(QVariant(val)) + idx = self.gui_obj.findData(QVariant(val), role=Qt.UserRole, + flags=self.CHOICES_SEARCH_FLAGS) if idx == -1: idx = 0 self.gui_obj.setCurrentIndex(idx) diff --git a/src/calibre/gui2/preferences/behavior.py b/src/calibre/gui2/preferences/behavior.py index aeee6e5064..45a63ce529 100644 --- a/src/calibre/gui2/preferences/behavior.py +++ b/src/calibre/gui2/preferences/behavior.py @@ -9,7 +9,7 @@ import re from PyQt4.Qt import Qt, QVariant, QListWidgetItem -from calibre.gui2.preferences import ConfigWidgetBase, test_widget +from calibre.gui2.preferences import ConfigWidgetBase, test_widget, Setting from calibre.gui2.preferences.behavior_ui import Ui_Form from calibre.gui2 import config, info_dialog, dynamic from calibre.utils.config import prefs @@ -20,6 +20,10 @@ from calibre.ebooks.oeb.iterator import is_supported from calibre.constants import iswindows from calibre.utils.icu import sort_key +class OutputFormatSetting(Setting): + + CHOICES_SEARCH_FLAGS = Qt.MatchFixedString + class ConfigWidget(ConfigWidgetBase, Ui_Form): def genesis(self, gui): @@ -43,7 +47,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): output_formats = list(sorted(available_output_formats())) output_formats.remove('oeb') choices = [(x.upper(), x) for x in output_formats] - r('output_format', prefs, choices=choices) + r('output_format', prefs, choices=choices, setting=OutputFormatSetting) restrictions = sorted(saved_searches().names(), key=sort_key) choices = [('', '')] + [(x, x) for x in restrictions] From f0ef93ead559804814029317ee6a135c314e8c1f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 12:16:19 -0700 Subject: [PATCH 7/9] ... --- src/calibre/gui2/dialogs/metadata_bulk.ui | 2 +- src/calibre/gui2/dialogs/metadata_single.ui | 2 +- src/calibre/gui2/metadata/basic_widgets.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.ui b/src/calibre/gui2/dialogs/metadata_bulk.ui index ae3445998b..1654ff8261 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.ui +++ b/src/calibre/gui2/dialogs/metadata_bulk.ui @@ -341,7 +341,7 @@ from the value in the box 1 - 990000 + 99000000 1 diff --git a/src/calibre/gui2/dialogs/metadata_single.ui b/src/calibre/gui2/dialogs/metadata_single.ui index 5bcf268aaa..ced5030f94 100644 --- a/src/calibre/gui2/dialogs/metadata_single.ui +++ b/src/calibre/gui2/dialogs/metadata_single.ui @@ -419,7 +419,7 @@ If the box is colored green, then text matches the individual author's sort stri Book - 9999.989999999999782 + 99999999.989999994635582 diff --git a/src/calibre/gui2/metadata/basic_widgets.py b/src/calibre/gui2/metadata/basic_widgets.py index a135176daf..d5a8de7b67 100644 --- a/src/calibre/gui2/metadata/basic_widgets.py +++ b/src/calibre/gui2/metadata/basic_widgets.py @@ -351,7 +351,7 @@ class SeriesIndexEdit(QDoubleSpinBox): QDoubleSpinBox.__init__(self, parent) self.dialog = parent self.db = self.original_series_name = None - self.setMaximum(1000000) + self.setMaximum(10000000) self.series_edit = series_edit series_edit.currentIndexChanged.connect(self.enable) series_edit.editTextChanged.connect(self.enable) From 46bcddc10f87bd4a688f1538f3981079d477cb5d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 12:47:36 -0700 Subject: [PATCH 8/9] Fix regression that caused memory leak in Tag Browser. This would show up as the memory usage of calibre increasing when switching libraries. Fixes #9246 (Memory allocation while changing library) --- src/calibre/gui2/actions/choose_library.py | 1 + src/calibre/gui2/tag_view.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py index f3a7f1742d..6f4ca624cb 100644 --- a/src/calibre/gui2/actions/choose_library.py +++ b/src/calibre/gui2/actions/choose_library.py @@ -355,6 +355,7 @@ class ChooseLibraryAction(InterfaceAction): print print 'before:', self.before_mem print 'after:', memory()/1024**2 + print self.dbref = self.before_mem = None diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index b310ce55fb..d03a4f4cca 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -572,6 +572,13 @@ class TagTreeItem(object): # {{{ else: self.tooltip = '' + def break_cycles(self): + for x in self.children: + if hasattr(x, 'break_cycles'): + x.break_cycles() + self.parent = self.icon_state_map = self.bold_font = self.tag = \ + self.icon = self.children = None + def __str__(self): if self.type == self.ROOT: return 'ROOT' @@ -780,6 +787,7 @@ class TagsModel(QAbstractItemModel): # {{{ self.refresh(data=data) def break_cycles(self): + self.root_item.break_cycles() self.db = self.root_item = None def mimeTypes(self): From 18f048fdb22ea60334d78f88d72c0338f05849c6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 2 Mar 2011 13:02:33 -0700 Subject: [PATCH 9/9] ... --- src/calibre/devices/misc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/calibre/devices/misc.py b/src/calibre/devices/misc.py index 8cf0fb5a06..07b381d11a 100644 --- a/src/calibre/devices/misc.py +++ b/src/calibre/devices/misc.py @@ -272,6 +272,7 @@ class NEXTBOOK(USBMS): VENDOR_NAME = 'NEXT2' WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = '1.0.14' SUPPORTS_SUB_DIRS = True + THUMBNAIL_HEIGHT = 120 ''' def upload_cover(self, path, filename, metadata, filepath):