From 1a2950c2b294eee0be3415e5c2da6be4c7236585 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 9 Mar 2011 08:20:41 +0000 Subject: [PATCH 01/19] Clean up true/false matching --- src/calibre/gui2/library/models.py | 17 +------- src/calibre/library/caches.py | 62 +++++++++++++----------------- 2 files changed, 29 insertions(+), 50 deletions(-) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 33d12e8ab9..0658c0604a 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -22,7 +22,7 @@ from calibre.utils.icu import sort_key, strcmp as icu_strcmp from calibre.ebooks.metadata.meta import set_metadata as _set_metadata from calibre.utils.search_query_parser import SearchQueryParser from calibre.library.caches import _match, CONTAINS_MATCH, EQUALS_MATCH, \ - REGEXP_MATCH, MetadataBackup + REGEXP_MATCH, MetadataBackup, force_to_bool from calibre import strftime, isbytestring, prepare_string_for_xml from calibre.constants import filesystem_encoding, DEBUG from calibre.gui2.library import DEFAULT_SORT @@ -624,20 +624,7 @@ class BooksModel(QAbstractTableModel): # {{{ return None # displayed using a decorator def bool_type_decorator(r, idx=-1, bool_cols_are_tristate=True): - val = self.db.data[r][idx] - if isinstance(val, (str, unicode)): - try: - val = icu_lower(val) - if not val: - val = None - elif val in [_('yes'), _('checked'), 'true']: - val = True - elif val in [_('no'), _('unchecked'), 'false']: - val = False - else: - val = bool(int(val)) - except: - val = None + val = force_to_bool(self.db.data[r][idx]) if not bool_cols_are_tristate: if val is None or not val: return self.bool_no_icon diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 21a2622f33..7fa26bd9e9 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -144,6 +144,22 @@ def _match(query, value, matchkind): pass return False +def force_to_bool(self, val): + if isinstance(val, (str, unicode)): + try: + val = icu_lower(val) + if not val: + val = None + elif val in [_('yes'), _('checked'), 'true']: + val = True + elif val in [_('no'), _('unchecked'), 'false']: + val = False + else: + val = bool(int(val)) + except: + val = None + return val + class CacheRow(list): # {{{ def __init__(self, db, composites, val): @@ -532,37 +548,23 @@ class ResultCache(SearchQueryParser): # {{{ if item is None: continue - val = item[loc] - if isinstance(val, (str, unicode)): - try: - val = icu_lower(val) - if not val: - val = None - elif val in [_('yes'), _('checked'), 'true']: - val = True - elif val in [_('no'), _('unchecked'), 'false']: - val = False - else: - val = bool(int(val)) - except: - val = None - + val = force_to_bool(item[loc]) if not bools_are_tristate: if val is None or not val: # item is None or set to false - if query in [_('no'), _('unchecked'), 'false']: + if query in [_('no'), _('unchecked'), 'no', 'false']: matches.add(item[0]) else: # item is explicitly set to true - if query in [_('yes'), _('checked'), 'true']: + if query in [_('yes'), _('checked'), 'yes', 'true']: matches.add(item[0]) else: if val is None: - if query in [_('empty'), _('blank'), 'false']: + if query in [_('empty'), _('blank'), 'empty', 'false']: matches.add(item[0]) elif not val: # is not None and false - if query in [_('no'), _('unchecked'), 'true']: + if query in [_('no'), _('unchecked'), 'no', 'true']: matches.add(item[0]) else: # item is not None and true - if query in [_('yes'), _('checked'), 'true']: + if query in [_('yes'), _('checked'), 'yes', 'true']: matches.add(item[0]) return matches @@ -695,13 +697,14 @@ class ResultCache(SearchQueryParser): # {{{ if item is None: continue if not item[loc]: - if q == 'false': + if q == 'false' and matchkind == CONTAINS_MATCH: matches.add(item[0]) continue # item is empty. No possible matches below - if q == 'false': # Field has something in it, so a false query does not match + if q == 'false'and matchkind == CONTAINS_MATCH: + # Field has something in it, so a false query does not match continue - if q == 'true': + if q == 'true' and matchkind == CONTAINS_MATCH: if isinstance(item[loc], basestring): if item[loc].strip() == '': continue @@ -989,18 +992,7 @@ class SortKeyGenerator(object): val = 0.0 dt = 'float' elif sb == 'bool': - try: - v = icu_lower(val) - if not val: - val = None - elif v in [_('yes'), _('checked'), 'true']: - val = True - elif v in [_('no'), _('unchecked'), 'false']: - val = False - else: - val = bool(int(val)) - except: - val = None + val = force_to_bool(val) dt = 'bool' if dt == 'datetime': From 8f931ddb2f2844a5d6dd835bcaa30e184d922383 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 9 Mar 2011 08:23:15 +0000 Subject: [PATCH 02/19] ... --- src/calibre/library/caches.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 7fa26bd9e9..c77b03c112 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -144,7 +144,7 @@ def _match(query, value, matchkind): pass return False -def force_to_bool(self, val): +def force_to_bool(val): if isinstance(val, (str, unicode)): try: val = icu_lower(val) From 6482914216c136df79ef750fc46d51afccf4ec48 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 9 Mar 2011 08:59:10 +0000 Subject: [PATCH 03/19] Added the '_' to the non-translated values to prevent possible clashes with translations --- src/calibre/library/caches.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index c77b03c112..97ddaeb51a 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -551,20 +551,20 @@ class ResultCache(SearchQueryParser): # {{{ val = force_to_bool(item[loc]) if not bools_are_tristate: if val is None or not val: # item is None or set to false - if query in [_('no'), _('unchecked'), 'no', 'false']: + if query in [_('no'), _('unchecked'), '_no', 'false']: matches.add(item[0]) else: # item is explicitly set to true - if query in [_('yes'), _('checked'), 'yes', 'true']: + if query in [_('yes'), _('checked'), '_yes', 'true']: matches.add(item[0]) else: if val is None: - if query in [_('empty'), _('blank'), 'empty', 'false']: + if query in [_('empty'), _('blank'), '_empty', 'false']: matches.add(item[0]) elif not val: # is not None and false - if query in [_('no'), _('unchecked'), 'no', 'true']: + if query in [_('no'), _('unchecked'), '_no', 'true']: matches.add(item[0]) else: # item is not None and true - if query in [_('yes'), _('checked'), 'yes', 'true']: + if query in [_('yes'), _('checked'), '_yes', 'true']: matches.add(item[0]) return matches From 859e3caa53b3df61f2248c13589e057fd20ac697 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 09:20:47 -0700 Subject: [PATCH 04/19] Pass none for library_uuid when opening a device in contexts where no library is available --- src/calibre/devices/__init__.py | 3 +-- src/calibre/devices/prs500/cli/main.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/calibre/devices/__init__.py b/src/calibre/devices/__init__.py index 0d62a8f619..1918a36cc8 100644 --- a/src/calibre/devices/__init__.py +++ b/src/calibre/devices/__init__.py @@ -30,7 +30,6 @@ def strftime(epoch, zone=time.gmtime): def get_connected_device(): from calibre.customize.ui import device_plugins from calibre.devices.scanner import DeviceScanner - import uuid dev = None scanner = DeviceScanner() scanner.scan() @@ -48,7 +47,7 @@ def get_connected_device(): for d in connected_devices: try: - d.open(str(uuid.uuid4())) + d.open() except: continue else: diff --git a/src/calibre/devices/prs500/cli/main.py b/src/calibre/devices/prs500/cli/main.py index 8a73f3fa23..6d568b01a2 100755 --- a/src/calibre/devices/prs500/cli/main.py +++ b/src/calibre/devices/prs500/cli/main.py @@ -6,7 +6,7 @@ Provides a command-line and optional graphical interface to the SONY Reader PRS- For usage information run the script. """ -import StringIO, sys, time, os, uuid +import StringIO, sys, time, os from optparse import OptionParser from calibre import __version__, __appname__ @@ -213,7 +213,7 @@ def main(): for d in connected_devices: try: - d.open(str(uuid.uuid4())) + d.open(None) except: continue else: From 438c87e022eb2e81c4cc160fd32eb92b35956666 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 11:11:13 -0700 Subject: [PATCH 05/19] Conversion: When using the Level x Table of Contents options, support the case when the level 1,2,3 items are spread over multiple HTML files. --- .../ebooks/oeb/transforms/structure.py | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/src/calibre/ebooks/oeb/transforms/structure.py b/src/calibre/ebooks/oeb/transforms/structure.py index 0db9b153df..fc338da692 100644 --- a/src/calibre/ebooks/oeb/transforms/structure.py +++ b/src/calibre/ebooks/oeb/transforms/structure.py @@ -13,6 +13,7 @@ from urlparse import urlparse from calibre.ebooks.oeb.base import XPNSMAP, TOC, XHTML, xml2text from calibre.ebooks import ConversionError +from calibre.utils.ordered_dict import OrderedDict def XPath(x): try: @@ -95,10 +96,8 @@ class DetectStructure(object): self.log.exception('Failed to mark chapter') def create_level_based_toc(self): - if self.opts.level1_toc is None: - return - for item in self.oeb.spine: - self.add_leveled_toc_items(item) + if self.opts.level1_toc is not None: + self.add_leveled_toc_items() def create_toc_from_chapters(self): counter = self.oeb.toc.next_play_order() @@ -145,49 +144,57 @@ class DetectStructure(object): return text, href - def add_leveled_toc_items(self, item): - level1 = XPath(self.opts.level1_toc)(item.data) - level1_order = [] - document = item - + def add_leveled_toc_items(self): + added = OrderedDict() + added2 = OrderedDict() counter = 1 - if level1: - added = {} - for elem in level1: + for document in self.oeb.spine: + previous_level1 = list(added.itervalues())[-1] if added else None + previous_level2 = list(added2.itervalues())[-1] if added2 else None + + for elem in XPath(self.opts.level1_toc)(document.data): text, _href = self.elem_to_link(document, elem, counter) counter += 1 if text: node = self.oeb.toc.add(text, _href, play_order=self.oeb.toc.next_play_order()) - level1_order.append(node) added[elem] = node #node.add(_('Top'), _href) - if self.opts.level2_toc is not None: - added2 = {} - level2 = list(XPath(self.opts.level2_toc)(document.data)) - for elem in level2: + + if self.opts.level2_toc is not None and added: + for elem in XPath(self.opts.level2_toc)(document.data): level1 = None for item in document.data.iterdescendants(): - if item in added.keys(): + if item in added: level1 = added[item] - elif item == elem and level1 is not None: + elif item == elem: + if level1 is None: + if previous_level1 is None: + break + level1 = previous_level1 text, _href = self.elem_to_link(document, elem, counter) counter += 1 if text: added2[elem] = level1.add(text, _href, play_order=self.oeb.toc.next_play_order()) - if self.opts.level3_toc is not None: - level3 = list(XPath(self.opts.level3_toc)(document.data)) - for elem in level3: + break + + if self.opts.level3_toc is not None and added2: + for elem in XPath(self.opts.level3_toc)(document.data): level2 = None for item in document.data.iterdescendants(): - if item in added2.keys(): + if item in added2: level2 = added2[item] - elif item == elem and level2 is not None: + elif item == elem: + if level2 is None: + if previous_level2 is None: + break + level2 = previous_level2 text, _href = \ self.elem_to_link(document, elem, counter) counter += 1 if text: level2.add(text, _href, - play_order=self.oeb.toc.next_play_order()) + play_order=self.oeb.toc.next_play_order()) + break From b66e308c277fad6f3bcfc32cb1cfc8b91e9a5020 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 12:03:20 -0700 Subject: [PATCH 06/19] When adding a GUI plugin, prompt the user for where the plugin should be displayed --- .../gui2/dialogs/choose_plugin_toolbars.py | 61 +++++++++++++++++++ src/calibre/gui2/preferences/plugins.py | 35 ++++++++++- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 src/calibre/gui2/dialogs/choose_plugin_toolbars.py diff --git a/src/calibre/gui2/dialogs/choose_plugin_toolbars.py b/src/calibre/gui2/dialogs/choose_plugin_toolbars.py new file mode 100644 index 0000000000..5639286519 --- /dev/null +++ b/src/calibre/gui2/dialogs/choose_plugin_toolbars.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' +__docformat__ = 'restructuredtext en' +__license__ = 'GPL v3' + + +from PyQt4.Qt import QDialog, QVBoxLayout, QLabel, QDialogButtonBox, \ + QListWidget, QAbstractItemView +from PyQt4 import QtGui + +class ChoosePluginToolbarsDialog(QDialog): + + def __init__(self, parent, plugin, locations): + QDialog.__init__(self, parent) + self.locations = locations + + self.setWindowTitle( + _('Add "%s" to toolbars or menus')%plugin.name) + + self._layout = QVBoxLayout(self) + self.setLayout(self._layout) + + self._header_label = QLabel( + _('Select the toolbars and/or menus to add "%s" to:') % + plugin.name) + self._layout.addWidget(self._header_label) + + self._locations_list = QListWidget(self) + self._locations_list.setSelectionMode(QAbstractItemView.MultiSelection) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + self._locations_list.setSizePolicy(sizePolicy) + for key, text in locations: + self._locations_list.addItem(text) + self._layout.addWidget(self._locations_list) + + self._footer_label = QLabel( + _('You can also customise the plugin locations ' + 'using Preferences -> Customise the toolbar')) + self._layout.addWidget(self._footer_label) + + button_box = QDialogButtonBox(QDialogButtonBox.Ok | + QDialogButtonBox.Cancel) + button_box.accepted.connect(self.accept) + button_box.rejected.connect(self.reject) + self._layout.addWidget(button_box) + self.resize(self.sizeHint()) + + def selected_locations(self): + selected = [] + for row in self._locations_list.selectionModel().selectedRows(): + selected.append(self.locations[row.row()]) + return selected + diff --git a/src/calibre/gui2/preferences/plugins.py b/src/calibre/gui2/preferences/plugins.py index acf42fee16..740119831e 100644 --- a/src/calibre/gui2/preferences/plugins.py +++ b/src/calibre/gui2/preferences/plugins.py @@ -16,9 +16,10 @@ from calibre.customize.ui import initialized_plugins, is_disabled, enable_plugin disable_plugin, plugin_customization, add_plugin, \ remove_plugin from calibre.gui2 import NONE, error_dialog, info_dialog, choose_files, \ - question_dialog + question_dialog, gprefs from calibre.utils.search_query_parser import SearchQueryParser from calibre.utils.icu import lower +from calibre.utils.ordered_dict import OrderedDict class PluginModel(QAbstractItemModel, SearchQueryParser): # {{{ @@ -281,6 +282,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self._plugin_model.populate() self._plugin_model.reset() self.changed_signal.emit() + self.check_for_add_to_toolbars(plugin) info_dialog(self, _('Success'), _('Plugin {0} successfully installed under ' ' {1} plugins. You may have to restart calibre ' @@ -342,6 +344,37 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): plugin.name + _(' cannot be removed. It is a ' 'builtin plugin. Try disabling it instead.')).exec_() + def check_for_add_to_toolbars(self, plugin): + from calibre.gui2.preferences.toolbar import ConfigWidget + from calibre.customize import InterfaceActionBase + + if not isinstance(plugin, InterfaceActionBase): + return + + all_locations = OrderedDict(ConfigWidget.LOCATIONS) + plugin_action = plugin.load_actual_plugin(self.gui) + installed_actions = OrderedDict([ + (key, list(gprefs.get('action-layout-'+key, []))) + for key in all_locations]) + + # If already installed in a GUI container, do nothing + for action_names in installed_actions.itervalues(): + if plugin_action.name in action_names: + return + + allowed_locations = [(key, text) for key, text in + all_locations.iteritems() if key + not in plugin_action.dont_add_to] + if not allowed_locations: + return # This plugin doesn't want to live in the GUI + + from calibre.gui2.dialogs.choose_plugin_toolbars import ChoosePluginToolbarsDialog + d = ChoosePluginToolbarsDialog(self, plugin_action, allowed_locations) + if d.exec_() == d.Accepted: + for key, text in d.selected_locations(): + installed_actions = list(gprefs['action-layout-'+key]) + installed_actions.append(plugin_action.name) + gprefs['action-layout-'+key] = tuple(installed_actions) if __name__ == '__main__': from PyQt4.Qt import QApplication From dffe798a482344e18af3709cc616360e2622f051 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 12:04:05 -0700 Subject: [PATCH 07/19] ... --- src/calibre/gui2/dialogs/choose_plugin_toolbars.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/dialogs/choose_plugin_toolbars.py b/src/calibre/gui2/dialogs/choose_plugin_toolbars.py index 5639286519..ddf8e162e8 100644 --- a/src/calibre/gui2/dialogs/choose_plugin_toolbars.py +++ b/src/calibre/gui2/dialogs/choose_plugin_toolbars.py @@ -26,7 +26,7 @@ class ChoosePluginToolbarsDialog(QDialog): self.setLayout(self._layout) self._header_label = QLabel( - _('Select the toolbars and/or menus to add "%s" to:') % + _('Select the toolbars and/or menus to add %s to:') % plugin.name) self._layout.addWidget(self._header_label) From 32aca79f74cb032f35fbfd3427c64e29e174dba7 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 12:39:37 -0700 Subject: [PATCH 08/19] Fix #9295 (problem with article redirects on La Nacion website) --- resources/recipes/lanacion.recipe | 100 ++++++++++++++++++++---------- 1 file changed, 66 insertions(+), 34 deletions(-) diff --git a/resources/recipes/lanacion.recipe b/resources/recipes/lanacion.recipe index 05e777ec67..425aa9b193 100644 --- a/resources/recipes/lanacion.recipe +++ b/resources/recipes/lanacion.recipe @@ -1,5 +1,5 @@ __license__ = 'GPL v3' -__copyright__ = '2008-2010, Darko Miletic ' +__copyright__ = '2008-2011, Darko Miletic ' ''' lanacion.com.ar ''' @@ -19,9 +19,10 @@ class Lanacion(BasicNewsRecipe): language = 'es_AR' publication_type = 'newspaper' remove_empty_feeds = True - masthead_url = 'http://www.lanacion.com.ar/imgs/layout/logos/ln341x47.gif' - extra_css = """ h1{font-family: Georgia,serif} - h2{color: #626262} + masthead_url = 'http://www.lanacion.com.ar/_ui/desktop/imgs/layout/logos/ln341x47.gif' + extra_css = """ + h1{font-family: Georgia,serif} + h2{color: #626262; font-weight: normal; font-size: 1.1em} body{font-family: Arial,sans-serif} img{margin-top: 0.5em; margin-bottom: 0.2em; display: block} .notaFecha{color: #808080} @@ -37,47 +38,78 @@ class Lanacion(BasicNewsRecipe): , 'language' : language } - keep_only_tags = [dict(name='div', attrs={'class':['nota floatFix','topNota','nota','post']})] + keep_only_tags = [dict(name='div', attrs={'id':'content'})] + remove_tags = [ dict(name='div' , attrs={'class':'notaComentario floatFix noprint' }) ,dict(name='ul' , attrs={'class':['cajaHerramientas cajaTop noprint','herramientas noprint']}) - ,dict(name='div' , attrs={'class':['cajaHerramientas noprint','cajaHerramientas floatFix'] }) - ,dict(attrs={'class':['titulosMultimedia','derecha','techo color','encuesta','izquierda compartir','floatFix','videoCentro']}) + ,dict(name='div' , attrs={'class':['titulosMultimedia','herramientas noprint','cajaHerramientas noprint','cajaHerramientas floatFix'] }) + ,dict(attrs={'class':['izquierda','espacio17','espacio10','espacio20','floatFix ultimasNoticias','relacionadas','titulosMultimedia','derecha','techo color','encuesta','izquierda compartir','floatFix','videoCentro']}) ,dict(name=['iframe','embed','object','form','base','hr','meta','link','input']) ] + remove_tags_after = dict(attrs={'class':['tags','nota-destacado']}) remove_attributes = ['height','width','visible','onclick','data-count','name'] feeds = [ - (u'Ultimas noticias' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?origen=2' ) - ,(u'Politica' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=30' ) - ,(u'Economia' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=272' ) - ,(u'Deportes' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=131' ) - ,(u'Informacion General' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=21' ) - ,(u'Cultura' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=1' ) - ,(u'Opinion' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=28' ) - ,(u'Espectaculos' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=120' ) - ,(u'Exterior' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=7' ) - ,(u'Ciencia&Salud' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=498' ) - ,(u'Revista' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=494' ) - ,(u'Enfoques' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=421' ) - ,(u'Comercio Exterior' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=347' ) - ,(u'Tecnologia' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=432' ) - ,(u'Arquitectura' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=366' ) - ,(u'Turismo' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=504' ) - ,(u'Al volante' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=371' ) - ,(u'El Campo' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=337' ) - ,(u'Moda y Belleza' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=1312' ) - ,(u'Inmuebles Comerciales', u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=1363' ) - ,(u'Countries' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=1348' ) - ,(u'adnCultura' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=6734' ) - ,(u'The Wall Street Journal Americas', u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=6373' ) - ,(u'Estilo de vida' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=7353' ) - ,(u'Management' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=7380' ) - ,(u'Bicentenario' , u'http://www.lanacion.com.ar/herramientas/rss/index.asp?categoria_id=7276' ) + (u'Ultimas Noticias' , u'http://servicios.lanacion.com.ar/herramientas/rss/origen=2' ) + ,(u'Politica' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=30' ) + ,(u'Deportes' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=131' ) + ,(u'Economia' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=272' ) + ,(u'Informacion General' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=21' ) + ,(u'Cultura' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=1' ) + ,(u'Opinion' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=28' ) + ,(u'Espectaculos' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=120' ) + ,(u'Exterior' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=7' ) + ,(u'Ciencia&Salud' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=498' ) + ,(u'Revista' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=494' ) + ,(u'Enfoques' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=421' ) + ,(u'Comercio Exterior' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=347' ) + ,(u'Tecnologia' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=432' ) + ,(u'Arquitectura' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=366' ) + ,(u'Turismo' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=504' ) + ,(u'Al volante' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=371' ) + ,(u'El Campo' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=337' ) + ,(u'Moda y Belleza' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=1312') + ,(u'Inmuebles Comerciales', u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=1363') + ,(u'Countries' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=1348') + ,(u'adnCultura' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=6734') + ,(u'The WSJ Americas' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=6373') + ,(u'Comunidad' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=1344') + ,(u'Management' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=7380') + ,(u'Bicentenario' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=7276') ] + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + br.set_debug_redirects(True) + br.set_debug_responses(True) + br.set_debug_http(True) + return br + + def get_article_url(self, article): + link = BasicNewsRecipe.get_article_url(self,article) + if link.startswith('http://blogs.lanacion') and not link.endswith('/'): + return None + return link + def preprocess_html(self, soup): for item in soup.findAll(style=True): del item['style'] - return self.adeify_images(soup) + for item in soup.findAll('a'): + limg = item.find('img') + if item.string is not None: + str = item.string + item.replaceWith(str) + else: + if limg: + item.name = 'div' + item.attrs = [] + else: + str = self.tag_to_string(item) + item.replaceWith(str) + for item in soup.findAll('img'): + if not item.has_key('alt'): + item['alt'] = 'image' + return soup From 0710e436c9cb86e897d81b6068a4dafc072ae366 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 12:41:02 -0700 Subject: [PATCH 09/19] ... --- src/calibre/gui2/preferences/plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/preferences/plugins.py b/src/calibre/gui2/preferences/plugins.py index 740119831e..85221766f2 100644 --- a/src/calibre/gui2/preferences/plugins.py +++ b/src/calibre/gui2/preferences/plugins.py @@ -372,7 +372,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): d = ChoosePluginToolbarsDialog(self, plugin_action, allowed_locations) if d.exec_() == d.Accepted: for key, text in d.selected_locations(): - installed_actions = list(gprefs['action-layout-'+key]) + installed_actions = list(gprefs.get('action-layout-'+key, [])) installed_actions.append(plugin_action.name) gprefs['action-layout-'+key] = tuple(installed_actions) From f20c34b6f66ff85f424347cc7b269ecdb9c51223 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 13:57:23 -0700 Subject: [PATCH 10/19] Oakland North by noah --- resources/recipes/oakland_north.recipe | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 resources/recipes/oakland_north.recipe diff --git a/resources/recipes/oakland_north.recipe b/resources/recipes/oakland_north.recipe new file mode 100644 index 0000000000..0ad165be40 --- /dev/null +++ b/resources/recipes/oakland_north.recipe @@ -0,0 +1,23 @@ +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class AdvancedUserRecipe1299640653(BasicNewsRecipe): + title = u'Oakland North' + oldest_article = 30 + max_articles_per_feed = 100 + + language = 'en' + __author__ = 'noah' + description = 'Oakland North' + category = 'news' + no_stylesheets = True + + masthead_url = 'http://oaklandnorth.net/wp-content/themes/oaklandnorth/images/masthead.png' + + keep_only_tags = [dict(name='div', attrs={'class':re.compile(r'\bpost\b(?!-)', re.IGNORECASE)})] + + remove_tags_after = [dict(name='p', attrs={'class':'post-postscript'})] + + remove_tags = [dict(name='p', attrs={'class':'post-postscript'})] + + feeds = [(u'All Headlines', u'http://oaklandnorth.net/feed/')] From c93547878cb3109a7b9e89cc5f9641e49d919422 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2011 15:09:16 -0700 Subject: [PATCH 11/19] Fix #9343 (Convert from rtf - bug?) --- src/calibre/ebooks/rtf2xml/tokenize.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/rtf2xml/tokenize.py b/src/calibre/ebooks/rtf2xml/tokenize.py index 3dcaf0fcb1..25640586db 100755 --- a/src/calibre/ebooks/rtf2xml/tokenize.py +++ b/src/calibre/ebooks/rtf2xml/tokenize.py @@ -46,7 +46,8 @@ class Tokenize: def __remove_uc_chars(self, startchar, token): for i in xrange(startchar, len(token)): - if token[i] == " ": + #handle the case of an uc char with a terminating blank before ansi char + if token[i] == " " and self.__uc_char: continue elif self.__uc_char: self.__uc_char -= 1 From 906eae2677561fe2c9c7ecf2ddd980f6f8908190 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 10 Mar 2011 13:18:27 +0000 Subject: [PATCH 12/19] Add a convenience formatter function to slice up hierarchical tag fields. --- src/calibre/utils/formatter_functions.py | 44 ++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/src/calibre/utils/formatter_functions.py b/src/calibre/utils/formatter_functions.py index 3f085e0195..c0c0c55b83 100644 --- a/src/calibre/utils/formatter_functions.py +++ b/src/calibre/utils/formatter_functions.py @@ -11,7 +11,7 @@ __docformat__ = 'restructuredtext en' import inspect, re, traceback, sys from calibre.utils.titlecase import titlecase -from calibre.utils.icu import capitalize, strcmp +from calibre.utils.icu import capitalize, strcmp, sort_key from calibre.utils.date import parse_date, format_date @@ -427,8 +427,8 @@ class BuiltinSublist(BuiltinFormatterFunction): name = 'sublist' arg_count = 4 doc = _('sublist(val, start_index, end_index, separator) -- interpret the ' - ' value as a list of items separated by `separator`, returning a ' - ' new list made from the `start_index`th to the `end_index`th item. ' + 'value as a list of items separated by `separator`, returning a ' + 'new list made from the `start_index`th to the `end_index`th item. ' 'The first item is number zero. If an index is negative, then it ' 'counts from the end of the list. As a special case, an end_index ' 'of zero is assumed to be the length of the list. Examples using ' @@ -451,6 +451,43 @@ class BuiltinSublist(BuiltinFormatterFunction): except: return '' +class BuiltinSubitems(BuiltinFormatterFunction): + name = 'subitems' + arg_count = 3 + doc = _('subitems(val, start_index, end_index) -- This function is used to ' + 'break apart lists of items such as genres. It interprets the value ' + 'as a comma-separated list of items, where each item is a period-' + 'separated list. Returns a new list made by first finding all the' + 'period-separated items, then for each such item extracting the ' + 'start_index`th to the `end_index`th components, then combining ' + 'the results back together. The first component in a period-' + 'separated list has an index of zero. If an index is negative, ' + 'then it counts from the end of the list. As a special case, an ' + 'end_index of zero is assumed to be the length of the list. ' + 'Example using basic template mode and assuming a #genre value of ' + '"A.B.C": {#genre:subgroup(0,1)} returns A. ' + '{#genre:sublist(0,2)} returns A.B. {#genre:subgroup(1,0)} returns ' + 'C. Assuming a #genre value of "A.B.C,D.E.F", {#genre:subgroup(0,1)} ' + 'returns A,D. {#genre:sublist(0,2)} returns A.B,D.E') + + def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index): + if not val: + return '' + si = int(start_index) + ei = int(end_index) + items = [v.strip() for v in val.split(',')] + rv = set() + for item in items: + component = item.split('.') + try: + if ei == 0: + rv.add('.'.join(component[si:])) + else: + rv.add('.'.join(component[si:ei])) + except: + pass + return ', '.join(sorted(rv, key=sort_key)) + class BuiltinFormat_date(BuiltinFormatterFunction): name = 'format_date' arg_count = 2 @@ -532,6 +569,7 @@ builtin_select = BuiltinSelect() builtin_shorten = BuiltinShorten() builtin_strcat = BuiltinStrcat() builtin_strcmp = BuiltinStrcmp() +builtin_subitems = BuiltinSubitems() builtin_sublist = BuiltinSublist() builtin_substr = BuiltinSubstr() builtin_subtract = BuiltinSubtract() From 2dc704a18c08c1aa829e3fd02d72b0d1820f07a0 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 10 Mar 2011 13:52:14 +0000 Subject: [PATCH 13/19] Documentation improvements --- src/calibre/manual/template_lang.rst | 24 ++++++++++++++++++++++-- src/calibre/utils/formatter_functions.py | 10 +++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/calibre/manual/template_lang.rst b/src/calibre/manual/template_lang.rst index 3438f266b5..7485effab9 100644 --- a/src/calibre/manual/template_lang.rst +++ b/src/calibre/manual/template_lang.rst @@ -112,6 +112,8 @@ Functions are always applied before format specifications. See further down for The syntax for using functions is ``{field:function(arguments)}``, or ``{field:function(arguments)|prefix|suffix}``. Arguments are separated by commas. Commas inside arguments must be preceeded by a backslash ( '\\' ). The last (or only) argument cannot contain a closing parenthesis ( ')' ). Functions return the value of the field used in the template, suitably modified. +If you have programming experience, please note that the syntax in this mode (single function) is not what you might expect. Strings are not quoted. Spaces are significant. All arguments must be constants; there is no sub-evaluation. Use :ref:`template program mode ` and :ref:`general program mode ` to avoid these differences. + The functions available are: * ``lowercase()`` -- return value of the field in lower case. @@ -127,10 +129,25 @@ The functions available are: * ``switch(pattern, value, pattern, value, ..., else_value)`` -- for each ``pattern, value`` pair, checks if the field matches the regular expression ``pattern`` and if so, returns that ``value``. If no ``pattern`` matches, then ``else_value`` is returned. You can have as many ``pattern, value`` pairs as you want. * ``lookup(pattern, field, pattern, field, ..., else_field)`` -- like switch, except the arguments are field (metadata) names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns are fields, you can use this function in one composite field to use the value of some other composite field. This is extremely useful when constructing variable save paths (more later). * ``select(key)`` -- interpret the field as a comma-separated list of items, with the items being of the form "id:value". Find the pair with the id equal to key, and return the corresponding value. This function is particularly useful for extracting a value such as an isbn from the set of identifiers for a book. + * ``subitems(val, start_index, end_index)`` -- This function is used to break apart lists of tag-like hierarchical items such as genres. It interprets the value as a comma-separated list of tag-like items, where each item is a period-separated list. Returns a new list made by first finding all the period-separated tag-like items, then for each such item extracting the start_index`th to the `end_index`th components, then combining the results back together. The first component in a period-separated list has an index of zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length of the list. Examples:: + + Assuming a #genre column containing "A.B.C": + {#genre:subitems(0,1)} returns A + {#genre:subitems(0,2)} returns A.B + {#genre:subitems(1,0)} returns B.C + Assuming a #genre column containing "A.B.C, D.E": + {#genre:subitems(0,1)} returns A, D + {#genre:subitems(0,2)} returns A.B, D.E + + * ``sublist(val, start_index, end_index, separator)`` -- interpret the value as a list of items separated by `separator`, returning a new list made from the `start_index`th to the `end_index`th item. The first item is number zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length of the list. Examples assuming that the tags column (which is comma-separated) contains "A, B ,C":: + + {tags:sublist(0,1,\,)} returns A + {tags:sublist(-1,0,\,)} returns C + {tags:sublist(0,-1,\,)} returns A, B + * ``test(text if not empty, text if empty)`` -- return `text if not empty` if the field is not empty, otherwise return `text if empty`. - -Now, about using functions and formatting in the same field. Suppose you have an integer custom column called ``#myint`` that you want to see with leading zeros, as in ``003``. To do this, you would use a format of ``0>3s``. However, by default, if a number (integer or float) equals zero then the field produces the empty value, so zero values will produce nothing, not ``000``. If you really want to see ``000`` values, then you use both the format string and the ``ifempty`` function to change the empty value back to a zero. The field reference would be:: +Now, what about using functions and formatting in the same field. Suppose you have an integer custom column called ``#myint`` that you want to see with leading zeros, as in ``003``. To do this, you would use a format of ``0>3s``. However, by default, if a number (integer or float) equals zero then the field produces the empty value, so zero values will produce nothing, not ``000``. If you really want to see ``000`` values, then you use both the format string and the ``ifempty`` function to change the empty value back to a zero. The field reference would be:: {#myint:0>3s:ifempty(0)} @@ -138,6 +155,7 @@ Note that you can use the prefix and suffix as well. If you want the number to a {#myint:0>3s:ifempty(0)|[|]} +.. _template_mode: Using functions in templates - template program mode ---------------------------------------------------- @@ -238,6 +256,8 @@ The following functions are available in addition to those described in single-f * ``subtract(x, y)`` -- returns x - y. Throws an exception if either x or y are not numbers. * ``template(x)`` -- evaluates x as a template. The evaluation is done in its own context, meaning that variables are not shared between the caller and the template evaluation. Because the `{` and `}` characters are special, you must use `[[` for the `{` character and `]]` for the '}' character; they are converted automatically. For example, ``template('[[title_sort]]') will evaluate the template ``{title_sort}`` and return its value. +.. _general_mode: + Using general program mode ----------------------------------- diff --git a/src/calibre/utils/formatter_functions.py b/src/calibre/utils/formatter_functions.py index c0c0c55b83..e9ff39d3bf 100644 --- a/src/calibre/utils/formatter_functions.py +++ b/src/calibre/utils/formatter_functions.py @@ -457,7 +457,7 @@ class BuiltinSubitems(BuiltinFormatterFunction): doc = _('subitems(val, start_index, end_index) -- This function is used to ' 'break apart lists of items such as genres. It interprets the value ' 'as a comma-separated list of items, where each item is a period-' - 'separated list. Returns a new list made by first finding all the' + 'separated list. Returns a new list made by first finding all the ' 'period-separated items, then for each such item extracting the ' 'start_index`th to the `end_index`th components, then combining ' 'the results back together. The first component in a period-' @@ -465,10 +465,10 @@ class BuiltinSubitems(BuiltinFormatterFunction): 'then it counts from the end of the list. As a special case, an ' 'end_index of zero is assumed to be the length of the list. ' 'Example using basic template mode and assuming a #genre value of ' - '"A.B.C": {#genre:subgroup(0,1)} returns A. ' - '{#genre:sublist(0,2)} returns A.B. {#genre:subgroup(1,0)} returns ' - 'C. Assuming a #genre value of "A.B.C,D.E.F", {#genre:subgroup(0,1)} ' - 'returns A,D. {#genre:sublist(0,2)} returns A.B,D.E') + '"A.B.C": {#genre:subitems(0,1)} returns A. {#genre:subitems(0,2)} ' + 'returns A.B. {#genre:subitems(1,0)} returns B.C. Assuming a #genre ' + 'value of "A.B.C, D.E.F", {#genre:subitems(0,1)} returns A, D. ' + '{#genre:subitems(0,2)} returns A.B, D.E') def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index): if not val: From 8831eb544368521012a45087246d87052e5adcca Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 10 Mar 2011 13:56:37 +0000 Subject: [PATCH 14/19] ... --- src/calibre/manual/template_lang.rst | 16 ++++++++-------- src/calibre/utils/formatter_functions.py | 17 +++++++++-------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/calibre/manual/template_lang.rst b/src/calibre/manual/template_lang.rst index 7485effab9..b95775aa99 100644 --- a/src/calibre/manual/template_lang.rst +++ b/src/calibre/manual/template_lang.rst @@ -132,18 +132,18 @@ The functions available are: * ``subitems(val, start_index, end_index)`` -- This function is used to break apart lists of tag-like hierarchical items such as genres. It interprets the value as a comma-separated list of tag-like items, where each item is a period-separated list. Returns a new list made by first finding all the period-separated tag-like items, then for each such item extracting the start_index`th to the `end_index`th components, then combining the results back together. The first component in a period-separated list has an index of zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length of the list. Examples:: Assuming a #genre column containing "A.B.C": - {#genre:subitems(0,1)} returns A - {#genre:subitems(0,2)} returns A.B - {#genre:subitems(1,0)} returns B.C + {#genre:subitems(0,1)} returns "A" + {#genre:subitems(0,2)} returns "A.B" + {#genre:subitems(1,0)} returns "B.C" Assuming a #genre column containing "A.B.C, D.E": - {#genre:subitems(0,1)} returns A, D - {#genre:subitems(0,2)} returns A.B, D.E + {#genre:subitems(0,1)} returns "A, D" + {#genre:subitems(0,2)} returns "A.B, D.E" * ``sublist(val, start_index, end_index, separator)`` -- interpret the value as a list of items separated by `separator`, returning a new list made from the `start_index`th to the `end_index`th item. The first item is number zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length of the list. Examples assuming that the tags column (which is comma-separated) contains "A, B ,C":: - {tags:sublist(0,1,\,)} returns A - {tags:sublist(-1,0,\,)} returns C - {tags:sublist(0,-1,\,)} returns A, B + {tags:sublist(0,1,\,)} returns "A" + {tags:sublist(-1,0,\,)} returns "C" + {tags:sublist(0,-1,\,)} returns "A, B" * ``test(text if not empty, text if empty)`` -- return `text if not empty` if the field is not empty, otherwise return `text if empty`. diff --git a/src/calibre/utils/formatter_functions.py b/src/calibre/utils/formatter_functions.py index e9ff39d3bf..015a639af1 100644 --- a/src/calibre/utils/formatter_functions.py +++ b/src/calibre/utils/formatter_functions.py @@ -432,10 +432,11 @@ class BuiltinSublist(BuiltinFormatterFunction): 'The first item is number zero. If an index is negative, then it ' 'counts from the end of the list. As a special case, an end_index ' 'of zero is assumed to be the length of the list. Examples using ' - 'basic template mode and assuming a #genre value if A.B.C: ' - '{#genre:sublist(-1,0,.)} returns C
' - '{#genre:sublist(0,1,.)} returns A
' - '{#genre:sublist(0,-1,.)} returns A.B') + 'basic template mode and assuming that the tags column (which is ' + 'comma-separated) contains "A, B, C": ' + '{tags:sublist(0,1,\,)} returns "A". ' + '{tags:sublist(-1,0,\,)} returns "C". ' + '{tags:sublist(0,-1,\,)} returns "A, B".') def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index, sep): if not val: @@ -465,10 +466,10 @@ class BuiltinSubitems(BuiltinFormatterFunction): 'then it counts from the end of the list. As a special case, an ' 'end_index of zero is assumed to be the length of the list. ' 'Example using basic template mode and assuming a #genre value of ' - '"A.B.C": {#genre:subitems(0,1)} returns A. {#genre:subitems(0,2)} ' - 'returns A.B. {#genre:subitems(1,0)} returns B.C. Assuming a #genre ' - 'value of "A.B.C, D.E.F", {#genre:subitems(0,1)} returns A, D. ' - '{#genre:subitems(0,2)} returns A.B, D.E') + '"A.B.C": {#genre:subitems(0,1)} returns "A". {#genre:subitems(0,2)} ' + 'returns "A.B". {#genre:subitems(1,0)} returns "B.C". Assuming a #genre ' + 'value of "A.B.C, D.E.F", {#genre:subitems(0,1)} returns "A, D". ' + '{#genre:subitems(0,2)} returns "A.B, D.E"') def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index): if not val: From 283a41916e38386cbe830ff36ee75ce354965411 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 10 Mar 2011 09:34:24 -0700 Subject: [PATCH 15/19] Fix #9295 (problem with article redirects on La Nacion website) --- resources/recipes/lanacion.recipe | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/resources/recipes/lanacion.recipe b/resources/recipes/lanacion.recipe index 425aa9b193..cdee0e5e66 100644 --- a/resources/recipes/lanacion.recipe +++ b/resources/recipes/lanacion.recipe @@ -17,6 +17,7 @@ class Lanacion(BasicNewsRecipe): use_embedded_content = False no_stylesheets = True language = 'es_AR' + delay = 14 publication_type = 'newspaper' remove_empty_feeds = True masthead_url = 'http://www.lanacion.com.ar/_ui/desktop/imgs/layout/logos/ln341x47.gif' @@ -25,7 +26,7 @@ class Lanacion(BasicNewsRecipe): h2{color: #626262; font-weight: normal; font-size: 1.1em} body{font-family: Arial,sans-serif} img{margin-top: 0.5em; margin-bottom: 0.2em; display: block} - .notaFecha{color: #808080} + .notaFecha{color: #808080; font-size: small} .notaEpigrafe{font-size: x-small} .topNota h1{font-family: Arial,sans-serif} """ @@ -38,7 +39,10 @@ class Lanacion(BasicNewsRecipe): , 'language' : language } - keep_only_tags = [dict(name='div', attrs={'id':'content'})] + keep_only_tags = [ + dict(name='div', attrs={'class':['topNota','itemHeader','nota','itemBody']}) + ,dict(name='div', attrs={'id':'content'}) + ] remove_tags = [ dict(name='div' , attrs={'class':'notaComentario floatFix noprint' }) @@ -52,8 +56,7 @@ class Lanacion(BasicNewsRecipe): remove_attributes = ['height','width','visible','onclick','data-count','name'] feeds = [ - (u'Ultimas Noticias' , u'http://servicios.lanacion.com.ar/herramientas/rss/origen=2' ) - ,(u'Politica' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=30' ) + (u'Politica' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=30' ) ,(u'Deportes' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=131' ) ,(u'Economia' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=272' ) ,(u'Informacion General' , u'http://servicios.lanacion.com.ar/herramientas/rss/categoria_id=21' ) @@ -81,17 +84,12 @@ class Lanacion(BasicNewsRecipe): ] - def get_browser(self): - br = BasicNewsRecipe.get_browser() - br.set_debug_redirects(True) - br.set_debug_responses(True) - br.set_debug_http(True) - return br - def get_article_url(self, article): link = BasicNewsRecipe.get_article_url(self,article) if link.startswith('http://blogs.lanacion') and not link.endswith('/'): - return None + return self.browser.open_novisit(link).geturl() + if link.rfind('galeria=') > 0: + return None return link def preprocess_html(self, soup): From 601a1cf7df4515ca58be05e02989065f4a9a98ad Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 10 Mar 2011 09:47:31 -0700 Subject: [PATCH 16/19] Nikkei Businees and JB Press by Ado Nishimura --- resources/images/news/publika.png | Bin 0 -> 290 bytes resources/recipes/jbpress.recipe | 42 +++++++++++++++++++++++ resources/recipes/nbonline.recipe | 33 ++++++++++++++++++ resources/recipes/publika.recipe | 54 ++++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+) create mode 100644 resources/images/news/publika.png create mode 100644 resources/recipes/jbpress.recipe create mode 100644 resources/recipes/nbonline.recipe create mode 100644 resources/recipes/publika.recipe diff --git a/resources/images/news/publika.png b/resources/images/news/publika.png new file mode 100644 index 0000000000000000000000000000000000000000..696a9b42a0fb9e4557862b86bae1f524799fbfb5 GIT binary patch literal 290 zcmV+-0p0$IP)YSNyGbR$j&=bMrxoqm`9Hx* zoQ5@d#}DIo+MjudI4yu`pz+m4KMust8SP#LaUGPv)N*3*@9H2#{*Df!NY%k-3Fa?i oUnx2mzaSW==-?Yz6Q8zz0*7cqEYh_7L;wH)07*qoM6N<$g2-KTQ2+n{ literal 0 HcmV?d00001 diff --git a/resources/recipes/jbpress.recipe b/resources/recipes/jbpress.recipe new file mode 100644 index 0000000000..acfb1c78d6 --- /dev/null +++ b/resources/recipes/jbpress.recipe @@ -0,0 +1,42 @@ +import urllib2 +from calibre.web.feeds.news import BasicNewsRecipe + +class JBPress(BasicNewsRecipe): + title = u'JBPress' + language = 'ja' + description = u'Japan Business Press New articles (using small print version)' + __author__ = 'Ado Nishimura' + needs_subscription = True + oldest_article = 7 + max_articles_per_feed = 100 + remove_tags_before = dict(id='wrapper') + no_stylesheets = True + + feeds = [('JBPress new article', 'http://feed.ismedia.jp/rss/jbpress/all.rdf')] + + + def get_cover_url(self): + return 'http://www.jbpress.co.jp/common/images/v1/jpn/common/logo.gif' + + def get_browser(self): + html = '''
+ + + +
+''' + br = BasicNewsRecipe.get_browser() + if self.username is not None and self.password is not None: + br.open('http://jbpress.ismedia.jp/articles/print/5549') + response = br.response() + response.set_data(html) + br.set_response(response) + br.select_form(nr=0) + br["login"] = self.username + br['password'] = self.password + br.submit() + return br + + def print_version(self, url): + url = urllib2.urlopen(url).geturl() # resolve redirect. + return url.replace('/-/', '/print/') diff --git a/resources/recipes/nbonline.recipe b/resources/recipes/nbonline.recipe new file mode 100644 index 0000000000..c5a06edec7 --- /dev/null +++ b/resources/recipes/nbonline.recipe @@ -0,0 +1,33 @@ +EMAILADDRESS = 'hoge@foobar.co.jp' +from calibre.web.feeds.news import BasicNewsRecipe + + +class NBOnline(BasicNewsRecipe): + title = u'Nikkei Business Online' + language = 'ja' + description = u'Nikkei Business Online New articles. PLEASE NOTE: You need to edit EMAILADDRESS line of this "nbonline.recipe" file to set your e-mail address which is needed when login. (file is in "Calibre2/resources/recipes" directory.)' + __author__ = 'Ado Nishimura' + needs_subscription = True + oldest_article = 7 + max_articles_per_feed = 100 + remove_tags_before = dict(id='kanban') + remove_tags = [dict(name='div', id='footer')] + + feeds = [('Nikkei Buisiness Online', 'http://business.nikkeibp.co.jp/rss/all_nbo.rdf')] + + def get_cover_url(self): + return 'http://business.nikkeibp.co.jp/images/nbo/200804/parts/logo.gif' + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + if self.username is not None and self.password is not None: + br.open('https://signon.nikkeibp.co.jp/front/login/?ct=p&ts=nbo') + br.select_form(name='loginActionForm') + br['email'] = EMAILADDRESS + br['userId'] = self.username + br['password'] = self.password + br.submit() + return br + + def print_version(self, url): + return url + '?ST=print' diff --git a/resources/recipes/publika.recipe b/resources/recipes/publika.recipe new file mode 100644 index 0000000000..8380d02b17 --- /dev/null +++ b/resources/recipes/publika.recipe @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = u'2011, Silviu Cotoar\u0103' +''' +publika.md +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class Publika(BasicNewsRecipe): + title = u'Publika' + __author__ = u'Silviu Cotoar\u0103' + description = u'\u015etiri din Moldova' + publisher = u'Publika' + oldest_article = 25 + language = 'ro' + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + category = 'Ziare,Stiri,Moldova' + encoding = 'utf-8' + cover_url = 'http://assets.publika.md/images/logo.jpg' + + conversion_options = { + 'comments' : description + ,'tags' : category + ,'language' : language + ,'publisher' : publisher + } + + keep_only_tags = [ + dict(name='div', attrs={'id':'colLeft'}) + ] + + remove_tags = [ + dict(name='div', attrs={'class':['articleInfo']}) + , dict(name='div', attrs={'class':['articleRelated']}) + , dict(name='div', attrs={'class':['roundedBox socialSharing']}) + , dict(name='div', attrs={'class':['comment clearfix']}) + ] + + remove_tags_after = [ + dict(name='div', attrs={'class':['roundedBox socialSharing']}) + , dict(name='div', attrs={'class':['comment clearfix']}) + ] + + feeds = [ + (u'Feeds', u'http://rss.publika.md/stiri.xml') + ] + + def preprocess_html(self, soup): + return self.adeify_images(soup) From 79145377cb9ed669a928cbd2a2d95274d83c3d14 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 10 Mar 2011 09:48:05 -0700 Subject: [PATCH 17/19] Fixes #405 (New news feed) From 04e8972d02810028281977ae683d3b78e7f12791 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 10 Mar 2011 10:24:12 -0700 Subject: [PATCH 18/19] Tutorial for creating subgroups in the Tag Browser --- src/calibre/manual/images/sg_cc.jpg | Bin 0 -> 20049 bytes src/calibre/manual/images/sg_genre.jpg | Bin 0 -> 25152 bytes src/calibre/manual/images/sg_pref.jpg | Bin 0 -> 87492 bytes src/calibre/manual/images/sg_restrict.jpg | Bin 0 -> 26356 bytes src/calibre/manual/images/sg_restrict2.jpg | Bin 0 -> 18493 bytes src/calibre/manual/images/sg_search.jpg | Bin 0 -> 11556 bytes src/calibre/manual/images/sg_tb.jpg | Bin 0 -> 14797 bytes src/calibre/manual/images/sg_tree.jpg | Bin 0 -> 29829 bytes src/calibre/manual/sub_groups.rst | 108 +++++++++++++++++++++ src/calibre/manual/tutorials.rst | 1 + 10 files changed, 109 insertions(+) create mode 100644 src/calibre/manual/images/sg_cc.jpg create mode 100644 src/calibre/manual/images/sg_genre.jpg create mode 100644 src/calibre/manual/images/sg_pref.jpg create mode 100644 src/calibre/manual/images/sg_restrict.jpg create mode 100644 src/calibre/manual/images/sg_restrict2.jpg create mode 100644 src/calibre/manual/images/sg_search.jpg create mode 100644 src/calibre/manual/images/sg_tb.jpg create mode 100644 src/calibre/manual/images/sg_tree.jpg create mode 100644 src/calibre/manual/sub_groups.rst diff --git a/src/calibre/manual/images/sg_cc.jpg b/src/calibre/manual/images/sg_cc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ea32d8cf6b3da826b3cb22d25233b41938506ed GIT binary patch literal 20049 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/sg_genre.jpg b/src/calibre/manual/images/sg_genre.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9a45377724f95f720b976b45d435738cd5f9012 GIT binary patch literal 25152 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/sg_restrict.jpg b/src/calibre/manual/images/sg_restrict.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0400a27b303905d990a39a9e61b04897aae52d7a GIT binary patch literal 26356 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/sg_restrict2.jpg b/src/calibre/manual/images/sg_restrict2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1be7dea603cbee88a3621189032da0cc7b5320e5 GIT binary patch literal 18493 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/sg_search.jpg b/src/calibre/manual/images/sg_search.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb23b129ad94546fb7a35a78c60843ab8241d7b9 GIT binary patch literal 11556 zcmb_?cQ{;a*YD^hh%zJ*goMOkh+c!}y^L;#gb;NwYIG4@w9!M9$&Bbk8J*~z=!_OU zga{J798aF_yzldV*LPj#oa;LG?D=EOJ$tRS*ZS?f?)$g))%4X@0JWNusuBPX4-fGC z`UAL{1;_&k@bUjTt_R`uK}1SKL`X^4V8MVpYQyupi?uAZn*mDQt5Kd%)s z{$=a0@h@|KX(S>fzMd1N0pR1|5s?t$;gJyiJ &Ps_&tG(pz_@jCa@PXfZ$k^6K+ zKmkbG(w?O&5>;`915gm)U0)9Y4L}BPO8?$}@a9Q%<-ve{7wS$9@eF`vWheUCMp_Xa zYH>`v8WuF6DDew=YIm4l26THU25&!GP+NV%&X?#)kAS{h^hkYqDKj^L`|;% zv@;!V%ASzp{h0vU!{876KH|Lj5f>XBs3|>8VDR5W{OsY)nHp}$@?>`t!$&B5?&oCt&QA7GtKOG^# z7PQcJ@EC)WGo(eWYhFx-sU=M`Pteqk%yMz4f#3jkN2FG`tG&rT6yA~j-x>b!C*y$s zI}sIBCMeSYz5)z^1G6oQ?MvPMEq$CK4f7-8Ph|TR<&6=!7b}Y>2^L4HuyQ)Tcz(o^ z>`Ev--{l9{?M!bJd*dP~5Fzp#hNQ3ceP(SGFJenf(7DZxsGGXG_Bqp(Z;9~uT+|8b)OTCaQAR#`O>0aj#&L_ zFq#&V%+kH?rp&L@*e!33+eng&5hLffm@olZNDj>Ro(|`^H#A{L`zP~OMp^>xiVK$vS>1FB z)fJ$dXzdEHAVl~k6!s*%Gvgv}P1+vBWgmsgzAo>&8F815&?pCNpvLiLEuK+jL0vD_cOpir9?p|^^#+}hu z*^*~Su2^?1c9QyuwIOOx3@wWSX9Yw1R^gLp?)Nbwq4lRG{?^@0+FW<#)uzcIQ2?gl zp*<}snlQP>JuOek_DDVzm;nlYf|2JX;)@sN7_S^23ULe4Nd~BZ7=_IcfV5oS^=RYQ_eD{m_uDneij;@K~eYFGWTVCU4A>HHqXYtPrr!v7j( ziU=LK0?Nt^@czhF!0af3~ zMf3N~Z{nxfTbD8u7v`7mzdx8iCt6hteW%!+*16Z< zzY!ME{uN5&nhv7QyW)I+mwRRR-~z1l~(qa!MJN^1-**2z?z_7 zJDuIDN<7f>%0726DNe1Im59YEv02Zwa1E+Xh+EhZN{JNh_SnzBX^X9SfSXH{Prc?p zxWsZ<_-Sf%TAcWYb8FmB>JyR7pd%oHuHD!K!O;6f(8*r`2I}*Ersg|o%C`mbY8`hL zW`gGPOm*h#e+`@Kz8yi#+{CO3rQ9LNlTrFOC)KT)WqxsN_H);LNw`nP;S0=C#ZfV!(P%EOY_14r6vR0jN;> zq++&M30WOi>YVDd^>e**y`709|P{`+i9p(GdVN)F;Yb5 z{Z>&?TzCL$lk*aT++ZbD!n@~(CTS~^1vPfuHEM6q_4%h15^lcd#UCYetaz#(tu6B$ z)!iyh39Eh5okeG*+aVU{f*tBHu!|ocVB18@tK0gkZnCuc$Qhz&W0)CFWk|N_ z4e9hQ^S6h#Jn<4SNfMn#%bhHULh9&ztuVO&_U5$f9H=8 za)nJ(az2HST}?JNsYtGP_xJ3c=UT%B=m+g)r>e7u+|P~Ld)Sk2*vYWWQNM z362eOTVV|!7{W3mzpj0~MbM|~oED3!Bir1(ySlc>2cH`B?WT1Ftu|k*!-_ic-s^?* z$VXYq^4cLkGs}jAu+pkL%10voLFB78v2D;@tG5+s+)VAS8LGsgmDZfelNKUwYtzXl zyk9xeg@3N}!=F(2mDGRk%Mlb&Pgm%kjySmX*v=M2PI{bFolIz(zx(`9>uB+X>MP*^ z*Bih4mdH+=HM-wLePo1UxR}i<(P%Vb7UUyRKOVnFX6XyT^M5E7)|Hj`{Z~Z)w)6i* zM7_(;VVn79?wJ3v@+p<&L`4Nft(^eRDBJF@kp56`VoFE8^S7v|63J6;tB_R-LMXU- zN{l@4Ymg>NU2ydaC7Vrx`o<=Gq~p)Jw6zyNJ@_HbJuF2sa%|@JDK$H z$XTmby#h=e+u)Y&T><9pWatGmd|nDWTcktsFap4@G0fdQV6hol(-Vk0nOx8%eI|>O zg71CWBL7YSqZs}>nz#9!OL?DK-z%C98>K(zBuk|#8QJxdkH+`4I4i~Oz@@!bpHwS5uu|>A>X1cOfs}(vCV$1D5hwuY zMvDQd8~zfNS9=s_dS4huIX+gHSMF4HA<}$ABZd{;i;k$9bNIb~fltiuVma$nZCoa> zBTJ-UDTl7F?T0&q>|dcd?DZ_bl#kMikw@LpO>qyJmBXWJJUjWLleocKzb?iF#Z>$$ zxZkJc28Zjs1_fh4lW|_+I;FaUj|ap+ksEgiyk{jiXgYNN9m>n>Cj~_{GSzvgCe0V2ino-`pGyESdDJZ#eKyZKkV= z4ft$pC*?$8fq3YRo_>cIK2=ZWt6wQ8hB2#G%Eea$^Cha-*XpiEv#6rht&M)o#uGR& z#5n;T$_f8MDvbD?xWU?;fK8r&^TNX=V&2D`bA4IY?)l~zKyMaz^R^E{dmHzxFY)CT z2?5za8J;ZhsXyyR#s;P9;kQutD*%hxQ4s@B1pH+>l0HfKZM&Ua9#ln5CnSc0^`tB7}VaMZ{yBw@?xu=Vo1Q_Js7w$R!51HrS3 z#q;HogQO;NTqoC!tyLX7?SR0L#XyPuMBkZJ{cmi=^|8h?j=oK3_1g7cR8c=~3Qy3aEM zZuzKHJ6`d%IFJkrFSH$ey8|pKV#h(l>YT6FnM9M@57}AjxzdroP_b0GZbp*T&?ni*1((^ zMmI%2??I69Goz6@j59z~fbUz}euF2U=>4kpUMFzDH$$5Zp-5zWJPIS!Yb5cROqYZ8 zbzgu|6O+sS=1w5N7cY%fzI`gcv0deOxAklv^_cZnmzHx!Jhx`ydkub=*0dtWu2s@e zno>^~=c9yX{-QY(3BudIiWdy#h#g8c+N; z(e-*cqfhL+=hk`t9lu=Zlgk-xkJC{@r8;*Lu6TFoCGLv^yZe_aGB|jrGOddG-992TXE9me0kS+P3!JA$kTe zcCjA;ki(p;cK?gOz9OQP>5q~9YA@DG5)q%&!GiZ^IeP4M5qXoPIt ztrB*q;a_0|>9@~hW)|WqQa6icy*7N)zWTEC9|nHd z#*Fy7`GLYy3Fr_4M{ic<2sO6z0%RN;syk+is#O~r+ac6RYnh|!QVjp< z=}39Y%ETm*xd_vGhEB=KJP#qe$x|{Rl4_VUs$UIKqzw6JuRGaWK2XD( z!wbgv@vk#=?W?LOHU&ho`^eI;WE8$$Q%qv`&&&Q`Nk7jo<5f+*Sw)#gdD;p5-DnW0 zv)?e-8bk`O!jQ3%k>P>x(eAm^?oHVruK*ezy{kt0ef$?Iad#-lu&TE*uK?RU-2G)K zuWhPY9A5r*r8H}-QksbahmuiXr$H_PI#+-WByu^nP%`YLTP-}?9BjYb(E#%jOLc#P zT(o&OHQDt6d@@vZ+WMC9c|U@J3LOG!8M}<(T-U0hr;iE*rlyTvvNQmN4NN`E+}zr> zkfT%bd|&;Z4pvI_hoyvU(89_GwVr~FBCyAiZmi+tFd>Ck$pSh_^|M9mP>>uH6Kp ze?g`=GUk@;UvI|YT~Gu4s5~H@6Cc7J28CDUlB($>VF0#{J8F>F#0V(e`o3R{-2AQE zUPYg>QfrTALswBzocZ`soH^v2sGyPq51^?9r%!ZK`4ymrUoTsFqgQ%@XsCHT{2VuP zvd;Cwh!u43!!L11IooYD+g?*q_CH0uGZ%{aoSsk#9`E>7k-V%pwsP#;Q$`R(+miI0 zlD*sUuu%z@;U7CjJWTW`P3a9Y50)xuk;`2)hvXNqFe*iV!2D%jhORf^av95x6qhT7 z31Xqv>=AzcPs^MFdzFQ8j|#wO!?#oBt-^-zI7ipfpD(S^U9WO@M1JLj0<#qX=$JRh z_vE$BABd5;EhkNjW-vtruP{C+XO4WLuC87FRRXhP@q%m-oG>NhV}<{uO;ghHQqs```0bln z7|hsN;*LhyTXZoJ|0x*5zI_kJ624|qeO#=p(M@214l5qa1+%l>{PK9&BlnmdB!7eq zq|?jPZWo@7FlvZdV2bzz2h}x^jUI_Y=&HK?7UHc*_2Q!MOL4wCZ8u?`FQ4xvw9OvezD=+7HQk zGz{2S9F-|NPQ>L-Br=<-hf6Le8^-%6s1yADzI*J;H#M_-ilgkz*q62@I8T;Nr1oUaEk1t5a)WPs#5tEH0Vy|?R`<~?o{ zYAeAjUZ5DWca4iq3?p|aDv5=xf8P+81HZ4R-jRKj2-T6HG#@v#*V9zDcQ8ItdJh?! zMvm0%zno>R-%EN0?Bt*G8MxRFP!8>^#OB?z$U~7)`vh38Ni2Jgioe!z1lznwCg072 zrjiJfnLqq=USK>r6K(x&mb2xv{dhkuI2gC0Ahk*Sb!Fa*6zs+k6p|BCpgJ>=e5}+J zhk*Wmwq;=8AbwCZu^&@kP;vCTyJEySlW%Dw{0?0sPuD(^WH_SuNa4Bb2bH?{Rb}tY zJoUi}OOYzfat)*M{WDd{uvT^WIbr->(5q(+(f);l?(G=S@N4=E*Cc7vgt=q@cD!$Z z3GR~m!)fcRSztCdt}>@AyyRTbwuwg8%z~^@{gH zo&u-G-^-nCKMA$Ei$JQo6>~w3yRx8eo#e9Qd*B=EQQQ~JUw2wVoP4Oy#)9|=*-An zhsph~&dcAtyq6+gwv;+zf2l2_q`voM3}pd?tpSlBZF_N-LUeFI7O;Izf{n}n^}7(? zIfjZ=kWHf_B07#oaS)o2TZP8rfRN^Z=SU<{GFV!{(XerOgMdfsnZlz|+K02e@z@8j zl418ON9G;LbBL#JfTVE9Y}eBCS4{1BfBZ!(WL3Jdx^@Zi9O)krxbBNo#W!xbw9;Fe&!&+yn6tM1<+G=zy3YAQ%@B`8=;Y?q zpKgXxrgBf|u~jpZ@uxSA!Sm~<(ei!SG`*xRAGlytAW$`CXZ8DBIzUyjb#{#Dgu-?m zAN^D(bp0;(!*(Z?@Hl_8jY21;dmm!%t=XX-Y0x`Vq4H8LDIO{z=bk%g;sk8E0G>4O zgxU{DW|a=R?*7TJ@}C^$x@w87{cL1k@l&pv-4Qt8u9AEZ8FJwCkT(0>`OB2}tQ?5m zsfX*1jTzS9Lklm@@w?RL?PAVe?eINbTGxWfBX(ie8!T$L?X+zb7YxUv!c-1{FRBmJ zOxUS|xr=gV-EHiLWrV1gUpQ;?&L#x@>Cyd-6rDPf2oOV2+XLZv6M9?C22iTRVFPDE$=#VBuxG~xb z54r7EJVJNZv@5=|Lw_1GG>bv18wdj5 zwYv*l7t$uZ(o7YQk_@6xGUQ0TRn{Q6uq3MN#lY?sAN=?AobL0sfyMiW@@1z*!jBI_+fFgbjcqs$1u02EG!(L5O|hJKmqnd8c7 zaK~;KSwi$;9-?Y}PwjT6s6WMr#)c^?Mr~ph}@Zx)$ zGw$%L@!5`%`VOhLl~!P7U406|6$1IN!X&&E%gZILOTEyt3c zIHhfau!_B^0o;gmsP>i`!5)h}r`+@?85QR(a&7Rlzmf3=GsZ^jDP+o^tfO}x<8w6` zep_};&(XE&OYfT*V0$JpW?xGh?s`>4h%`t%SCp~swYW4iRga>;PAMmYjhq|~< z+tSXhqrJ&w@yVshJbm{c{Qg1fIElN_-(Kc$XMX=-8#q{!on@IPO!Xi8f@>b?FD?pj z-P9n4?!9@p=$Lv&Un;dxawxjgc-pVc_WGfkT;FZIqGP%NNcQCAyZM)bNo!LdSGlHM zQ7FVY`#`21r9X8N!r-S&2FIfdSUKr7o6n{nZN8L`#tHO1WL}?T*tj)?0p*n69B>{x zH6%%Aj`(TWZH=xN<)KB=CX}5QWjtE<_p~KVj6a|+SZzp=Qir!A%!rfpYDPmjsjLIq zU|KC5PnjF&HZ6K8{A73)tQH@t*5@9!t8R(lvIukXUGauO_Cd-81G1Y%V}TUGtHBW! zYT6#CKJB0TZ=KIO?T7G}u-tj#?)7R|dTyywg?rUp1V zs=uh4H?E_qRwt|TpjvN^VFmmljtRa@@vyQAR(#~>Bv{Uql5qm>0i*Q0^wI9jH>`h) z-1e~7=8pI-l1$V0uHPkVbs@@UF}JXwqU6cEz5BUpaei@K;%X}96|l{zAlpCvRXWKX z^?mS^=!ILU6ZM?!hYBp z}bC4a$R&8h<8+n zmRe=~#5Uyxn5aG^tFE$Dyg}*TEN!O2rSCZbj0KLHUHg+eGeaC4>@Z^0Y z7W;w*Qy-amP+`;buAjk42c&#nU}ZaATi458Rgz=F;-7+dDnRbr0POqGGqb z7>!i5f`Q_rA|knJf$KHQ&u=*us~R1nl|06-nU+0_XCURbYIE>dXcx&TFlCih5YA~n zT3$kQi>juCWg#pm0YOKUoi_J)=CHrYLBH7ZS4P<>j6+Q!Y`|uvb`tsBnw&Epb?bV6 zCX!4wUcVDo<&^q1xPPtW#PPd>=lI;Z(00l-vFG6!TAm6eS2H{a2`M0#!mV!$^ZtX2 zjp0hfoN!4pJnM=zg7&T4ULvZPX`_JRH5EV0onD5{@P(8<_Mf)KRPAyZss*a_-Rd7u zhSTOYomw^0w7bq2i5uN`v6+rYWN{eHg;{m@(;7Qs$9BZ}BlLK~dL3(L)RJP@6jcER z;eQC!xWD-3-}QwaHF|@?l4akjp!jfVUlKBehQ-<4!&wuHGahe5ZeszTSa~|PJW_u- zrNRu+i48627Edv#FsSBCIeJAI{N#DH2~#;ozgg+<{dOve)yAChTkRH;Sfgr3fvFCZ zzPKmp%zVN>45kK1zc~EuD+hmWIDG}cE6=o^9+t=Ud+Ph5oI$D5-vz8fH8iZ1)Qdbe z3~NZO6&Xz)nC_I5CaoA_if)E;fl+)(mijZdND{_PPqO_dB=!$cD(j}>?vj+>0FwG| z{%A6z4ggNVU~O3ci)3t zEgJi|7wQbr)QK(2ii)qI!9A(75-WX)EU&_O+MT$3qWmvkotLB>;*UNxY-Po(c6*eX zrU{Q#_nfD9n{kqw5JH}56qk^iH?t;Fi{LH#lM}2hD862u1m%}&f6{m()rDl|)sV%p zfT+N(39Pi$_aaeL;e5PU?;vpW(tJ~cTcN9FmwfN1uE6w}C|2oJw9rT4&C|l|Y*}sp zQ^T1(`-;)MtAE9hOf;BZt@ zMfzu2wSfD5u}C!t5Fni+`%0!Six)at7QvJr`t6dWPp0h5pdp`BaWNJq+WmDf!+n_w z3=b#vDS@EXo0RNo4F4{6OkWwR01D)Isu z2)=V#;0;@4ehvxNt&he}_OAem2)bY+$3l`BZ=N}-o%?GyQF%TBz@41htap(R>H7h+ zp4swqhWUn>-silf-;uMCg`1U7jI{$sceZrk$G1Dod7GYfxFs_-^*UU?T{c-HDRksU z!jaL} z=MIlx&Th3v-A;T6hFN&3w@On-`7pNqsp;yi5^4&1TYS%SScxMg9@yT<>dB`Glmw(>l!i}`;0QIx+p}0VL=68DM>kU}&-VCUP9L_g13p}gW9-_207T=N_md8+YdJBO3-#A$mmr_s8H zv!Ilu_?qNV@0|U5>*y%zKEbVzW za`Z+l4_g({-wcw&(1#Q>(k(;cfQF% zL<(P%uG6m4Sx&k;86P#yeJI+?^~^r?@V=g0*~8JP{=ou8gG(m25ClmWkD0Dt-Rf(B zRV7h}4D8W)Uxo`t&H5W9O0syHIuyeiFI1i!%5F+;TCtR_B^Sk6oOJ#21b*GX<#x># zK&<-GKk8FH>hCuymNc**bvEVHBZxpI%%3HuNshkxlK+U}q*z;y5v7Q|0$5f+r(^Op z3a!Gen$d2#KR#HHuE{m*RH(}Eo8X-8`b9fB-BGM<%-}Y}h;fLQx(^-@`D}VIwcOl8 zMd1z8rMkBZO!Doswx^8yCc5>}@Z0ICK{+2Zm@fJ(ytyX0a8f)7S9fE5iN6ygQMV6l*PW~ae~wu52NtNoo2^5LvJ`?*0HCf0+xBVfl*{db zjZ5DJl`X!E=NdK+)xy#nPoiPsD#`aJ?xG&d0Yf?99Q%3W8(a(_Wy#e!oH2aq?0He3 UM%t)rw*NYm|6)w9#jBbB1*J1*%m4rY literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/sg_tb.jpg b/src/calibre/manual/images/sg_tb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eeb5e73c9724b5d2b7b03471a756c798c787ae5f GIT binary patch literal 14797 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 h%nH literal 0 HcmV?d00001 diff --git a/src/calibre/manual/images/sg_tree.jpg b/src/calibre/manual/images/sg_tree.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c116f2f46a0540d20ff61443aa51743d3feb54ba GIT binary patch literal 29829 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 literal 0 HcmV?d00001 diff --git a/src/calibre/manual/sub_groups.rst b/src/calibre/manual/sub_groups.rst new file mode 100644 index 0000000000..174f015f6a --- /dev/null +++ b/src/calibre/manual/sub_groups.rst @@ -0,0 +1,108 @@ + +.. include:: global.rst + +.. _subgroups-tutorial: + +Managing subgroups of books, for example "genre" +================================================== + +Some people wish to organize the books in their library into subgroups, similar to subfolders. The most common wish is to create genre hierarchies, but there are many others. One user asked for a way to organize textbooks by subject and course number. Another wanted to keep track of gifts by subject and recipient. I will use the genre example for the rest of this post. + +Before I go on, please note that I am not talking about folders on the hard disk. Subgroups are not file folders. Books will not be copied anywhere. Calibre's library file structure is not affected. Instead, I am talking about a way to display subgroups of books within a calibre library. + +.. contents:: + :depth: 1 + :local: + +.. |sgtree| image:: images/sg_tree.jpg + :class: float-left-img + + +The commonly expressed requirements for subgroups such as genres are: + + * A subgroup (e.g., a genre) must contain (point to) books, not categories of books. This is what distinguishes subgroups from user categories. + * A book can be in multiple subgroups (genres). This distinguishes subgroups from physical file folders. + * Subgroups (genres) must form a hierarchy; subgroups can contain subgroups. + +|sgtree| Tags give you the first two. If you tag a book with the genre then you can use the tag browser (or search) for find the books with that genre, giving you the first. Many books can have the same tag, giving you the second. The problem is that tags don't satisfy the third requirement. They don't provide a hierarchy. + +Calibre's new hierarchy feature gives you the third, the ability to see the genres in a 'tree' and the ability to easily search for books in genre or sub-genre. For example, assume that your genre structure is similar to the following:: + + Genre + . History + .. Japanese + .. Military + .. Roman + . Mysteries + .. English + .. Vampire + . Science Fiction + .. Alternate History + .. Military + .. Space Opera + . Thrillers + .. Crime + .. Horror + etc. + +By using the hierarchy feature, you can see these genres in the tag browser in a tree form. As you can see, in this example the outermost level (Genre) is a custom column. The genres themselves appear under that column. Genres containing sub-genres appear with a small triangle next to them. Clicking on that triangle will open the item and show the sub-genres, as you see with History and Science Fiction. + +Clicking on a genre will search for all books with that genre or children of that genre. For example, clicking on Science Fiction will give all three of the child genres, Alternate History, Military, and Space Opera. Clicking on Alternate History will give books in that genre, ignoring those in Military and Space Opera. Of course, a book can have multiple genres. If a book has both Space Opera and Military genres, then you see that book if you click on either genre. Searching is discussed in more detail below. + +Another thing you can see from the image is that the genre Military appears twice, once under History and once under Science Fiction. Because the genres are in a hierarchy, these are two separate genres. A book can be in one, the other, or (doubtfully in this case) both. For example, Winston Churchill's World War II books could be in "History.Military". David Weber's Honor Harrington books could be in "Science Fiction.Military", and in "Science Fiction.Space Opera" for that matter. + +Once a genre exists, that is the genre has been applied to at least one book, you can easily apply it to other books by dragging a book from the library view onto the genre you want the book to have. You can also apply them in the metadata editors. More on this below. + +Setup +---------------------------------------- + + +Your question by now might be "how did I set all of this up?". There are three steps: 1) create the custom column, 2) tell calibre that the new column is to be treated as a hierarchy, and 3) add genres. + +I created the custom column in the usual way, using Preferences -> Add your own columns. I used "genre" as the lookup name and "Genre" as the column heading. The column type is "Comma-separated text, like tags, shown in the tag browser." + +.. image:: images/sg_tree.jpg + :align: center + +Then after restarting calibre, I told calibre that the column is to be treated as a hierarchy. I went to Preferences -> Look and Feel and entered the lookup name "#genre" into the "Categories with hierarchical items" box. I pressed Apply and was done with setting up. + +.. image:: images/sg_pref.jpg + :align: center + +At the point there are no genres. We are left with the last step: how to apply a genre to a book. A genre does not exist until it appears on at least one book. To apply a genre for the first time, we must go into some detail about what a genre looks like in the metadata for a book. + +A hierarchy of 'things' is built by creating an item consisting of phrases separated by periods. Continuing the Genre example, these items would "History.Military", "Mysteries.Vampire", "Science Fiction.Space Opera", etc. Thus to create a new genre, you pick a book that should have that genre, edit its metadata, and enter the new genre into the column you created. Continuing my example, if I want to assign a new genre "Comics" with a sub-genre "Superheros" to a book, I would 'edit metadata' for that (comic) book, choose the Custom metadata tab, and then enter "Comics.Superheros" as shown in the following (ignore my other custom columns): + +.. image:: images/sg_genre.jpg + :align: center + +After I do the above, I see in the tag browser: + +.. image:: images/sg_tb.jpg + :align: center + +From here on, to apply this new genre to a book (a comic book, presumably), I can either drag the book onto the genre, or add it to the book using edit metadata in exactly the same way as I did above. + +Searching +--------------- + +.. image:: images/sg_search.jpg + :align: center + +The easiest way to search for genres is to use the tag browser, clicking on the genre you want to see. Clicking on a genre with children will show you books with that genre and all child genres. However, this might bring up a question. Just because a genre has children doesn't mean that it isn't a genre in its own right. For example, a book can have the genre "History" but not "History.Military". How do I search for books with only "History"? + +The tag browser search mechanism knows if an item has children. If it does, clicking on the item cycles through 5 searches instead of the normal three. The first is the normal green plus, which shows you books with that genre only. The second is new: a doubled plus (shown below), which shows you books with that genre and all sub-genres. The third is the normal red minus, which shows you books without that exact genre. The fourth is new: a doubled minus, which shows you books without that genre or sub-genres. The fifth is back to the beginning, no mark, meaning no search. + +Restrictions +--------------- + +If you search for a genre then create a saved search, you can use the 'restrict to' box to create a virtual library of books with that genre. This is most useful if you want to do other searches within the genre or to manage/update metadata. For this example I created a saved search named 'History.Japanese' by first clicking on the genre Japanese in the tag browser to get a search into the search box, entering History.Japanese into the saved search box, then pushing the "save search" button (the green box with the white plus, on the right-hand side). + +.. image:: images/sg_restrict.jpg + :align: center + +Once I have done that, then I can use this search as a restriction. + +.. image:: images/sg_restrict2.jpg + :align: center + diff --git a/src/calibre/manual/tutorials.rst b/src/calibre/manual/tutorials.rst index ecd40222d4..c156167cb1 100644 --- a/src/calibre/manual/tutorials.rst +++ b/src/calibre/manual/tutorials.rst @@ -12,6 +12,7 @@ Here you will find tutorials to get you started using |app|'s more advanced feat :maxdepth: 1 news + sub_groups xpath template_lang regexp From f2d9d401465ffc40e3c877ef0bbc3630016a7fb4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 10 Mar 2011 10:48:40 -0700 Subject: [PATCH 19/19] Conversion pipeline: If the input HTML document uses uppercase tag and attribute names, convert them to lowercase --- src/calibre/ebooks/oeb/base.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py index 7e99916fc3..7f3f40184c 100644 --- a/src/calibre/ebooks/oeb/base.py +++ b/src/calibre/ebooks/oeb/base.py @@ -908,6 +908,19 @@ class Manifest(object): pass data = first_pass(data) + if data.tag == 'HTML': + # Lower case all tag and attribute names + data.tag = data.tag.lower() + for x in data.iterdescendants(): + try: + x.tag = x.tag.lower() + for key, val in list(x.attrib.iteritems()): + del x.attrib[key] + key = key.lower() + x.attrib[key] = val + except: + pass + # Handle weird (non-HTML/fragment) files if barename(data.tag) != 'html': self.oeb.log.warn('File %r does not appear to be (X)HTML'%self.href)