__license__ = 'GPL v3' __copyright__ = '2010-2012, Darko Miletic , Rogelio Domínguez ' ''' www.jornada.unam.mx ''' import re from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe class LaJornada_mx(BasicNewsRecipe): title = 'La Jornada (Mexico)' __author__ = 'Darko Miletic/Rogelio Domínguez' description = 'Noticias del diario mexicano La Jornada' publisher = 'DEMOS, Desarrollo de Medios, S.A. de C.V.' category = 'news, Mexico' oldest_article = 2 max_articles_per_feed = 200 no_stylesheets = True encoding = 'utf8' use_embedded_content = False language = 'es_MX' remove_empty_feeds = True cover_url = strftime("http://www.jornada.unam.mx/%Y/%m/%d/portada.pdf") masthead_url = 'http://www.jornada.unam.mx/v7.0/imagenes/la-jornada-trans.png' publication_type = 'newspaper' extra_css = """ body{font-family: "Times New Roman",serif } .cabeza{font-size: xx-large; font-weight: bold } .documentFirstHeading{font-size: xx-large; font-weight: bold } .credito-articulo{font-variant: small-caps; font-weight: bold } .foto{text-align: center} .pie-foto{font-size: 0.9em} .credito{font-weight: bold; margin-left: 1em} .credito-autor{font-variant: small-caps; font-weight: bold } .credito-titulo{text-align: right} .hemero{text-align: right; font-size: 0.9em; margin-bottom: 0.5em } .loc{font-weight: bold} .carton{text-align: center} .credit{font-weight: bold} .sumario{font-weight: bold; text-align: center} .text{margin-top: 1.4em} p.inicial{display: inline; font-size: xx-large; font-weight: bold} p.s-s{display: inline; text-indent: 0} """ conversion_options = { 'comment' : description , 'tags' : category , 'publisher' : publisher , 'language' : language } preprocess_regexps = [ (re.compile( r'
(.*)

' ,re.DOTALL|re.IGNORECASE) ,lambda match: '

' + match.group(1) + '

') ] keep_only_tags = [ dict(name='div', attrs={'class':['documentContent','cabeza','sumarios','credito-articulo','text','carton']}) ,dict(name='div', attrs={'id':'renderComments'}) ] remove_tags = [dict(name='div', attrs={'class':['buttonbar','comment-cont']})] feeds = [ (u'Opinion' , u'http://www.jornada.unam.mx/rss/opinion.xml' ) ,(u'Cartones' , u'http://www.jornada.unam.mx/rss/cartones.xml' ) ,(u'Politica' , u'http://www.jornada.unam.mx/rss/politica.xml' ) ,(u'Economia' , u'http://www.jornada.unam.mx/rss/economia.xml' ) ,(u'Mundo' , u'http://www.jornada.unam.mx/rss/mundo.xml' ) ,(u'Estados' , u'http://www.jornada.unam.mx/rss/estados.xml' ) ,(u'Capital' , u'http://www.jornada.unam.mx/rss/capital.xml' ) ,(u'Sociedad y justicia' , u'http://www.jornada.unam.mx/rss/sociedad.xml' ) ,(u'Ciencias' , u'http://www.jornada.unam.mx/rss/ciencias.xml' ) ,(u'Cultura' , u'http://www.jornada.unam.mx/rss/cultura.xml' ) ,(u'Gastronomia' , u'http://www.jornada.unam.mx/rss/gastronomia.xml' ) ,(u'Espectaculos' , u'http://www.jornada.unam.mx/rss/espectaculos.xml' ) ,(u'Deportes' , u'http://www.jornada.unam.mx/rss/deportes.xml' ) ,(u'Ultimas noticias' , u'http://www.jornada.unam.mx/ultimas/news/RSS' ) ] def preprocess_html(self, soup): for item in soup.findAll(style=True): del item['style'] return soup def get_article_url(self, article): rurl = article.get('guid', None) return rurl.rpartition('&partner=')[0]