diff --git a/recipes/rue89.recipe b/recipes/rue89.recipe index bd3ef7ea4c..261770802e 100644 --- a/recipes/rue89.recipe +++ b/recipes/rue89.recipe @@ -6,6 +6,7 @@ Rue89 __author__ = '2010-2012, Louis Gesbert ' +import re from calibre.web.feeds.news import BasicNewsRecipe class Rue89(BasicNewsRecipe): @@ -15,23 +16,24 @@ class Rue89(BasicNewsRecipe): title = u'Rue89' language = 'fr' oldest_article = 7 - max_articles_per_feed = 12 + max_articles_per_feed = 50 use_embedded_content = False # From http://www.rue89.com/les-flux-rss-de-rue89 feeds = [ (u'La Une', u'http://www.rue89.com/feed'), - (u'Rue69', u'http://www.rue89.com/rue69/feed'), - (u'Eco', u'http://www.rue89.com/rue89-eco/feed'), - (u'Planète', u'http://www.rue89.com/rue89-planete/feed'), - (u'Sport', u'http://www.rue89.com/rue89-sport/feed'), - (u'Culture', u'http://www.rue89.com/culture/feed'), - (u'Hi-tech', u'http://www.rue89.com/hi-tech/feed'), - (u'Media', u'http://www.rue89.com/medias/feed'), - (u'Monde', u'http://www.rue89.com/monde/feed'), - (u'Politique', u'http://www.rue89.com/politique/feed'), - (u'Societe', u'http://www.rue89.com/societe/feed'), + # Other feeds disabled, 'La Une' seems to include them all + # (u'Rue69', u'http://www.rue89.com/rue69/feed'), + # (u'Eco', u'http://www.rue89.com/rue89-eco/feed'), + # (u'Planète', u'http://www.rue89.com/rue89-planete/feed'), + # (u'Sport', u'http://www.rue89.com/rue89-sport/feed'), + # (u'Culture', u'http://www.rue89.com/culture/feed'), + # (u'Hi-tech', u'http://www.rue89.com/hi-tech/feed'), + # (u'Media', u'http://www.rue89.com/medias/feed'), + # (u'Monde', u'http://www.rue89.com/monde/feed'), + # (u'Politique', u'http://www.rue89.com/politique/feed'), + # (u'Societe', u'http://www.rue89.com/societe/feed'), ] # Follow redirection from feedsportal.com @@ -41,19 +43,36 @@ class Rue89(BasicNewsRecipe): def print_version(self, url): return url + '?imprimer=1' - no_stylesheets = True - conversion_options = { 'smarten_punctuation' : True } keep_only_tags = [ - dict(name='div', attrs={'id':'article'}), + dict(name='div', attrs={'id':'content'}), ] remove_tags_after = [ dict(name='div', attrs={'id':'plus_loin'}), + dict(name='div', attrs={'class':'stats'}), ] remove_tags = [ dict(name='div', attrs={'id':'article_tools'}), dict(name='div', attrs={'id':'plus_loin'}), + dict(name='div', attrs={'class':'stats'}), + dict(name='div', attrs={'class':'tools'}), ] + + extra_css = "#content { padding: 0 0; }" + + # Without this, parsing of video articles returns strange results + preprocess_regexps = [ + (re.compile(r'', re.IGNORECASE|re.DOTALL), ''), + ] + + def preprocess_html(self, soup): + # Remove whole article if it's a "zapnet" (video) + if soup.find('h1', {'class':'zapnet_title'}): + return None + # Reduce h2 titles to h3 + for title in soup.findAll('h2'): + title.name = 'h3' + return soup