mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Update Weblogs SL
This commit is contained in:
parent
567040ee1e
commit
da9811c933
@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env python2
|
#!/usr/bin/env python
|
||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '4 February 2011, desUBIKado'
|
__copyright__ = '4 February 2011, desUBIKado'
|
||||||
__author__ = 'desUBIKado'
|
__author__ = 'desUBIKado'
|
||||||
__version__ = 'v0.09'
|
__version__ = 'v0.12'
|
||||||
__date__ = '14, May 2013'
|
__date__ = '28, Jul 2016'
|
||||||
'''
|
'''
|
||||||
http://www.weblogssl.com/
|
http://www.weblogssl.com/
|
||||||
'''
|
'''
|
||||||
@ -11,19 +11,18 @@ http://www.weblogssl.com/
|
|||||||
import re
|
import re
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
|
||||||
class weblogssl(BasicNewsRecipe):
|
class weblogssl(BasicNewsRecipe):
|
||||||
__author__ = 'desUBIKado'
|
__author__ = 'desUBIKado'
|
||||||
description = u'Weblogs colectivos dedicados a seguir la actualidad sobre tecnologia, entretenimiento, estilos de vida, motor, deportes y economia.'
|
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)'
|
title = u'Weblogs SL (Xataka, Genbeta, VidaExtra, Blog de Cine y otros)'
|
||||||
publisher = 'Weblogs SL'
|
publisher = 'Weblogs SL'
|
||||||
language = 'es'
|
language = 'es'
|
||||||
timefmt = '[%a, %d %b, %Y]'
|
timefmt = '[%a, %d %b, %Y]'
|
||||||
oldest_article = 1
|
oldest_article = 1
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
encoding = 'utf-8'
|
encoding = 'utf-8'
|
||||||
use_embedded_content = False
|
use_embedded_content = False
|
||||||
remove_empty_feeds = True
|
remove_empty_feeds = True
|
||||||
remove_javascript = True
|
remove_javascript = True
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
|
|
||||||
@ -31,100 +30,123 @@ class weblogssl(BasicNewsRecipe):
|
|||||||
# un caracter # por delante, es decir, # ,(u'Applesfera', u'http://feeds.weblogssl.com/applesfera')
|
# un caracter # por delante, es decir, # ,(u'Applesfera', u'http://feeds.weblogssl.com/applesfera')
|
||||||
# haría que no se descargase Applesfera.
|
# haría que no se descargase Applesfera.
|
||||||
|
|
||||||
feeds = [
|
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'Xataka', u'http://feeds.weblogssl.com/xataka2'),
|
|
||||||
(u'Xataka Smart Home', u'http://feeds.weblogssl.com/Xatakahome'),
|
,(u'Tendencias', u'http://feeds.weblogssl.com/trendencias')
|
||||||
(u'Xataka Mexico', u'http://feeds.weblogssl.com/xatakamx'),
|
,(u'Tendencias Belleza', u'http://feeds.weblogssl.com/trendenciasbelleza')
|
||||||
(u'Xataka M\xf3vil', u'http://feeds.weblogssl.com/xatakamovil'),
|
,(u'Tendencias Hombre', u'http://feeds.weblogssl.com/trendenciashombre')
|
||||||
(u'Xataka Android', u'http://feeds.weblogssl.com/xatakandroid'),
|
,(u'Tendencias Lifestyle', u'http://feeds.weblogssl.com/trendenciaslifestyle')
|
||||||
(u'Xataka Windows', u'http://feeds.weblogssl.com/xatakawindows'),
|
,(u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar')
|
||||||
(u'Xataka Foto', u'http://feeds.weblogssl.com/xatakafoto'),
|
,(u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas')
|
||||||
(u'Xataka ON', u'http://feeds.weblogssl.com/xatakaon'),
|
,(u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica')
|
||||||
(u'Xataka Ciencia', u'http://feeds.weblogssl.com/xatakaciencia'),
|
,(u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera')
|
||||||
(u'Genbeta', u'http://feeds.weblogssl.com/genbeta'),
|
,(u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia')
|
||||||
(u'Genbeta Dev', u'http://feeds.weblogssl.com/genbetadev'),
|
,(u'Pop rosa', u'http://feeds.weblogssl.com/poprosa')
|
||||||
(u'Genbeta Social Media', u'http://feeds.weblogssl.com/genbetasocialmedia'),
|
|
||||||
(u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
|
,(u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion')
|
||||||
(u'Vida Extra', u'http://feeds.weblogssl.com/vidaextra'),
|
,(u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto')
|
||||||
(u'Naci\xf3n Red', u'http://feeds.weblogssl.com/nacionred'),
|
,(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'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine')
|
||||||
(u'Hipers\xf3nica', u'http://feeds.weblogssl.com/hipersonica'),
|
,(u'Vaya tele', u'http://feeds.weblogssl.com/vayatele2')
|
||||||
(u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero'),
|
,(u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero')
|
||||||
(u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco'),
|
,(u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco')
|
||||||
(u'Pop rosa', u'http://feeds.weblogssl.com/poprosa'),
|
|
||||||
(u'Zona FandoM', u'http://feeds.weblogssl.com/zonafandom'),
|
,(u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2')
|
||||||
(u'Fandemia', u'http://feeds.weblogssl.com/fandemia'),
|
,(u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos')
|
||||||
(u'Tendencias', u'http://feeds.weblogssl.com/trendencias'),
|
,(u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario')
|
||||||
(u'Tendencias Belleza', u'http://feeds.weblogssl.com/trendenciasbelleza'),
|
|
||||||
(u'Tendencias Hombre', u'http://feeds.weblogssl.com/trendenciashombre'),
|
,(u'Xataka México', u'http://feeds.weblogssl.com/xatakamx')
|
||||||
(u'Tendencias Shopping', u'http://feeds.weblogssl.com/trendenciasshopping'),
|
,(u'Xataka Android México', u'http://feeds.weblogssl.com/xatakandroidmx')
|
||||||
(u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar'),
|
,(u'Vida Extra México', u'http://feeds.weblogssl.com/vidaextramx')
|
||||||
(u'Compradicci\xf3n', u'http://feeds.weblogssl.com/compradiccion'),
|
,(u'Xataka Colombia', u'http://feeds.weblogssl.com/xatakaco')
|
||||||
(u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera'),
|
|
||||||
(u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia'),
|
,(u'Directo al paladar México', u'http://feeds.weblogssl.com/directoalpaladarmx')
|
||||||
(u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica'),
|
,(u'Vit\xf3nica México', u'http://feeds.weblogssl.com/vitonicamx')
|
||||||
(u'Ambiente G', u'http://feeds.weblogssl.com/ambienteg'),
|
,(u'Tendencias Hombre México', u'http://feeds.weblogssl.com/trendenciashombremx')
|
||||||
(u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas'),
|
|
||||||
(u'Peques y m\xe1s', u'http://feeds.weblogssl.com/pequesymas'),
|
,(u'Motorpasi\xf3n México', u'http://feeds.weblogssl.com/motorpasionmx')
|
||||||
(u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion'),
|
|
||||||
(u'Motorpasi\xf3n F1', u'http://feeds.weblogssl.com/motorpasionf1'),
|
|
||||||
(u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto'),
|
|
||||||
(u'Motorpasi\xf3n Futuro', u'http://feeds.weblogssl.com/motorpasionfuturo'),
|
|
||||||
(u'Notas de futbol', u'http://feeds.weblogssl.com/notasdefutbol'),
|
|
||||||
(u'Fuera de l\xedmites', u'http://feeds.weblogssl.com/fueradelimites'),
|
|
||||||
(u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2'),
|
|
||||||
(u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos'),
|
|
||||||
(u'Tecnolog\xeda Pyme', u'http://feeds.weblogssl.com/tecnologiapyme'),
|
|
||||||
(u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario')
|
|
||||||
]
|
]
|
||||||
|
|
||||||
keep_only_tags = [dict(name='div', attrs={'id': 'infoblock'}),
|
keep_only_tags = [
|
||||||
dict(name='div', attrs={'class': 'post'}),
|
dict(name='div', attrs={'class':'content-container'})
|
||||||
dict(name='div', attrs={'id': 'blog-comments'}),
|
]
|
||||||
# m.xataka.com
|
|
||||||
dict(name='div', attrs={'class': 'container'})
|
|
||||||
]
|
|
||||||
|
|
||||||
remove_tags = [dict(name='div', attrs={'id': 'comment-nav'}),
|
remove_tags = [
|
||||||
# m.xataka.com
|
dict(name='div', attrs={'class':'article-social-share m-v1 js-article-share js-article-social-share'}),
|
||||||
dict(name='menu', attrs={'class': 'social-sharing'}),
|
dict(name='div', attrs={'class':'article-social-share m-v1 js-article-social-share'}),
|
||||||
dict(name='section', attrs={
|
dict(name='div', attrs={'class':'social-widgets'}),
|
||||||
'class': 'comments'}), # m.xataka.com
|
dict(name='div', attrs={'class':'article-social-share m-in-normal'}),
|
||||||
# m.xataka.com
|
dict(name='div', attrs={'class':'article-comments'}),
|
||||||
dict(name='div', attrs={'class': 'article-comments'}),
|
dict(name='div', attrs={'class':'article-links'}),
|
||||||
# m.xataka.com
|
dict(name='div', attrs={'class':'article-topics-list'}),
|
||||||
dict(name='nav', attrs={'class': 'article-taxonomy'})
|
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='section', attrs={'class': 'comments'})
|
remove_tags_after = dict(name='div' , attrs={'id':'comments'})
|
||||||
|
|
||||||
def print_version(self, url):
|
def print_version(self, url):
|
||||||
return url.replace('http://www.', 'http://m.')
|
if url.startswith('http://www'):
|
||||||
|
return url.replace('http://www.', 'http://m.')
|
||||||
|
else:
|
||||||
|
return url.replace('http://', 'http://m.')
|
||||||
|
|
||||||
preprocess_regexps = [
|
preprocess_regexps = [
|
||||||
# Para poner una linea en blanco entre un comentario y el siguiente
|
# Para poner una linea en blanco entre un comentario y el siguiente
|
||||||
(re.compile(r'<li id="c', re.DOTALL | re.IGNORECASE),
|
(re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c'),
|
||||||
lambda match: '<br><br><li id="c'),
|
|
||||||
# Para ver las imágenes en las noticias de m.xataka.com
|
# Para ver las imágenes en las noticias de m.xataka.com
|
||||||
(re.compile(r'<noscript>', re.DOTALL | re.IGNORECASE), lambda m: ''),
|
(re.compile(r'<noscript>', re.DOTALL|re.IGNORECASE), lambda m: ''),
|
||||||
(re.compile(r'</noscript>', re.DOTALL |
|
(re.compile(r'</noscript>', re.DOTALL|re.IGNORECASE), lambda m: ''),
|
||||||
re.IGNORECASE), lambda m: '')
|
|
||||||
|
# Para cambiar de sitio el more
|
||||||
|
(re.compile(r'<div class="article-content">', re.DOTALL|re.IGNORECASE), lambda m: '<div class="article-content"><!--more-->'),
|
||||||
|
(re.compile(r'<div class="\/n<!--more-->">', 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"><span></span>', 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
|
# Para sustituir el video incrustado de YouTube por una imagen
|
||||||
|
|
||||||
def preprocess_html(self, soup):
|
def preprocess_html(self, soup):
|
||||||
for video_yt in soup.findAll('iframe', {'title': 'YouTube video player'}):
|
for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
|
||||||
if video_yt:
|
if video_yt:
|
||||||
video_yt.name = 'img'
|
video_yt.name = 'img'
|
||||||
fuente = video_yt['src']
|
fuente = video_yt['src']
|
||||||
fuente2 = fuente.replace(
|
fuente2pre = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
|
||||||
'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', '')
|
fuente3 = fuente2.replace('?rel=0','')
|
||||||
video_yt['src'] = fuente3 + '/0.jpg'
|
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
|
return soup
|
||||||
|
|
||||||
def get_article_url(self, article):
|
def get_article_url(self, article):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user