#!/usr/bin/env python __license__ = 'GPL v3' __copyright__ = '4 February 2011, desUBIKado' __author__ = 'desUBIKado' __version__ = 'v0.12' __date__ = '28, Jul 2016' ''' http://www.weblogssl.com/ ''' import re from calibre.web.feeds.news import BasicNewsRecipe class weblogssl(BasicNewsRecipe): __author__ = 'desUBIKado' description = u'Weblogs colectivos dedicados a seguir la actualidad sobre tecnologia, entretenimiento, estilos de vida, motor, deportes y economia.' title = u'Weblogs SL (Xataka, Genbeta, VidaExtra, Blog de Cine y otros)' publisher = 'Weblogs SL' language = 'es' timefmt = '[%a, %d %b, %Y]' oldest_article = 1 max_articles_per_feed = 100 encoding = 'utf-8' use_embedded_content = False remove_empty_feeds = True remove_javascript = True no_stylesheets = True # Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo # un caracter # por delante, es decir, # ,(u'Applesfera', u'http://feeds.weblogssl.com/applesfera') # haría que no se descargase Applesfera. feeds = [ (u'Xataka', u'http://feeds.weblogssl.com/xataka2') ,(u'Xataka M\xf3vil', u'http://feeds.weblogssl.com/xatakamovil') ,(u'Xataka Foto', u'http://feeds.weblogssl.com/xatakafoto') ,(u'Xataka Android', u'http://feeds.weblogssl.com/xatakandroid') ,(u'Xataka Smart Home', u'http://feeds.weblogssl.com/Xatakahome') ,(u'Xataka Windows', u'http://feeds.weblogssl.com/xatakawindows') ,(u'Xataka Ciencia', u'http://feeds.weblogssl.com/xatakaciencia') ,(u'Applesfera', u'http://feeds.weblogssl.com/applesfera') ,(u'Vida Extra', u'http://feeds.weblogssl.com/vidaextra') ,(u'Genbeta', u'http://feeds.weblogssl.com/genbeta') ,(u'Genbeta Dev', u'http://feeds.weblogssl.com/genbetadev') ,(u'Magnet', u'http://feeds.weblogssl.com/xatakamagnet2') ,(u'Tendencias', u'http://feeds.weblogssl.com/trendencias') ,(u'Tendencias Belleza', u'http://feeds.weblogssl.com/trendenciasbelleza') ,(u'Tendencias Hombre', u'http://feeds.weblogssl.com/trendenciashombre') ,(u'Tendencias Lifestyle', u'http://feeds.weblogssl.com/trendenciaslifestyle') ,(u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar') ,(u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas') ,(u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica') ,(u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera') ,(u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia') ,(u'Pop rosa', u'http://feeds.weblogssl.com/poprosa') ,(u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion') ,(u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto') ,(u'Motorpasi\xf3n Futuro', u'http://feeds.weblogssl.com/motorpasionfuturo') ,(u'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine') ,(u'Vaya tele', u'http://feeds.weblogssl.com/vayatele2') ,(u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero') ,(u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco') ,(u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2') ,(u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos') ,(u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario') ,(u'Xataka México', u'http://feeds.weblogssl.com/xatakamx') ,(u'Xataka Android México', u'http://feeds.weblogssl.com/xatakandroidmx') ,(u'Vida Extra México', u'http://feeds.weblogssl.com/vidaextramx') ,(u'Xataka Colombia', u'http://feeds.weblogssl.com/xatakaco') ,(u'Directo al paladar México', u'http://feeds.weblogssl.com/directoalpaladarmx') ,(u'Vit\xf3nica México', u'http://feeds.weblogssl.com/vitonicamx') ,(u'Tendencias Hombre México', u'http://feeds.weblogssl.com/trendenciashombremx') ,(u'Motorpasi\xf3n México', u'http://feeds.weblogssl.com/motorpasionmx') ] keep_only_tags = [ dict(name='div', attrs={'class':'content-container'}) ] remove_tags = [ dict(name='div', attrs={'class':'article-social-share m-v1 js-article-share js-article-social-share'}), dict(name='div', attrs={'class':'article-social-share m-v1 js-article-social-share'}), dict(name='div', attrs={'class':'social-widgets'}), dict(name='div', attrs={'class':'article-social-share m-in-normal'}), dict(name='div', attrs={'class':'article-comments'}), dict(name='div', attrs={'class':'article-links'}), dict(name='div', attrs={'class':'article-topics-list'}), dict(name='div', attrs={'class':'ad-box'}), dict(name='blockquote', attrs={'class':'instagram-media'}), dict(name='img', attrs={'alt':'Código QR'}), dict(name='div', attrs={'id':'comments'}) ] remove_tags_after = dict(name='div' , attrs={'id':'comments'}) def print_version(self, url): if url.startswith('http://www'): return url.replace('http://www.', 'http://m.') else: return url.replace('http://', 'http://m.') preprocess_regexps = [ # Para poner una linea en blanco entre un comentario y el siguiente (re.compile(r'
  • ', re.DOTALL|re.IGNORECASE), lambda m: ''), (re.compile(r'', re.DOTALL|re.IGNORECASE), lambda m: ''), # Para cambiar de sitio el more (re.compile(r'
    ', re.DOTALL|re.IGNORECASE), lambda m: '
    '), (re.compile(r'
    ', re.DOTALL|re.IGNORECASE), lambda m: ''), # Para presentar la primera imagen del artículo (re.compile(r' srcset="http://i.blogs.es/', re.DOTALL|re.IGNORECASE), lambda match: ' src="http://i.blogs.es/'), (re.compile(r' 450w, http://i.blogs.es', re.DOTALL|re.IGNORECASE), lambda match: '">'), (re.compile(r'1366w" sf-src="http://i.blogs.es', re.DOTALL|re.IGNORECASE), lambda match: '--> sf-src="http://i.blogs.es') ] # Para sustituir el video incrustado de YouTube por una imagen def preprocess_html(self, soup): for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}): if video_yt: video_yt.name = 'img' fuente = video_yt['src'] fuente2pre = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/') fuente2 = fuente2pre.replace('https://www.youtube.com/embed/','https://img.youtube.com/vi/') fuente3 = fuente2.replace('?rel=0','') video_yt['src'] = fuente3 + '/0.jpg' for video_yt2 in soup.findAll('iframe',{'allowfullscreen'}): if video_yt2: esyt = video_yt2.find('youtube') if esyt: video_yt2.name = 'img' fuente = video_yt2['src'] fuente2pre = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/') fuente2 = fuente2pre.replace('https://www.youtube.com/embed/','https://img.youtube.com/vi/') video_yt2['src'] = fuente2 + '/0.jpg' return soup def get_article_url(self, article): return article.get('guid', None)