diff --git a/Changelog.yaml b/Changelog.yaml
index 81d6842188..037e0f29ea 100644
--- a/Changelog.yaml
+++ b/Changelog.yaml
@@ -4,6 +4,106 @@
# for important features/bug fixes.
# Also, each release can have new and improved recipes.
+- version: 0.6.46
+ date: 2010-03-31
+
+ new features:
+ - title: "EPUB Output: Use SVG for covers, to ensure cover image is correctly resized to fit available screen space"
+
+ - title: "Support for the Motorola Cliq and Milestone"
+
+ - title: "Fetch My Clippings from the Kindle"
+
+ - title: "Comic Input: Add option to disable conversion to grayscale (black and white)"
+
+ - title: "MOBI Output: Mark single section news downloads as newspapers so that they are automatically archived by the Kindle"
+
+ - title: "MOBI Output: Add option to control setting of document type to Personal Document"
+
+ - title: "SONY driver: Tags within [] do not translate into a category when sending books to device"
+
+ - title: "ebook-device: Add a test_file command"
+
+ - title: "Location support for PDF when fetching annotations from a Kindle"
+
+ bug fixes:
+ - title: "CHM Input: Various fixes"
+ tickets: [5132, 5141]
+
+ - title: "Linux installer: Add mimetypes to .desktop files"
+ tickets: [5156]
+
+ - title: "Fix function naming in bash completion script"
+ tickets: [5146]
+
+ - title: "Fix the author of the metadata download plugins goes wrong after downloaded metadata for a book"
+ tickets: [5129]
+
+ - title: "Popup an error message if a news download is aborted because of no active internet connection"
+
+ - title: "Add test button to regex builder to improve performance"
+
+ - title: "Fix loading of custom device interface plugins"
+
+ - title: "Fix extra spaces in MOBI author field with multiple authors"
+ tickets: [2279, 4652, 5162]
+
+ - title: "Fix Kindle Topaz files with edited metadata won't index"
+ tickets: [5154]
+
+ - title: "PDB output: Fix problem with links continuing through story"
+ tickets: [5149]
+
+ - title: "Don't choke if the user provides an invalid remove header/footer regexp"
+
+ new recipes:
+ - title: MiDDay
+ author: calibre Periodicals
+
+ - title: Business Line
+ author: Dhiru
+
+ - title: New York Post
+ author: Darko Miletic
+
+ - title: Tulsa World
+ author: Darko Miletic
+
+ - title: Oil Price
+ author: Darko Miletic
+
+ - title: nrc.nl
+ author: Darko Miletic
+
+ - title: "Peter Schiff's Economic Commentary"
+ author: Darko Miletic
+
+ - title: IEEE Spectrum
+ author: Franco Venturi
+
+ - title: Washington Post
+ author: Kos Semonski
+
+ - title: The Sun
+ author: Chaz Ralph
+
+ - title: Fronda
+ author: Tomasz Dugosz
+
+ - title: Runa
+ author: Mori
+
+ - title: Times of India
+ author: Krittika Goyal
+
+ improved recipes:
+ - Various Serian and Polish newspapers
+ - New York Times Top Stories
+ - USA Today
+ - Daily Telegraph
+ - New York Times
+ - SFBG
+
- version: 0.6.45
date: 2010-03-11
diff --git a/resources/images/news/nypost.png b/resources/images/news/nypost.png
new file mode 100644
index 0000000000..f9a93cfbb3
Binary files /dev/null and b/resources/images/news/nypost.png differ
diff --git a/resources/images/search_add_saved.svg b/resources/images/search_add_saved.svg
new file mode 100644
index 0000000000..a5eb13e1e4
--- /dev/null
+++ b/resources/images/search_add_saved.svg
@@ -0,0 +1,3544 @@
+
+
+
+
diff --git a/resources/images/search_copy_saved.svg b/resources/images/search_copy_saved.svg
new file mode 100644
index 0000000000..fc0b1f54b9
--- /dev/null
+++ b/resources/images/search_copy_saved.svg
@@ -0,0 +1,3547 @@
+
+
+
+
diff --git a/resources/images/search_delete_saved.svg b/resources/images/search_delete_saved.svg
new file mode 100644
index 0000000000..af79e8f9f4
--- /dev/null
+++ b/resources/images/search_delete_saved.svg
@@ -0,0 +1,3544 @@
+
+
+
+
diff --git a/resources/recipes/24sata_rs.recipe b/resources/recipes/24sata_rs.recipe
index df1f92bfaa..0f879036ea 100644
--- a/resources/recipes/24sata_rs.recipe
+++ b/resources/recipes/24sata_rs.recipe
@@ -21,6 +21,7 @@ class Ser24Sata(BasicNewsRecipe):
encoding = 'utf-8'
use_embedded_content = False
language = 'sr'
+ publication_type = 'newspaper'
extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: serif1, serif}'
conversion_options = {
diff --git a/resources/recipes/b92.recipe b/resources/recipes/b92.recipe
index b17440e596..20b844b57d 100644
--- a/resources/recipes/b92.recipe
+++ b/resources/recipes/b92.recipe
@@ -10,7 +10,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
class B92(BasicNewsRecipe):
title = 'B92'
__author__ = 'Darko Miletic'
- description = 'Dnevne vesti iz Srbije i sveta'
+ description = 'B92 info, najnovije vesti iz Srbije, regiona i sveta'
publisher = 'B92'
category = 'news, politics, Serbia'
oldest_article = 2
@@ -19,6 +19,7 @@ class B92(BasicNewsRecipe):
use_embedded_content = False
encoding = 'cp1250'
language = 'sr'
+ publication_type = 'newsportal'
extra_css = ' @font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: serif1, serif} '
conversion_options = {
diff --git a/resources/recipes/beta.recipe b/resources/recipes/beta.recipe
index 49da10e11a..039e8cef93 100644
--- a/resources/recipes/beta.recipe
+++ b/resources/recipes/beta.recipe
@@ -18,6 +18,7 @@ class Danas(BasicNewsRecipe):
no_stylesheets = False
use_embedded_content = True
language = 'sr'
+ publication_type = 'newsportal'
extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: sans1, sans-serif} img{margin-bottom: 0.8em} '
conversion_options = {
diff --git a/resources/recipes/blic.recipe b/resources/recipes/blic.recipe
index f784c031a3..0c955bebde 100644
--- a/resources/recipes/blic.recipe
+++ b/resources/recipes/blic.recipe
@@ -20,7 +20,8 @@ class Blic(BasicNewsRecipe):
use_embedded_content = False
masthead_url = 'http://www.blic.rs/resources/images/header/header_back.png'
language = 'sr'
- extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: Georgia, serif1, serif} .article_description{font-family: Arial, sans1, sans-serif} .img_full{float: none} img{margin-bottom: 0.8em} '
+ publication_type = 'newspaper'
+ extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: Georgia, serif1, serif} .article_description{font-family: Arial, sans1, sans-serif} .img_full{float: none} img{margin-bottom: 0.8em} '
conversion_options = {
'comment' : description
@@ -41,4 +42,6 @@ class Blic(BasicNewsRecipe):
return url + '/print'
def preprocess_html(self, soup):
+ for item in soup.findAll(style=True):
+ del item['style']
return self.adeify_images(soup)
diff --git a/resources/recipes/cetnixploitation.recipe b/resources/recipes/cetnixploitation.recipe
index ee95ef599f..edc7233245 100644
--- a/resources/recipes/cetnixploitation.recipe
+++ b/resources/recipes/cetnixploitation.recipe
@@ -15,6 +15,7 @@ class Chetnixploitation(BasicNewsRecipe):
oldest_article = 7
max_articles_per_feed = 100
language = 'sr'
+ publication_type = 'blog'
encoding = 'utf-8'
no_stylesheets = True
use_embedded_content = True
@@ -32,5 +33,3 @@ class Chetnixploitation(BasicNewsRecipe):
def preprocess_html(self, soup):
return self.adeify_images(soup)
-
-
diff --git a/resources/recipes/danas.recipe b/resources/recipes/danas.recipe
index a8cd8a5a3d..d82928e323 100644
--- a/resources/recipes/danas.recipe
+++ b/resources/recipes/danas.recipe
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
__license__ = 'GPL v3'
__copyright__ = '2008-2010, Darko Miletic '
'''
@@ -20,7 +21,9 @@ class Danas(BasicNewsRecipe):
encoding = 'utf-8'
masthead_url = 'http://www.danas.rs/images/basic/danas.gif'
language = 'sr'
- extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} .article_description,body,.lokacija{font-family: Tahoma,Arial,Helvetica,sans1,sans-serif} .nadNaslov,h1,.preamble{font-family: Georgia,"Times New Roman",Times,serif1,serif} .antrfileText{border-left: 2px solid #999999; margin-left: 0.8em; padding-left: 1.2em; margin-bottom: 0; margin-top: 0} h2,.datum,.lokacija,.autor{font-size: small} .antrfileNaslov{border-left: 2px solid #999999; margin-left: 0.8em; padding-left: 1.2em; font-weight:bold; margin-bottom: 0; margin-top: 0} img{margin-bottom: 0.8em} '
+ publication_type = 'newspaper'
+ remove_empty_feeds = True
+ extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} .article_description,body,.lokacija{font-family: Tahoma,Arial,Helvetica,sans1,sans-serif} .nadNaslov,h1,.preamble{font-family: Georgia,"Times New Roman",Times,serif1,serif} .antrfileText{border-left: 2px solid #999999; margin-left: 0.8em; padding-left: 1.2em; margin-bottom: 0; margin-top: 0} h2,.datum,.lokacija,.autor{font-size: small} .antrfileNaslov{border-left: 2px solid #999999; margin-left: 0.8em; padding-left: 1.2em; font-weight:bold; margin-bottom: 0; margin-top: 0} img{margin-bottom: 0.8em} '
conversion_options = {
'comment' : description
@@ -38,10 +41,10 @@ class Danas(BasicNewsRecipe):
,dict(name=['object','link','iframe'])
]
- feeds = [
+ feeds = [
(u'Politika' , u'http://www.danas.rs/rss/rss.asp?column_id=27')
,(u'Hronika' , u'http://www.danas.rs/rss/rss.asp?column_id=2' )
- ,(u'Drustvo' , u'http://www.danas.rs/rss/rss.asp?column_id=24')
+ ,(u'Dru\xc5\xa1tvo', u'http://www.danas.rs/rss/rss.asp?column_id=24')
,(u'Dijalog' , u'http://www.danas.rs/rss/rss.asp?column_id=1' )
,(u'Ekonomija', u'http://www.danas.rs/rss/rss.asp?column_id=6' )
,(u'Svet' , u'http://www.danas.rs/rss/rss.asp?column_id=25')
@@ -51,13 +54,14 @@ class Danas(BasicNewsRecipe):
,(u'Scena' , u'http://www.danas.rs/rss/rss.asp?column_id=42')
,(u'Feljton' , u'http://www.danas.rs/rss/rss.asp?column_id=19')
,(u'Periskop' , u'http://www.danas.rs/rss/rss.asp?column_id=4' )
+ ,(u'Famozno' , u'http://www.danas.rs/rss/rss.asp?column_id=47')
]
def preprocess_html(self, soup):
for item in soup.findAll(style=True):
del item['style']
- return soup
+ return self.adeify_images(soup)
def print_version(self, url):
return url + '&action=print'
-
+
diff --git a/resources/recipes/dna.recipe b/resources/recipes/dna.recipe
index c9bc5642c1..83c19f3a13 100644
--- a/resources/recipes/dna.recipe
+++ b/resources/recipes/dna.recipe
@@ -25,7 +25,12 @@ class DNAIndia(BasicNewsRecipe):
('After Hours', 'http://www.dnaindia.com/syndication/rss,catid-7.xml'),
('Digital Life', 'http://www.dnaindia.com/syndication/rss,catid-1089741.xml'),
]
- remove_tags = [{'id':'footer'}, {'class':['bottom', 'categoryHead']}]
+ remove_tags = [{'id':['footer', 'lhs-col']}, {'class':['bottom', 'categoryHead',
+ 'article_tools']}]
+ keep_only_tags = dict(id='middle-col')
+ remove_tags_after=[dict(attrs={'id':'story'})]
+ remove_attributes=['style']
+ no_stylesheets = True
def print_version(self, url):
match = re.search(r'newsid=(\d+)', url)
diff --git a/resources/recipes/e_novine.recipe b/resources/recipes/e_novine.recipe
index 7d39e448d2..6a7041baae 100644
--- a/resources/recipes/e_novine.recipe
+++ b/resources/recipes/e_novine.recipe
@@ -20,6 +20,7 @@ class E_novine(BasicNewsRecipe):
encoding = 'utf-8'
use_embedded_content = False
language = 'sr'
+ publication_type = 'newsportal'
masthead_url = 'http://www.e-novine.com/themes/e_novine/img/logo.gif'
extra_css = ' @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} .article_description,body{font-family: Arial,Helvetica,sans1,sans-serif} img{float: none; margin-bottom: 0.8em} '
diff --git a/resources/recipes/glas_srpske.recipe b/resources/recipes/glas_srpske.recipe
index 157584720a..27d65f861c 100644
--- a/resources/recipes/glas_srpske.recipe
+++ b/resources/recipes/glas_srpske.recipe
@@ -22,6 +22,7 @@ class GlasSrpske(BasicNewsRecipe):
use_embedded_content = False
masthead_url = 'http://www.glassrpske.com/var/slike/glassrpske-logo.png'
language = 'sr'
+ publication_type = 'newspaper'
INDEX = 'http://www.glassrpske.com'
extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: serif1, serif} img{margin-bottom: 0.8em} '
diff --git a/resources/recipes/glasjavnosti.recipe b/resources/recipes/glasjavnosti.recipe
index 15b1042818..61675ea236 100644
--- a/resources/recipes/glasjavnosti.recipe
+++ b/resources/recipes/glasjavnosti.recipe
@@ -18,6 +18,7 @@ class GlasJavnosti(BasicNewsRecipe):
no_stylesheets = False
use_embedded_content = False
language = 'sr'
+ publication_type = 'newspaper'
extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: sans1, sans-serif} img{margin-bottom: 0.8em} '
conversion_options = {
diff --git a/resources/recipes/harpers_full.recipe b/resources/recipes/harpers_full.recipe
index 15408f268e..ff558e9c5b 100644
--- a/resources/recipes/harpers_full.recipe
+++ b/resources/recipes/harpers_full.recipe
@@ -1,7 +1,5 @@
-#!/usr/bin/env python
-
__license__ = 'GPL v3'
-__copyright__ = '2008-2009, Darko Miletic '
+__copyright__ = '2008-2010, Darko Miletic '
'''
harpers.org - paid subscription/ printed issue articles
This recipe only get's article's published in text format
@@ -10,39 +8,40 @@ images and pdf's are ignored
from calibre import strftime
from calibre.web.feeds.news import BasicNewsRecipe
-from calibre.ebooks.BeautifulSoup import Tag
class Harpers_full(BasicNewsRecipe):
- title = u"Harper's Magazine - articles from printed edition"
- __author__ = u'Darko Miletic'
- description = u"Harper's Magazine: Founded June 1850."
+ title = "Harper's Magazine - articles from printed edition"
+ __author__ = 'Darko Miletic'
+ description = "Harper's Magazine: Founded June 1850."
publisher = "Harpers's"
category = 'news, politics, USA'
oldest_article = 30
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
- delay = 1
- language = 'en'
+ delay = 1
+ language = 'en'
+ needs_subscription = True
+ masthead_url = 'http://www.harpers.org/media/image/Harpers_305x100.gif'
+ publication_type = 'magazine'
+ INDEX = strftime('http://www.harpers.org/archive/%Y/%m')
+ LOGIN = 'http://www.harpers.org'
+ cover_url = strftime('http://www.harpers.org/media/pages/%Y/%m/gif/0001.gif')
+ extra_css = ' body{font-family: "Georgia",serif} '
- needs_subscription = True
- INDEX = strftime('http://www.harpers.org/archive/%Y/%m')
- LOGIN = 'http://www.harpers.org'
- cover_url = strftime('http://www.harpers.org/media/pages/%Y/%m/gif/0001.gif')
-
- html2lrf_options = [
- '--comment', description
- , '--category', category
- , '--publisher', publisher
- ]
-
- html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\noverride_css=" p {text-indent: 0em; margin-top: 0em; margin-bottom: 0.5em} img {margin-top: 0em; margin-bottom: 0.4em}"'
+ conversion_options = {
+ 'comment' : description
+ , 'tags' : category
+ , 'publisher' : publisher
+ , 'language' : language
+ }
keep_only_tags = [ dict(name='div', attrs={'id':'cached'}) ]
remove_tags = [
dict(name='table', attrs={'class':['rcnt','rcnt topline']})
,dict(name='link')
]
+ remove_attributes=['xmlns']
def get_browser(self):
br = BasicNewsRecipe.get_browser()
@@ -71,12 +70,3 @@ class Harpers_full(BasicNewsRecipe):
,'description':''
})
return [(soup.head.title.string, articles)]
-
- def preprocess_html(self, soup):
- mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=utf-8")])
- soup.head.insert(1,mcharset)
- for item in soup.findAll(style=True):
- del item['style']
- for item in soup.findAll(xmlns=True):
- del item['xmlns']
- return soup
diff --git a/resources/recipes/heise.recipe b/resources/recipes/heise.recipe
index bff7179074..23a8068c47 100644
--- a/resources/recipes/heise.recipe
+++ b/resources/recipes/heise.recipe
@@ -9,15 +9,16 @@ from calibre.web.feeds.news import BasicNewsRecipe
class heiseDe(BasicNewsRecipe):
-
+
title = 'heise'
description = 'Computernews from Germany'
__author__ = 'Oliver Niesner'
use_embedded_content = False
+ language = 'de'
timefmt = ' [%d %b %Y]'
max_articles_per_feed = 40
no_stylesheets = True
-
+
remove_tags = [dict(id='navi_top'),
dict(id='navi_bottom'),
dict(id='logo'),
@@ -35,8 +36,8 @@ class heiseDe(BasicNewsRecipe):
dict(name='p', attrs={'class':'news_navi'}),
dict(name='div', attrs={'class':'news_foren'})]
remove_tags_after = [dict(name='div', attrs={'class':'news_foren'})]
-
- feeds = [ ('heise', 'http://www.heise.de/newsticker/heise.rdf') ]
-
+
+ feeds = [ ('heise', 'http://www.heise.de/newsticker/heise.rdf') ]
+
diff --git a/resources/recipes/hindu_business_line.recipe b/resources/recipes/hindu_business_line.recipe
new file mode 100644
index 0000000000..74cff3f068
--- /dev/null
+++ b/resources/recipes/hindu_business_line.recipe
@@ -0,0 +1,53 @@
+from __future__ import with_statement
+__license__ = 'GPL 3'
+__copyright__ = '2009, Kovid Goyal '
+
+import re
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class TheHindu(BasicNewsRecipe):
+ title = u'The Business Line'
+ language = 'en_IN'
+
+ oldest_article = 7
+ __author__ = 'Dhiru'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+
+ remove_tags_before = {'name':'font', 'class':'storyhead'}
+ preprocess_regexps = [
+ (re.compile(r'.*', re.DOTALL),
+ lambda match: '