From 23dd44edc2dbc9e7fc0ad86bf84ebe937b0614db Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 29 May 2009 09:00:31 -0700 Subject: [PATCH 1/2] Fix #2515 (eBook Viewer cannot open TAZ epub file) --- src/calibre/ebooks/epub/iterator.py | 2 +- src/calibre/web/feeds/recipes/__init__.py | 1 + .../feeds/recipes/recipe_climate_progress.py | 47 +++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/calibre/web/feeds/recipes/recipe_climate_progress.py diff --git a/src/calibre/ebooks/epub/iterator.py b/src/calibre/ebooks/epub/iterator.py index a51a67b3a1..fa2e120e3f 100644 --- a/src/calibre/ebooks/epub/iterator.py +++ b/src/calibre/ebooks/epub/iterator.py @@ -94,7 +94,7 @@ class EbookIterator(object): ''' for item in self.opf.manifest: if item.mime_type and 'css' in item.mime_type.lower(): - css = open(item.path, 'rb').read().decode('utf-8') + css = open(item.path, 'rb').read().decode('utf-8', 'replace') for match in re.compile(r'@font-face\s*{([^}]+)}').finditer(css): block = match.group(1) family = re.compile(r'font-family\s*:\s*([^;]+)').search(block) diff --git a/src/calibre/web/feeds/recipes/__init__.py b/src/calibre/web/feeds/recipes/__init__.py index 6793c2864d..e522db86eb 100644 --- a/src/calibre/web/feeds/recipes/__init__.py +++ b/src/calibre/web/feeds/recipes/__init__.py @@ -44,6 +44,7 @@ recipe_modules = ['recipe_' + r for r in ( 'stackoverflow', 'telepolis_artikel', 'zaobao', 'usnews', 'straitstimes', 'index_hu', 'pcworld_hu', 'hrt', 'rts', 'h1', 'h2', 'h3', 'phd_comics', 'woz_die', 'elektrolese', + 'climate_progress', )] import re, imp, inspect, time, os diff --git a/src/calibre/web/feeds/recipes/recipe_climate_progress.py b/src/calibre/web/feeds/recipes/recipe_climate_progress.py new file mode 100644 index 0000000000..081997f7fe --- /dev/null +++ b/src/calibre/web/feeds/recipes/recipe_climate_progress.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2009, Darko Miletic ' +''' +climateprogress.org +''' + +from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import BeautifulSoup, Tag + +class ClimateProgress(BasicNewsRecipe): + title = 'Climate Progress' + __author__ = 'Darko Miletic' + description = "An insider's view of climate science, politics and solutions" + publisher = 'Climate Progress' + category = 'news, ecology, climate, blog' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = True + encoding = 'utf-8' + language = _("English") + lang = 'en-US' + direction = 'ltr' + + html2lrf_options = [ + '--comment', description + , '--category', category + , '--publisher', publisher + ] + + html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"' + + remove_tags = [dict(name='a', attrs={'rel':'bookmark'})] + + feeds = [(u'Posts', u'http://feeds.feedburner.com/climateprogress/lCrX')] + + def preprocess_html(self, soup): + soup.html['lang'] = self.lang + soup.html['dir' ] = self.direction + mlang = Tag(soup,'meta',[("http-equiv","Content-Language"),("content",self.lang)]) + mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=utf-8")]) + soup.head.insert(0,mlang) + soup.head.insert(1,mcharset) + return self.adeify_images(soup) + From 30fb99527ea96157abecabece81421bf7887d1ef Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 29 May 2009 09:04:17 -0700 Subject: [PATCH 2/2] New recipe for Carta by Oliver Niesner --- src/calibre/gui2/images/news/carta.png | Bin 0 -> 3084 bytes src/calibre/web/feeds/recipes/__init__.py | 2 +- src/calibre/web/feeds/recipes/recipe_carta.py | 45 ++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/calibre/gui2/images/news/carta.png create mode 100644 src/calibre/web/feeds/recipes/recipe_carta.py diff --git a/src/calibre/gui2/images/news/carta.png b/src/calibre/gui2/images/news/carta.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a184f5d8627bf87b6b693cb161d5ffcd15fcba GIT binary patch literal 3084 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