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

  1. #!/usr/bin/env  python
  2.  
  3. __license__   = 'GPL v3'
  4. __copyright__ = '2009, Darko Miletic <darko.miletic at gmail.com>'
  5.  
  6. '''
  7. pobjeda.co.me
  8. '''
  9.  
  10. import re
  11. from calibre import strftime
  12. from calibre.web.feeds.news import BasicNewsRecipe
  13. from calibre.ebooks.BeautifulSoup import Tag
  14.  
  15. class Pobjeda(BasicNewsRecipe):
  16.     title                 = 'Pobjeda Online'
  17.     __author__            = 'Darko Miletic'
  18.     description           = 'News from Montenegro'
  19.     publisher             = 'Pobjeda a.d.'
  20.     category              = 'news, politics, Montenegro'
  21.     no_stylesheets        = True
  22.     encoding              = 'utf-8'
  23.     use_embedded_content  = False
  24.     language = 'sr'
  25.  
  26.     lang                  = 'sr-Latn-Me'
  27.     INDEX                 = u'http://www.pobjeda.co.me'
  28.     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}'
  29.  
  30.     conversion_options = {
  31.                           'comment'          : description
  32.                         , 'tags'             : category
  33.                         , 'publisher'        : publisher
  34.                         , 'language'         : lang
  35.                         , 'pretty_print'     : True
  36.                         }
  37.  
  38.  
  39.     preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')]
  40.  
  41.     keep_only_tags = [dict(name='div', attrs={'class':'vijest'})]
  42.  
  43.     remove_tags = [dict(name=['object','link'])]
  44.  
  45.     feeds = [
  46.                (u'Politika'          , u'http://www.pobjeda.co.me/rubrika.php?rubrika=1'  )
  47.               ,(u'Ekonomija'         , u'http://www.pobjeda.co.me/rubrika.php?rubrika=2'  )
  48.               ,(u'Drustvo'           , u'http://www.pobjeda.co.me/rubrika.php?rubrika=3'  )
  49.               ,(u'Crna Hronika'      , u'http://www.pobjeda.co.me/rubrika.php?rubrika=4'  )
  50.               ,(u'Kultura'           , u'http://www.pobjeda.co.me/rubrika.php?rubrika=5'  )
  51.               ,(u'Hronika Podgorice' , u'http://www.pobjeda.co.me/rubrika.php?rubrika=7'  )
  52.               ,(u'Feljton'           , u'http://www.pobjeda.co.me/rubrika.php?rubrika=8'  )
  53.               ,(u'Crna Gora'         , u'http://www.pobjeda.co.me/rubrika.php?rubrika=9'  )
  54.               ,(u'Svijet'            , u'http://www.pobjeda.co.me/rubrika.php?rubrika=202')
  55.               ,(u'Ekonomija i Biznis', u'http://www.pobjeda.co.me/dodatak.php?rubrika=11' )
  56.               ,(u'Djeciji Svijet'    , u'http://www.pobjeda.co.me/dodatak.php?rubrika=12' )
  57.               ,(u'Kultura i Drustvo' , u'http://www.pobjeda.co.me/dodatak.php?rubrika=13' )
  58.               ,(u'Agora'             , u'http://www.pobjeda.co.me/dodatak.php?rubrika=133')
  59.               ,(u'Ekologija'         , u'http://www.pobjeda.co.me/dodatak.php?rubrika=252')
  60.             ]
  61.  
  62.     def preprocess_html(self, soup):
  63.         soup.html['xml:lang'] = self.lang
  64.         soup.html['lang']     = self.lang
  65.         mlang = Tag(soup,'meta',[("http-equiv","Content-Language"),("content",self.lang)])
  66.         mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=UTF-8")])
  67.         soup.head.insert(0,mlang)
  68.         soup.head.insert(1,mcharset)
  69.         return self.adeify_images(soup)
  70.  
  71.     def get_cover_url(self):
  72.         cover_url = None
  73.         soup = self.index_to_soup(self.INDEX)
  74.         cover_item = soup.find('img',attrs={'alt':'Naslovna strana'})
  75.         if cover_item:
  76.            cover_url = self.INDEX + cover_item.parent['href']
  77.         return cover_url
  78.  
  79.     def parse_index(self):
  80.         totalfeeds = []
  81.         lfeeds = self.get_feeds()
  82.         for feedobj in lfeeds:
  83.             feedtitle, feedurl = feedobj
  84.             self.report_progress(0, _('Fetching feed')+' %s...'%(feedtitle if feedtitle else feedurl))
  85.             articles = []
  86.             soup = self.index_to_soup(feedurl)
  87.             for item in soup.findAll('div', attrs={'class':'vijest'}):
  88.                 description = self.tag_to_string(item.h2)
  89.                 atag = item.h1.find('a')
  90.                 if atag and atag.has_key('href'):
  91.                     url         = self.INDEX + '/' + atag['href']
  92.                     title       = self.tag_to_string(atag)
  93.                     date        = strftime(self.timefmt)
  94.                     articles.append({
  95.                                       'title'      :title
  96.                                      ,'date'       :date
  97.                                      ,'url'        :url
  98.                                      ,'description':description
  99.                                     })
  100.             totalfeeds.append((feedtitle, articles))
  101.         return totalfeeds
  102.  
  103.