#!/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 = 'Weblogs colectivos dedicados a seguir la actualidad sobre tecnologia, entretenimiento, estilos de vida, motor, deportes y economia.'
    title = '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 = [
        ('Xataka', 'http://feeds.weblogssl.com/xataka2'),
        ('Xataka M\xf3vil', 'http://feeds.weblogssl.com/xatakamovil'),
        ('Xataka Foto', 'http://feeds.weblogssl.com/xatakafoto'),
        ('Xataka Android', 'http://feeds.weblogssl.com/xatakandroid'),
        ('Xataka Smart Home', 'http://feeds.weblogssl.com/Xatakahome'),
        ('Xataka Windows', 'http://feeds.weblogssl.com/xatakawindows'),
        ('Xataka Ciencia', 'http://feeds.weblogssl.com/xatakaciencia'),
        ('Applesfera', 'http://feeds.weblogssl.com/applesfera'),
        ('Vida Extra', 'http://feeds.weblogssl.com/vidaextra'),
        ('Genbeta', 'http://feeds.weblogssl.com/genbeta'),
        ('Genbeta Dev', 'http://feeds.weblogssl.com/genbetadev'),
        ('Magnet', 'http://feeds.weblogssl.com/xatakamagnet2'),
        ('Tendencias', 'http://feeds.weblogssl.com/trendencias'),
        ('Tendencias Belleza', 'http://feeds.weblogssl.com/trendenciasbelleza'),
        ('Tendencias Hombre', 'http://feeds.weblogssl.com/trendenciashombre'),
        ('Tendencias Lifestyle', 'http://feeds.weblogssl.com/trendenciaslifestyle'),
        ('Directo al paladar', 'http://feeds.weblogssl.com/directoalpaladar'),
        ('Beb\xe9s y m\xe1s', 'http://feeds.weblogssl.com/bebesymas'),
        ('Vit\xf3nica', 'http://feeds.weblogssl.com/vitonica'),
        ('Decoesfera', 'http://feeds.weblogssl.com/decoesfera'),
        ('Embelezzia', 'http://feeds.weblogssl.com/embelezzia'),
        ('Pop rosa', 'http://feeds.weblogssl.com/poprosa'),
        ('Motorpasi\xf3n', 'http://feeds.weblogssl.com/motorpasion'),
        ('Motorpasi\xf3n Moto', 'http://feeds.weblogssl.com/motorpasionmoto'),
        ('Motorpasi\xf3n Futuro', 'http://feeds.weblogssl.com/motorpasionfuturo'),
        ('Blog de Cine', 'http://feeds.weblogssl.com/blogdecine'),
        ('Vaya tele', 'http://feeds.weblogssl.com/vayatele2'),
        ('Diario del viajero', 'http://feeds.weblogssl.com/diariodelviajero'),
        ('Papel en blanco', 'http://feeds.weblogssl.com/papelenblanco'),
        ('El blog salm\xf3n', 'http://feeds.weblogssl.com/elblogsalmon2'),
        ('Pymes y aut\xf3nomos', 'http://feeds.weblogssl.com/pymesyautonomos'),
        ('Ahorro diario', 'http://feeds.weblogssl.com/ahorrodiario'),
        ('Xataka México', 'http://feeds.weblogssl.com/xatakamx'),
        ('Xataka Android México', 'http://feeds.weblogssl.com/xatakandroidmx'),
        ('Vida Extra México', 'http://feeds.weblogssl.com/vidaextramx'),
        ('Xataka Colombia', 'http://feeds.weblogssl.com/xatakaco'),
        ('Directo al paladar México', 'http://feeds.weblogssl.com/directoalpaladarmx'),
        ('Vit\xf3nica México', 'http://feeds.weblogssl.com/vitonicamx'),
        ('Tendencias Hombre México', 'http://feeds.weblogssl.com/trendenciashombremx'),
        ('Motorpasi\xf3n México', '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'<li id="c', re.DOTALL | re.IGNORECASE), lambda match: '<br><br><li id="c'),
        # 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: ''),
        # 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

    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)
