diff --git a/Changelog.yaml b/Changelog.yaml
index 9673832a81..4997cca255 100644
--- a/Changelog.yaml
+++ b/Changelog.yaml
@@ -4,6 +4,65 @@
# for important features/bug fixes.
# Also, each release can have new and improved recipes.
+- version: 0.7.2
+ date: 2010-06-11
+
+ new features:
+ - title: "The Cover Browser can now be freely resized."
+ description: >
+ "You can now resize the Cover Browser just like the other areas of the user interface by dragging the edge. The Cover Browser now
+ also emphasizes the cetral book cover, making it larger than the others. Also on widescreen monitors the cover browser is now automatically placed
+ to the side of the book list instead of below it."
+
+ - title: "Added tweak to control how titles and series names are sorted"
+
+ - title: "Clicking on row numbers no longer open the viewer. Instead you have to double click"
+
+ bug fixes:
+ - title: "SONY driver: The regression causing slow perfomance has been corrected. Various bug fixes to deal with corner cases"
+
+ - title: "iPad driver: Various bugfixes, should now work much more seamlessly."
+
+ - title: "Fix regression causing calibre to not start if the library path is invalid, because say a drive has been removed"
+ tickets: [5787]
+
+ - title: "Fix regression in 0.7.1 that broke searching in the e-book viewers and for news sources"
+
+ - title: "Fix regressions that caused the Publisher to change when updating Series and floating point custom columns to be rounded to integers."
+ tickets: [5788]
+
+ - title: "Fix regression that broke check database integrity in the presence of custom coulmns or user categories"
+ tickets: [5779]
+
+ - title: "Fix regresison that broke the Email to submenu in the send to device menu"
+
+ - title: "Fix Tag browser re-opening closed tree after editing metadata"
+ tickets: [5744]
+
+ - title: "Conversion pipeline: Handle missing/obsolete input/output profiles gracefully"
+
+ - title: "Fix Adding/Deleting Search does not refresh Left Pane Correctly"
+ tickets: [5751]
+
+ - title: "Content server: Fix serving of CBZ/CBR files to stanza"
+
+ new recipes:
+ - title: Repantes, Haaretz
+ author: Darko Miletic
+
+ - title: CBC Canada
+ author: rty
+
+
+ improved recipes:
+ - The Sun
+ - The Economist
+ - Boston Globe
+ - Honolulu Star Advertiser
+ - SMH
+ - Sueddeutsche
+ - Our Daily Bread
+
- version: 0.7.1
date: 2010-06-04
diff --git a/resources/default_tweaks.py b/resources/default_tweaks.py
index e9ad64cee2..aaeb992151 100644
--- a/resources/default_tweaks.py
+++ b/resources/default_tweaks.py
@@ -61,3 +61,15 @@ sort_columns_at_startup = None
# default if not set: MMM yyyy
gui_pubdate_display_format = 'MMM yyyy'
+# Control title and series sorting in the library view.
+# If set to 'library_order', Leading articles such as The and A will be ignored.
+# If set to 'strictly_alphabetic', the titles will be sorted without processing
+# For example, with library_order, The Client will sort under 'C'. With
+# strictly_alphabetic, the book will sort under 'T'.
+# This flag affects Calibre's library display. It has no effect on devices. In
+# addition, titles for books added before changing the flag will retain their
+# order until the title is edited. Double-clicking on a title and hitting return
+# without changing anything is sufficient to change the sort.
+title_series_sorting = 'library_order'
+
+
diff --git a/resources/images/bookmarks.svg b/resources/images/bookmarks.svg
index 2fcd844283..6964853702 100644
--- a/resources/images/bookmarks.svg
+++ b/resources/images/bookmarks.svg
@@ -1,7 +1,6 @@
diff --git a/resources/images/news/ourdailybread.png b/resources/images/news/ourdailybread.png
new file mode 100644
index 0000000000..771f252216
Binary files /dev/null and b/resources/images/news/ourdailybread.png differ
diff --git a/resources/images/news/starbulletin.png b/resources/images/news/staradvertiser.png
similarity index 84%
rename from resources/images/news/starbulletin.png
rename to resources/images/news/staradvertiser.png
index bb3afd636a..1458d6f912 100644
Binary files a/resources/images/news/starbulletin.png and b/resources/images/news/staradvertiser.png differ
diff --git a/resources/images/series.svg b/resources/images/series.svg
index c26d1ef7a2..f2eb87b709 100644
--- a/resources/images/series.svg
+++ b/resources/images/series.svg
@@ -1,1096 +1,1071 @@
-
+
+
\ No newline at end of file
+ id="linearGradient6642">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+ 2007-06-23
+
+
+ Lapo Calamandrei
+
+
+
+
+ address
+ book
+ contact
+
+
+
+
+
+
+ Andreas Nilsson
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/images/user_profile.svg b/resources/images/user_profile.svg
index 5a51783d7c..2fc0eea150 100644
--- a/resources/images/user_profile.svg
+++ b/resources/images/user_profile.svg
@@ -1,4750 +1,312 @@
+
diff --git a/resources/recipes/auto.recipe b/resources/recipes/auto.recipe
new file mode 100644
index 0000000000..959b9997a8
--- /dev/null
+++ b/resources/recipes/auto.recipe
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+__license__ = 'GPL v3'
+__author__ = 'GabrieleMarini, based on Darko Miletic'
+__copyright__ = '2009, Darko Miletic , Gabriele Marini'
+__version__ = 'v1.02 Marini Gabriele '
+__date__ = '14062010'
+__description__ = 'Italian daily newspaper'
+
+'''
+http://www.corrieredellosport.it/
+'''
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Auto(BasicNewsRecipe):
+ __author__ = 'Gabriele Marini'
+ description = 'Auto and Formula 1'
+
+ cover_url = 'http://www.auto.it/res/imgs/logo_Auto.png'
+
+
+ title = u'Auto'
+ publisher = 'CONTE Editore'
+ category = 'Sport'
+
+ language = 'it'
+ timefmt = '[%a, %d %b, %Y]'
+
+ oldest_article = 60
+ max_articles_per_feed = 30
+ use_embedded_content = False
+ recursion = 10
+
+ remove_javascript = True
+ no_stylesheets = True
+
+ html2lrf_options = [
+ '--comment', description
+ , '--category', category
+ , '--publisher', publisher
+ , '--ignore-tables'
+ ]
+
+ html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True'
+
+ keep_only_tags = [
+ dict(name='h2', attrs={'class':['tit_Article y_Txt']}),
+ dict(name='h2', attrs={'class':['tit_Article']}),
+ dict(name='div', attrs={'class':['box_Img newsdet_new ']}),
+ dict(name='div', attrs={'class':['box_Img newsdet_as ']}),
+ dict(name='table', attrs={'class':['table_A']}),
+ dict(name='div', attrs={'class':['txt_Article txtBox_cms']}),
+ dict(name='testoscheda')]
+
+
+ feeds = [
+ (u'Tutte le News' , u'http://www.auto.it/rss/articoli.xml' ),
+ (u'Prove su Strada' , u'http://www.auto.it/rss/prove+6.xml'),
+ (u'Novit\xe0' , u'http://www.auto.it/rss/novita+3.xml')
+ ]
+
+
+
+
diff --git a/resources/recipes/boston.com.recipe b/resources/recipes/boston.com.recipe
index b398d7cc1b..48add6112c 100644
--- a/resources/recipes/boston.com.recipe
+++ b/resources/recipes/boston.com.recipe
@@ -1,5 +1,5 @@
__license__ = 'GPL v3'
-__copyright__ = '2009, Darko Miletic '
+__copyright__ = '2009-2010, Darko Miletic '
'''
www.boston.com
'''
@@ -7,10 +7,10 @@ www.boston.com
from calibre.web.feeds.recipes import BasicNewsRecipe
class BusinessStandard(BasicNewsRecipe):
- title = 'Boston'
+ title = 'The Boston Globe'
__author__ = 'Darko Miletic'
description = 'News from Boston'
- oldest_article = 7
+ oldest_article = 2
max_articles_per_feed = 100
no_stylesheets = True
delay = 1
@@ -19,6 +19,9 @@ class BusinessStandard(BasicNewsRecipe):
publisher = 'Boston'
category = 'news, boston, usa, world'
language = 'en'
+ publication_type = 'newspaper'
+ masthead_url = 'http://cache.boston.com/images/globe/grslider/the_boston_globe.gif'
+ extra_css = ' body{font-family: Georgia, serif} div#articleBodyTop{display:block} '
conversion_options = {
'comments' : description
@@ -27,8 +30,11 @@ class BusinessStandard(BasicNewsRecipe):
,'publisher' : publisher
}
- keep_only_tags = [dict(name='div', attrs={'class':'story'})]
- remove_tags = [dict(name=['object','link','script','iframe'])]
+ keep_only_tags = [dict(attrs={'id':['INDblogEntry','blogEntry','articleHeader','articleGraphs','galleryShell']})]
+ remove_tags = [
+ dict(name=['object','link','script','iframe'])
+ ,dict(attrs={'id':['blogheadTools','bdc_emailWidget','tools','relatedContent']})
+ ]
feeds = [
(u'Top Stories' , u'http://feeds.boston.com/boston/topstories' )
@@ -38,12 +44,9 @@ class BusinessStandard(BasicNewsRecipe):
]
def print_version(self, url):
- return url + '?mode=PF'
+ return url + '?page=full'
def get_article_url(self, article):
- rawarticle = article.get('pheedo_origlink', None)
- artls, sep, rsep = rawarticle.rpartition('/?')
- if artls == '':
- artls = rawarticle.rpartition('?')[0]
- return artls
+ rawarticle = article.get('guid', None)
+ return rawarticle.rpartition('?')[0]
diff --git a/resources/recipes/corriere_dello_sport.recipe b/resources/recipes/corriere_dello_sport.recipe
new file mode 100644
index 0000000000..ac93c702e3
--- /dev/null
+++ b/resources/recipes/corriere_dello_sport.recipe
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+__license__ = 'GPL v3'
+__author__ = 'GabrieleMarini, based on Darko Miletic'
+__copyright__ = '2009, Darko Miletic , Gabriele Marini'
+__version__ = ' '
+__date__ = '14-06-2010'
+__description__ = 'Italian daily newspaper'
+
+'''
+http://www.corrieredellosport.it/
+'''
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class ilCorrieredelloSport(BasicNewsRecipe):
+ __author__ = 'Gabriele Marini'
+ description = 'Italian daily newspaper'
+
+ cover_url = 'http://edicola.corrieredellosport.it/newsmem/corsport/prima/nazionale_prima.jpg'
+
+
+ title = u'Il Corriere dello Sport'
+ publisher = 'CORRIERE DELLO SPORT s.r.l. '
+ category = 'Sport'
+
+ language = 'it'
+ timefmt = '[%a, %d %b, %Y]'
+
+ oldest_article = 10
+ max_articles_per_feed = 100
+ use_embedded_content = False
+ recursion = 10
+
+ remove_javascript = True
+ no_stylesheets = True
+
+ html2lrf_options = [
+ '--comment', description
+ , '--category', category
+ , '--publisher', publisher
+ , '--ignore-tables'
+ ]
+
+ html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True'
+
+ keep_only_tags = [
+ dict(name='h1', attrs={'class':['tit_Article']}),
+ dict(name='h1', attrs={'class':['tit_Article_mondiali']}),
+ dict(name='div', attrs={'class':['box_Img']}),
+ dict(name='p', attrs={'class':['summary','text']})]
+
+
+
+
+ feeds = [
+ (u'Primo Piano' , u'http://www.corrieredellosport.it/rss/primo_piano.xml' ),
+ (u'Calcio' , u'http://www.corrieredellosport.it/rss/Calcio-3.xml'),
+ (u'Formula 1' , u'http://www.corrieredellosport.it/rss/Formula-1-7.xml'),
+ (u'Moto' , u'http://www.corrieredellosport.it/rss/Moto-8.xml'),
+ (u'Piu visti' , u'http://www.corrieredellosport.it/rss/piu_visti.xml')
+ ]
diff --git a/resources/recipes/danas.recipe b/resources/recipes/danas.recipe
index d82928e323..159553370a 100644
--- a/resources/recipes/danas.recipe
+++ b/resources/recipes/danas.recipe
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
__license__ = 'GPL v3'
__copyright__ = '2008-2010, Darko Miletic '
'''
@@ -23,7 +22,14 @@ class Danas(BasicNewsRecipe):
language = 'sr'
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} '
+ 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
@@ -42,19 +48,32 @@ class Danas(BasicNewsRecipe):
]
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'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')
- ,(u'Srbija' , u'http://www.danas.rs/rss/rss.asp?column_id=28')
- ,(u'Kultura' , u'http://www.danas.rs/rss/rss.asp?column_id=5' )
- ,(u'Sport' , u'http://www.danas.rs/rss/rss.asp?column_id=13')
- ,(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')
+ (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'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')
+ ,(u'Srbija' , u'http://www.danas.rs/rss/rss.asp?column_id=28')
+ ,(u'Kultura' , u'http://www.danas.rs/rss/rss.asp?column_id=5' )
+ ,(u'Sport' , u'http://www.danas.rs/rss/rss.asp?column_id=13')
+ ,(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')
+ ,(u'Sluzbena beleska' , u'http://www.danas.rs/rss/rss.asp?column_id=48')
+ ,(u'Suocavanja' , u'http://www.danas.rs/rss/rss.asp?column_id=49')
+ ,(u'Moj Izbor' , u'http://www.danas.rs/rss/rss.asp?column_id=50')
+ ,(u'Direktno' , u'http://www.danas.rs/rss/rss.asp?column_id=51')
+ ,(u'I tome slicno' , u'http://www.danas.rs/rss/rss.asp?column_id=52')
+ ,(u'No longer and not yet', u'http://www.danas.rs/rss/rss.asp?column_id=53')
+ ,(u'Resetovanje' , u'http://www.danas.rs/rss/rss.asp?column_id=54')
+ ,(u'Iza scene' , u'http://www.danas.rs/rss/rss.asp?column_id=60')
+ ,(u'Drustvoslovlje' , u'http://www.danas.rs/rss/rss.asp?column_id=55')
+ ,(u'Zvaka u pepeljari' , u'http://www.danas.rs/rss/rss.asp?column_id=56')
+ ,(u'Vostani Serbie' , u'http://www.danas.rs/rss/rss.asp?column_id=57')
+ ,(u'Med&Jad-a' , u'http://www.danas.rs/rss/rss.asp?column_id=58')
+ ,(u'Svetlosti pozornice' , u'http://www.danas.rs/rss/rss.asp?column_id=59')
]
def preprocess_html(self, soup):
@@ -65,3 +84,10 @@ class Danas(BasicNewsRecipe):
def print_version(self, url):
return url + '&action=print'
+ def get_cover_url(self):
+ cover_url = None
+ soup = self.index_to_soup('http://www.danas.rs/')
+ for citem in soup.findAll('img'):
+ if citem['src'].endswith('naslovna.jpg'):
+ return 'http://www.danas.rs' + citem['src']
+ return cover_url
diff --git a/resources/recipes/economist.recipe b/resources/recipes/economist.recipe
index 4ae0bb8b05..01ee8e0baf 100644
--- a/resources/recipes/economist.recipe
+++ b/resources/recipes/economist.recipe
@@ -24,9 +24,10 @@ class Economist(BasicNewsRecipe):
oldest_article = 7.0
cover_url = 'http://www.economist.com/images/covers/currentcoverus_large.jpg'
remove_tags = [dict(name=['script', 'noscript', 'title', 'iframe', 'cf_floatingcontent']),
- dict(attrs={'class':['dblClkTrk']})]
- remove_tags_before = dict(name=lambda tag: tag.name=='title' and tag.parent.name=='body')
+ dict(attrs={'class':['dblClkTrk', 'ec-article-info']})]
+ keep_only_tags = [dict(id='ec-article-body')]
needs_subscription = True
+ no_stylesheets = True
preprocess_regexps = [(re.compile('