# vim:fileencoding=utf-8 __license__ = 'GPL v3' __copyright__ = '2009-2013, Darko Miletic ' ''' elmundo.es ''' import time from calibre.ptempfile import PersistentTemporaryFile from calibre.web.feeds.news import BasicNewsRecipe class ElMundo(BasicNewsRecipe): title = 'El Mundo' __author__ = 'Darko Miletic' description = u'Lider de informacion en espaƱol' publisher = 'Unidad Editorial Informacion General S.L.U.' category = 'news, politics, Spain' oldest_article = 2 max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False encoding = 'iso8859_15' remove_javascript = True remove_empty_feeds = True language = 'es' ignore_duplicate_articles = {'url'} masthead_url = 'http://estaticos03.elmundo.es/assets/desktop/master/img/iconos/elmundo-portada.png' publication_type = 'newspaper' articles_are_obfuscated = True temp_files = [] needs_subscription = 'optional' LOGIN = 'https://seguro.elmundo.es/registro/login.html' extra_css = """ body{font-family: Arial,Helvetica,sans-serif} .metadata_noticia{font-size: small} .pestana_GDP{font-size: small; font-weight:bold} h1 {color: #333333; font-family: Georgia,"Times New Roman",Times,serif} .hora{color: red} .update{color: gray} """ conversion_options = { 'comments' : description ,'tags' : category ,'language' : language ,'publisher' : publisher } remove_tags_before = dict(attrs={'class':['titular','antetitulo','entrada']}) remove_tags_after = dict(name='div' , attrs={'id':['desarrollo_noticia','tamano']}) remove_tags = [ dict(name='div', attrs={'class':'comentarios'}), dict(name=['meta', 'link', 'iframe', 'object']) ] remove_attributes = ['lang','border'] def get_browser(self): br = BasicNewsRecipe.get_browser(self) if self.username is not None and self.password is not None: br.open(self.LOGIN) br.select_form(name='login') br['nick' ] = self.username br['clave'] = self.password br.submit() return br feeds = [ (u'Portada' , u'http://elmundo.feedsportal.com/elmundo/rss/portada.xml' ) ,(u'Deportes' , u'http://elmundo.feedsportal.com/elmundodeporte/rss/portada.xml') ,(u'Econom\xeda' , u'http://elmundo.feedsportal.com/elmundo/rss/economia.xml' ) ,(u'Espa\xf1a' , u'http://elmundo.feedsportal.com/elmundo/rss/espana.xml' ) ,(u'Internacional' , u'http://elmundo.feedsportal.com/elmundo/rss/internacional.xml' ) ,(u'Cultura' , u'http://elmundo.feedsportal.com/elmundo/rss/internacional.xml' ) ,(u'Ciencia/Ecolog\xeda', u'http://elmundo.feedsportal.com/elmundo/rss/ciencia.xml' ) ,(u'Comunicaci\xf3n' , u'http://elmundo.feedsportal.com/elmundo/rss/comunicacion.xml' ) ,(u'Televisi\xf3n' , u'http://elmundo.feedsportal.com/elmundo/rss/television.xml' ) ,(u'Salud' , u'http://elmundo.feedsportal.com/elmundosalud/rss/portada.xml' ) ,(u'Solidaridad' , u'http://elmundo.feedsportal.com/elmundo/rss/solidaridad.xml' ) ,(u'Su vivienda' , u'http://elmundo.feedsportal.com/elmundo/rss/suvivienda.xml' ) ,(u'Motor' , u'http://elmundo.feedsportal.com/elmundodeporte/rss/motor.xml' ) ,(u'Madrid' , u'http://elmundo.feedsportal.com/elmundo/rss/madrid.xml' ) ,(u'Barcelona' , u'http://elmundo.feedsportal.com/elmundo/rss/barcelona.xml' ) ,(u'Pa\xeds Vasco' , u'http://elmundo.feedsportal.com/elmundo/rss/paisvasco.xml' ) ,(u'Baleares' , u'http://elmundo.feedsportal.com/elmundo/rss/baleares.xml' ) ,(u'Castilla y Le\xf3n' , u'http://elmundo.feedsportal.com/elmundo/rss/castillayleon.xml' ) ,(u'Valladolid' , u'http://elmundo.feedsportal.com/elmundo/rss/valladolid.xml' ) ,(u'Valencia' , u'http://elmundo.feedsportal.com/elmundo/rss/valencia.xml' ) ,(u'Alicante' , u'http://elmundo.feedsportal.com/elmundo/rss/alicante.xml' ) ,(u'Castell\xf3n' , u'http://elmundo.feedsportal.com/elmundo/rss/castellon.xml' ) ,(u'Andaluc\xeda' , u'http://elmundo.feedsportal.com/elmundo/rss/andalucia.xml' ) ,(u'Sevilla' , u'http://elmundo.feedsportal.com/elmundo/rss/andalucia_sevilla.xml' ) ,(u'M\xe1laga' , u'http://elmundo.feedsportal.com/elmundo/rss/andalucia_malaga.xml' ) ] def get_article_url(self, article): realurl = article.get('guid', None) if '/album/' in realurl or '/envivos/' in realurl: return None return realurl # Obtener la imagen de portada def get_cover_url(self): cover = self.masthead_url st = time.localtime() year = str(st.tm_year) month = "%.2d" % st.tm_mon day = "%.2d" % st.tm_mday cover='http://img.kiosko.net/'+ year + '/' + month + '/' + day +'/es/elmundo.750.jpg' try: self.browser.open(cover) except: self.log("\nPortada no disponible") return cover def get_obfuscated_article(self, url): count = 0 tries = 5 html = None while (count < tries): try: response = self.browser.open(url) html = response.read() count = tries except: print "Retrying download..." count += 1 if html is not None: tfile = PersistentTemporaryFile('_fa.html') tfile.write(html) tfile.close() self.temp_files.append(tfile) return tfile.name return None def image_url_processor(self, baseurl, url): if url.startswith('//'): return 'http:' + url return url