This commit is contained in:
GRiker 2012-06-01 05:23:50 -06:00
commit 6b91a0565c
279 changed files with 55648 additions and 52674 deletions

View File

@ -3,9 +3,9 @@
src/calibre/plugins src/calibre/plugins
resources/images.qrc resources/images.qrc
src/calibre/ebooks/oeb/display/test/*.js src/calibre/ebooks/oeb/display/test/*.js
src/calibre/manual/.build/ manual/.build/
src/calibre/manual/cli/ manual/cli/
src/calibre/manual/template_ref.rst manual/template_ref.rst
build build
dist dist
docs docs

View File

@ -4,11 +4,6 @@ License: GPL-3
The full text of the GPL is distributed as in The full text of the GPL is distributed as in
/usr/share/common-licenses/GPL-3 on Debian systems. /usr/share/common-licenses/GPL-3 on Debian systems.
Files: src/calibre/ebooks/pdf/*.h,*.cpp
License: GPL-2 or later
The full text of the GPL is distributed as in
/usr/share/common-licenses/GPL-2 on Debian systems.
Files: setup/iso_639/* Files: setup/iso_639/*
Copyright: Various Copyright: Various
License: LGPL 2.1 License: LGPL 2.1

View File

@ -19,6 +19,117 @@
# new recipes: # new recipes:
# - title: # - title:
- version: 0.8.54
date: 2012-05-31
new features:
- title: "E-book viewer: The Table of contents panel now tracks the current position in the book. As you scroll through the book, the entry you are currently on is highlighted."
type: major
description: "To see this feature in action, open the Table of Contents panel in the viewer by clicking the button with three blue lines on it. As you page through the book, the chapter you are reading currently is highlighted in the Table of Contents Panel. Obviously, this will only work if the book you are reading has a Table of Contents. You can also use the Ctrl+PgUp and Ctrl+PgDn keys to quickly skip between chapters."
- title: "calibredb: Allow setting metadata for individual fields with the set_metadata command"
- title: "Make it a little harder to accidentally change the sorting of items in the Tag Browser. Also frees up more vertical space for the Tag Browser itself."
- title: "The calibre user manual is now available in AZW3 format as well as EPUB"
bug fixes:
- title: "Automatic titlecasing: No longer try to capitalize scottish names, as there are too many special cases."
tickets: [775825]
- title: "Never crash when reading metadata from PDF files (reading now always happens in a worker process)"
tickets: [1006452]
- title: "EPUB Input: Do no skip the valid children of an NCX node that has no text/href"
- title: "Archos driver: Detect SD card"
tickets: [1005650]
- title: "When bulk downloading metadata and the user deletes one of the books for which metadata is being downloaded, just ignore it, instead of erroring out"
- title: "When deleting books from the bottom of the booklist, ensure that the bottom book after deleting is selected"
- title: "Fix regression in 0.8.53 that broke sending APNX files to older Kindle devices"
- title: "Use correct text color for selected rows in the list of matches when downloading metadata and showing results in get books."
tickets: [1004568]
improved recipes:
- The Independent
- Welt der Physik
- China Daily
- The Grid
- Prospect Magazine
new recipes:
- title: La gazetta del Mezzogiorno
author: faber1971
- version: 0.8.53
date: 2012-05-25
new features:
- title: "Kindle Touch/4 driver: Upload cover thumbnails when sending books to device by USB to workaround Amazon bug of not displaying covers for sync-enabled books"
- title: "Support for updating metadata in FB2 files"
- title: "Set a different background color when choosing formats to not delete as opposed to choosing format to delete."
tickets: [ 1001741 ]
- title: "E-book viewer: Add an option to prevent the up and down arrow keys from scrolling past page breaks"
- title: "Get Books: Remove ebookshoppe.com at the website's request"
bug fixes:
- title: "PDF Input: Support image rotation commands in PDF files. Fixes the long standing problem of some images being flipped when converting from PDF in calibre."
- title: "Fix a regression in 0.8.51 that caused conversion to HTMLZ to not have any CSS"
- title: "Get Books: Fix website change at kobo.com causing prices not to be found"
- title: "Edit the time in the 24 hour clock when calibre's interface language is set to German."
tickets: [ 1001809 ]
- title: "MOBI Output: When generating joint KF8/MOBI6 .mobi files set the text length field in the MOBI 6 header correctly. "
tickets: [ 1003489 ]
- title: "ODT Input: More workarounds for LibreOffice 3.5's habit of inserting pointless margin:100% directives everywhere."
tickets: [ 1002702 ]
- title: "Fix regression that broke smarten punctuation when quotes were next to html tags."
tickets: [ 998900 ]
- title: "Fix published date from ozon.ru wrong in some timezones"
tickets: [ 975338 ]
- title: "Catalogs: Handle the use of custom columns with non-ascii names correctly"
tickets: [1001437]
- title: "Conversion pipeline: Remove the attempt to detect and autocorrect if text will go off the left edge of the page, as it was a rather crude heuristic. Also do not remove fake margins if the book uses negative text indents on the margined elements."
- title: "KF8 Output: Set offsets to tags in the skeleton the same way kindlegen does. Also linearize non linear ToCs to ensure section to section jumping works."
- title: "Conversion pipeline: Use correct default value of 'inherit' for font-family and font-size when normalizing the shorthand font property."
- title: "When running python scripts via calibre-debug ensure that user plugins are loaded"
improved recipes:
- Business Week Magazine
- Metro Nieuws NL
new recipes:
- title: Attac.es
author: Marc Busque
- title: Drytooling.com
author: Damian Granowski
- title: Shortlist.com
author: Dave ASbury
- title: National Geographic (es)
author: vakya
- version: 0.8.52 - version: 0.8.52
date: 2012-05-18 date: 2012-05-18

View File

@ -14,7 +14,7 @@
import sys, os import sys, os
# If your extensions are in another directory, add it here. # If your extensions are in another directory, add it here.
sys.path.append(os.path.abspath('../../../')) sys.path.append(os.path.abspath('../src'))
sys.path.append(os.path.abspath('.')) sys.path.append(os.path.abspath('.'))
__appname__ = os.environ.get('__appname__', 'calibre') __appname__ = os.environ.get('__appname__', 'calibre')
__version__ = os.environ.get('__version__', '0.0.0') __version__ = os.environ.get('__version__', '0.0.0')
@ -98,7 +98,7 @@ html_favicon = 'favicon.ico'
# Add any paths that contain custom static files (such as style sheets) here, # Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the built-in static files, # relative to this directory. They are copied after the built-in static files,
# so a file named "default.css" will overwrite the built-in "default.css". # so a file named "default.css" will overwrite the built-in "default.css".
html_static_path = ['resources', '../../../icons/favicon.ico'] html_static_path = ['resources', '../icons/favicon.ico']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format. # using the given strftime format.

View File

@ -669,7 +669,6 @@ Some limitations of PDF input are:
* Complex, multi-column, and image based documents are not supported. * Complex, multi-column, and image based documents are not supported.
* Extraction of vector images and tables from within the document is also not supported. * Extraction of vector images and tables from within the document is also not supported.
* Some PDFs use special glyphs to represent ll or ff or fi, etc. Conversion of these may or may not work depending on just how they are represented internally in the PDF. * Some PDFs use special glyphs to represent ll or ff or fi, etc. Conversion of these may or may not work depending on just how they are represented internally in the PDF.
* Some PDFs store their images upside down with a rotation instruction, |app| currently doesn't support that instruction, so the images will be rotated in the output as well.
* Links and Tables of Contents are not supported * Links and Tables of Contents are not supported
* PDFs that use embedded non-unicode fonts to represent non-English characters will result in garbled output for those characters * PDFs that use embedded non-unicode fonts to represent non-English characters will result in garbled output for those characters
* Some PDFs are made up of photographs of the page with OCRed text behind them. In such cases |app| uses the OCRed text, which can be very different from what you see when you view the PDF file * Some PDFs are made up of photographs of the page with OCRed text behind them. In such cases |app| uses the OCRed text, which can be very different from what you see when you view the PDF file

View File

@ -5,9 +5,9 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
import sys, os, re, textwrap import sys, os, re, textwrap
sys.path.insert(0, os.path.abspath('../../')) sys.path.insert(0, os.path.abspath('../src'))
sys.extensions_location = '../plugins' sys.extensions_location = '../src/calibre/plugins'
sys.resources_location = '../../../resources' sys.resources_location = '../resources'
from sphinx.util.console import bold from sphinx.util.console import bold
@ -116,44 +116,42 @@ def generate_ebook_convert_help(preamble, info):
from calibre.utils.logging import default_log from calibre.utils.logging import default_log
preamble = re.sub(r'http.*\.html', ':ref:`conversion`', preamble) preamble = re.sub(r'http.*\.html', ':ref:`conversion`', preamble)
raw = preamble + textwrap.dedent(''' raw = preamble + textwrap.dedent('''
Since the options supported by ebook-convert vary depending on both the The options and default values for the options change depending on both the
input and the output formats, the various combinations are listed below: input and output formats, so you should always check with::
ebook-convert myfile.input_format myfile.output_format -h
Below are the options that are common to all conversion, followed by the
options specific to every input and output format
''') ''')
toc = {} parser, plumber = create_option_parser(['ebook-convert',
sec_templ = textwrap.dedent('''\ 'dummyi.mobi', 'dummyo.epub', '-h'], default_log)
.. include:: ../global.rst groups = [(None, None, parser.option_list)]
for grp in parser.option_groups:
if grp.title not in {'INPUT OPTIONS', 'OUTPUT OPTIONS'}:
groups.append((grp.title.title(), grp.description, grp.option_list))
options = '\n'.join(render_options('ebook-convert', groups, False))
{0} raw += '\n\n.. contents::\n :local:'
================================================================
.. contents:: Contents raw += '\n\n' + options
:depth: 1 for pl in sorted(input_format_plugins(), key=lambda x:x.name):
:local: parser, plumber = create_option_parser(['ebook-convert',
'dummyi.'+list(pl.file_types)[0], 'dummyo.epub', '-h'], default_log)
groups = [(pl.name+ ' Options', '', g.option_list) for g in
parser.option_groups if g.title == "INPUT OPTIONS"]
prog = 'ebook-convert-'+(pl.name.lower().replace(' ', '-'))
raw += '\n\n' + '\n'.join(render_options(prog, groups, False, True))
for pl in sorted(output_format_plugins(), key=lambda x: x.name):
parser, plumber = create_option_parser(['ebook-convert', 'd.epub',
'dummyi.'+pl.file_type, '-h'], default_log)
groups = [(pl.name+ ' Options', '', g.option_list) for g in
parser.option_groups if g.title == "OUTPUT OPTIONS"]
prog = 'ebook-convert-'+(pl.name.lower().replace(' ', '-'))
raw += '\n\n' + '\n'.join(render_options(prog, groups, False, True))
''')
for i, ip in enumerate(input_format_plugins()):
sraw = sec_templ.format(ip.name)
toc[ip.name] = 'ebook-convert-%d'%i
for op in output_format_plugins():
title = ip.name + ' to ' + op.name
parser, plumber = create_option_parser(['ebook-convert',
'dummyi.'+list(ip.file_types)[0],
'dummyo.'+op.file_type, '-h'], default_log)
cmd = 'ebook-convert '+list(ip.file_types)[0]+' '+op.file_type
groups = [(None, None, parser.option_list)]
for grp in parser.option_groups:
groups.append((grp.title, grp.description, grp.option_list))
options = '\n'.join(render_options(cmd, groups, False))
sraw += title+'\n------------------------------------------------------\n\n'
sraw += options + '\n\n'
update_cli_doc(os.path.join('cli', toc[ip.name]+'.rst'), sraw, info)
toct = '\n\n.. toctree::\n :maxdepth: 2\n\n'
for ip in sorted(toc):
toct += ' ' + toc[ip]+'\n'
raw += toct+'\n\n'
update_cli_doc(os.path.join('cli', 'ebook-convert.rst'), raw, info) update_cli_doc(os.path.join('cli', 'ebook-convert.rst'), raw, info)
def update_cli_doc(path, raw, info): def update_cli_doc(path, raw, info):

View File

@ -39,7 +39,7 @@ Tweaks
Tweaks are small changes that you can specify to control various aspects of |app|'s behavior. You can change them by going to Preferences->Advanced->Tweaks. Tweaks are small changes that you can specify to control various aspects of |app|'s behavior. You can change them by going to Preferences->Advanced->Tweaks.
The default values for the tweaks are reproduced below The default values for the tweaks are reproduced below
.. literalinclude:: ../../../resources/default_tweaks.py .. literalinclude:: ../resources/default_tweaks.py
Overriding icons, templates, et cetera Overriding icons, templates, et cetera

View File

@ -45,6 +45,16 @@ All the |app| python code is in the ``calibre`` package. This package contains t
The format independent code is all in ebooks.oeb and the format dependent code is in ebooks.format_name. The format independent code is all in ebooks.oeb and the format dependent code is in ebooks.format_name.
* Metadata reading, writing, and downloading is all in ebooks.metadata * Metadata reading, writing, and downloading is all in ebooks.metadata
* Conversion happens in a pipeline, for the structure of the pipeline,
see :ref:`conversion-introduction`. The pipeline consists of an input
plugin, various transforms and an output plugin. The code constructs
and drives the pipeline is in plumber.py. The pipeline works on a
representation of an ebook that is like an unzipped epub, with
manifest, spine, toc, guide, html content, etc. The
class that manages this representation is OEBBook in oeb/base.py. The
various transformations that are applied to the book during
conversions live in `oeb/transforms/*.py`. And the input and output
plugins live in `conversion/plugins/*.py`.
* library - The database back-end and the content server. See library.database2 for the interface to the |app| library. library.server is the |app| Content Server. * library - The database back-end and the content server. See library.database2 for the interface to the |app| library. library.server is the |app| Content Server.
* gui2 - The Graphical User Interface. GUI initialization happens in gui2.main and gui2.ui. The ebook-viewer is in gui2.viewer. * gui2 - The Graphical User Interface. GUI initialization happens in gui2.main and gui2.ui. The ebook-viewer is in gui2.viewer.

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 662 B

After

Width:  |  Height:  |  Size: 662 B

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 724 B

After

Width:  |  Height:  |  Size: 724 B

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 628 B

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -17,7 +17,7 @@ To get started with more advanced usage, you should read about the :ref:`Graphic
.. only:: online .. only:: online
**An ebook version of this user manual is available in** `EPUB format <calibre.epub>`_. **An ebook version of this user manual is available in** `EPUB format <calibre.epub>`_ and `AZW3 (Kindle Fire) format <calibre.azw3>`_.
Sections Sections
------------ ------------

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 144 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -55,7 +55,7 @@ The python implementation of the template functions is passed in a Metadata obje
The set of standard metadata fields. The set of standard metadata fields.
.. literalinclude:: ../ebooks/metadata/book/__init__.py .. literalinclude:: ../src/calibre/ebooks/metadata/book/__init__.py
:lines: 7- :lines: 7-
''' '''

21
recipes/attac_es.recipe Normal file
View File

@ -0,0 +1,21 @@
from calibre.web.feeds.news import BasicNewsRecipe
class AttacEspanaRecipe (BasicNewsRecipe):
__author__ = u'Marc Busqué'
__url__ = 'http://www.lamarciana.com'
__version__ = '1.0'
__license__ = 'GPL v3'
__copyright__ = u'2012, Marc Busqué <marc@lamarciana.com>'
title = u'attac.es'
description = u'La Asociación por la Tasación de las Transacciones Financieras y por la Ayuda a los Ciudadanos (ATTAC) es un movimiento internacional altermundialista que promueve el control democrático de los mercados financieros y las instituciones encargadas de su control mediante la reflexión política y la movilización social.'
url = 'http://www.attac.es'
language = 'es'
tags = 'contrainformación, información alternativa'
oldest_article = 7
remove_empty_feeds = True
no_stylesheets = True
cover_url = u'http://www.attac.es/wp-content/themes/attacweb/images/attaces.jpg'
feeds = [
(u'Attac', u'http://www.attac.es/feed'),
]

View File

@ -15,6 +15,7 @@ class BusinessWeek(BasicNewsRecipe):
oldest_article = 7 oldest_article = 7
max_articles_per_feed = 200 max_articles_per_feed = 200
no_stylesheets = True no_stylesheets = True
auto_cleanup = True
encoding = 'utf8' encoding = 'utf8'
use_embedded_content = False use_embedded_content = False
language = 'en' language = 'en'
@ -36,12 +37,12 @@ class BusinessWeek(BasicNewsRecipe):
, 'language' : language , 'language' : language
} }
remove_tags = [ #remove_tags = [
dict(attrs={'class':'inStory'}) #dict(attrs={'class':'inStory'})
,dict(name=['meta','link','iframe','base','embed','object','table','th','tr','td']) #,dict(name=['meta','link','iframe','base','embed','object','table','th','tr','td'])
,dict(attrs={'id':['inset','videoDisplay']}) #,dict(attrs={'id':['inset','videoDisplay']})
] #]
keep_only_tags = [dict(name='div', attrs={'id':['story-body','storyBody']})] #keep_only_tags = [dict(name='div', attrs={'id':['story-body','storyBody']})]
remove_attributes = ['lang'] remove_attributes = ['lang']
match_regexps = [r'http://www.businessweek.com/.*_page_[1-9].*'] match_regexps = [r'http://www.businessweek.com/.*_page_[1-9].*']
@ -100,3 +101,4 @@ class BusinessWeek(BasicNewsRecipe):
tstr = alink.string tstr = alink.string
alink.replaceWith(tstr) alink.replaceWith(tstr)
return soup return soup

View File

@ -1,5 +1,5 @@
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Darko Miletic <darko.miletic at gmail.com>' __copyright__ = '2010 - 2012, Darko Miletic <darko.miletic at gmail.com>'
''' '''
www.chinadaily.com.cn www.chinadaily.com.cn
''' '''
@ -21,7 +21,11 @@ class Pagina12(BasicNewsRecipe):
remove_empty_feeds = True remove_empty_feeds = True
publication_type = 'newsportal' publication_type = 'newsportal'
masthead_url = 'http://www.chinadaily.com.cn/15421.files/chinadailylogo_e_20100301.jpg' masthead_url = 'http://www.chinadaily.com.cn/15421.files/chinadailylogo_e_20100301.jpg'
extra_css = ' body{font-family: Arial,Helvetica,sans-serif } ' extra_css = """
body{font-family: Arial,Helvetica,sans-serif }
.titlebox{font-family: "Times New Roman",Times,serif}
.timebox, .authorbox{font-size: x-small}
"""
conversion_options = { conversion_options = {
'comment' : description 'comment' : description
@ -31,7 +35,7 @@ class Pagina12(BasicNewsRecipe):
} }
remove_tags = [dict(name=['object','embed','iframe','table'])] remove_tags = [dict(name=['object','embed','iframe','table'])]
keep_only_tags = [dict(attrs={'id':['Title_e','Content']})] keep_only_tags = [dict(attrs={'class':['titlebox', 'timebox', 'authorbox', 'cont-ins']})]
feeds = [ feeds = [
@ -41,8 +45,3 @@ class Pagina12(BasicNewsRecipe):
,(u'Sports' , u'http://www.chinadaily.com.cn/rss/sports_rss.xml' ) ,(u'Sports' , u'http://www.chinadaily.com.cn/rss/sports_rss.xml' )
,(u'Opinions', u'http://www.chinadaily.com.cn/rss/opinion_rss.xml' ) ,(u'Opinions', u'http://www.chinadaily.com.cn/rss/opinion_rss.xml' )
] ]
def preprocess_html(self, soup):
for item in soup.findAll(style=True):
del item['style']
return soup

View File

@ -0,0 +1,15 @@
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from calibre.web.feeds.news import BasicNewsRecipe
class BasicUserRecipe1337668045(BasicNewsRecipe):
title = u'Drytooling.com.pl'
masthead_url = 'http://drytooling.com.pl/images/drytooling-kindle.png'
cover_url = 'http://drytooling.com.pl/images/drytooling-kindle.png'
description = u'Drytooling.com.pl jest serwisem wspinaczki zimowej, alpinizmu i himalaizmu. Jeśli uwielbiasz zimę, nie możesz doczekać się aż wyciągniesz szpej z szafki i uderzysz w Tatry, Alpy, czy może Himalaje, to znajdziesz tutaj naprawdę dużo interesujących Cię treści! Zapraszamy!'
__author__ = u'Damian Granowski'
oldest_article = 100
max_articles_per_feed = 20
auto_cleanup = True
feeds = [(u'Newsy', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=4&format=raw'), (u'Artyku\u0142y', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=3&format=raw'), (u'Imprezy i zawody', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=5&format=raw'), (u'Baza G\xf3rska', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=6&format=raw'), (u'Wyprawy', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=7&format=raw'), (u'Newsy / alpinizm', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=12&format=raw'), (u'Newsy / klasyka zimowa', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=11&format=raw'), (u'Newsy / himalaizm', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=10&format=raw'), (u'Outdoor', u'http://drytooling.com.pl/index.php?option=com_ninjarsssyndicator&feed_id=8&format=raw')]

Some files were not shown because too many files have changed in this diff Show More