home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / Calibre / calibre-0.8.18.msi / file_280 / ledevoir.recipe < prev    next >
Text File  |  2011-09-09  |  5KB  |  93 lines

  1. __license__   = 'GPL v3'
  2. __author__    = 'Lorenzo Vigentini'
  3. __copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
  4. __version__     = 'v1.01'
  5. __date__        = '14, January 2010'
  6. __description__   = 'Canadian Paper '
  7.  
  8. '''
  9. http://www.ledevoir.com/
  10. '''
  11.  
  12. import re
  13.  
  14. from calibre.web.feeds.news import BasicNewsRecipe
  15.  
  16. class ledevoir(BasicNewsRecipe):
  17.     author        = 'Lorenzo Vigentini'
  18.     description   = 'Canadian Paper. A subscription is optional, with it you get more content'
  19.  
  20.     cover_url      = 'http://www.ledevoir.com/images/ul/graphiques/logo_devoir.gif'
  21.     title          = u'Le Devoir'
  22.     publisher      = 'leDevoir.com'
  23.     category       = 'News, finance, economy, politics'
  24.  
  25.     language       = 'fr'
  26.     encoding       = 'utf-8'
  27.     timefmt        = '[%a, %d %b, %Y]'
  28.  
  29.     max_articles_per_feed = 50
  30.     use_embedded_content  = False
  31.     recursion             = 10
  32.     needs_subscription    = 'optional'
  33.  
  34.     remove_javascript     = True
  35.     no_stylesheets        = True
  36.  
  37.     preprocess_regexps = [(re.compile(r'(title|alt)=".*?>.*?"', re.DOTALL), lambda m: '')]
  38.  
  39.     keep_only_tags  = [
  40.                         dict(name='div', attrs={'id':'article'}),
  41.                         dict(name='ul', attrs={'id':'ariane'})
  42.                     ]
  43.  
  44.     remove_tags     = [
  45.                         dict(name='div', attrs={'id':'dialog'}),
  46.                         dict(name='div', attrs={'class':['interesse_actions','reactions']}),
  47.                         dict(name='ul', attrs={'class':'mots_cles'}),
  48.                         dict(name='a', attrs={'class':'haut'}),
  49.                         dict(name='h5', attrs={'class':'interesse_actions'})
  50.                     ]
  51.  
  52.     feeds          = [
  53.                        (u'A la une', 'http://www.ledevoir.com/rss/manchettes.xml'),
  54.                        (u'Edition complete', 'http://feeds2.feedburner.com/fluxdudevoir'),
  55.                        (u'Opinions', 'http://www.ledevoir.com/rss/opinions.xml'),
  56.                        (u'Chroniques', 'http://www.ledevoir.com/rss/chroniques.xml'),
  57.                        (u'Politique', 'http://www.ledevoir.com/rss/section/politique.xml?id=51'),
  58.                        (u'International', 'http://www.ledevoir.com/rss/section/international.xml?id=76'),
  59.                        (u'Culture', 'http://www.ledevoir.com/rss/section/culture.xml?id=48'),
  60.                        (u'Environnement', 'http://www.ledevoir.com/rss/section/environnement.xml?id=78'),
  61.                        (u'Societe', 'http://www.ledevoir.com/rss/section/societe.xml?id=52'),
  62.                        (u'Economie', 'http://www.ledevoir.com/rss/section/economie.xml?id=49'),
  63.                        (u'Sports', 'http://www.ledevoir.com/rss/section/sports.xml?id=85'),
  64.                        (u'Loisirs', 'http://www.ledevoir.com/rss/section/loisirs.xml?id=50')
  65.                      ]
  66.  
  67.     extra_css = '''
  68.                 h1 {color:#1C1E7C;font-family:Times,Georgia,serif;font-size:1.85em;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:bold;line-height:1.2em;margin:0 0 5px;}
  69.                 h2 {color:#333333;font-family:Times,Georgia,serif;font-size:1.5em;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:normal;line-height:1.2em;margin:0 0 5px;}
  70.                 h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px;}
  71.                 h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:13px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; }
  72.                 h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; text-transform:uppercase;}
  73.                 .specs {line-height:1em;margin:1px 0;}
  74.                 .specs span.auteur {font:0.85em/1.1em Arial, Verdana, sans-serif;color:#787878;}
  75.                 .specs span.auteur a,
  76.                 .specs span.auteur span {text-transform:uppercase;color:#787878;}
  77.                 .specs .date {font:0.85em/1.1em Arial, Verdana, sans-serif;color:#787878;}
  78.                 ul#ariane {list-style-type:none;margin:0;padding:5px 0 8px 0;font:0.85em/1.2em Arial, Verdana, sans-serif;color:#2E2E2E;border-bottom:10px solid #fff;}
  79.                 ul#ariane li {display:inline;}
  80.                 ul#ariane a {color:#2E2E2E;text-decoration:underline;}
  81.                 .credit {color:#787878;font-size:0.71em;line-height:1.1em;font-weight:bold;}
  82.                 .texte {font-size:1.15em;line-height:1.4em;margin-bottom:17px;}
  83.                 '''
  84.     def get_browser(self):
  85.         br = BasicNewsRecipe.get_browser()
  86.         if self.username is not None and self.password is not None:
  87.             br.open('http://www.ledevoir.com')
  88.             br.select_form(nr=1)
  89.             br['login[courriel]'] = self.username
  90.             br['login[password]'] = self.password
  91.             br.submit()
  92.         return br
  93.