#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '5, January 2011 Gerardo Diez<gerardo.diez.garcia@gmail.com> & desUBIKado'
__author__ = 'desUBIKado, based on an earlier version by Gerardo Diez'
__version__ = 'v1.01'
__date__ = '13, November 2011'

'''
[url]http://www.expansion.com/[/url]
'''

import re
import time

from calibre.web.feeds.recipes import BasicNewsRecipe


class expansion_spanish(BasicNewsRecipe):
    __author__ = 'Gerardo Diez & desUBIKado'
    description = 'Financial news from Spain'
    title = 'Expansion'
    publisher = 'Unidad Editorial Internet, S.L.'
    category = 'news, finances, Spain'
    oldest_article = 2
    simultaneous_downloads = 10
    max_articles_per_feed = 100
    timefmt = '[%a, %d %b, %Y]'
    encoding = 'iso-8859-15'
    language = 'es'
    use_embedded_content = False
    remove_javascript = True
    no_stylesheets = True
    remove_empty_feeds = True

    keep_only_tags = dict(name='div', attrs={'class': ['noticia primer_elemento']})

    remove_tags = [
        dict(
            name='div',
            attrs={
                'class': [
                    'compartir',
                    'metadata_desarrollo_noticia',
                    'relacionadas',
                    'mas_info',
                    'publicidad publicidad_textlink',
                    'ampliarfoto',
                    'tit_relacionadas',
                    'interact',
                    'paginacion estirar',
                    'sumario derecha',
                ]
            },
        ),  # noqa: E501
        dict(name='ul', attrs={'class': ['bolos_desarrollo_noticia', 'not_logged']}),
        dict(name='span', attrs={'class': ['comentarios']}),
        dict(name='p', attrs={'class': ['cintillo_comentarios', 'cintillo_comentarios formulario']}),
        dict(name='div', attrs={'id': ['comentarios_lectores_listado', 'comentar']}),
    ]
    feeds = [
        ('Portada', 'http://estaticos.expansion.com/rss/portada.xml'),
        ('Portada: Bolsas', 'http://estaticos.expansion.com/rss/mercados.xml'),
        ('Divisas', 'http://estaticos.expansion.com/rss/mercadosdivisas.xml'),
        ('Euribor', 'http://estaticos.expansion.com/rss/mercadoseuribor.xml'),
        ('Materias Primas', 'http://estaticos.expansion.com/rss/mercadosmateriasprimas.xml'),
        ('Renta Fija', 'http://estaticos.expansion.com/rss/mercadosrentafija.xml'),
        ('Portada: Mi Dinero', 'http://estaticos.expansion.com/rss/midinero.xml'),
        ('Hipotecas', 'http://estaticos.expansion.com/rss/midinerohipotecas.xml'),
        ('Cr\xe9ditos', 'http://estaticos.expansion.com/rss/midinerocreditos.xml'),
        ('Pensiones', 'http://estaticos.expansion.com/rss/midineropensiones.xml'),
        ('Fondos de Inversi\xf3n', 'http://estaticos.expansion.com/rss/midinerofondos.xml'),
        ('Motor', 'http://estaticos.expansion.com/rss/midineromotor.xml'),
        ('Portada: Empresas', 'http://estaticos.expansion.com/rss/empresas.xml'),
        ('Banca', 'http://estaticos.expansion.com/rss/empresasbanca.xml'),
        ('TMT', 'http://estaticos.expansion.com/rss/empresastmt.xml'),
        ('Energ\xeda', 'http://estaticos.expansion.com/rss/empresasenergia.xml'),
        ('Inmobiliario y Construcci\xf3n', 'http://estaticos.expansion.com/rss/empresasinmobiliario.xml'),
        ('Transporte y Turismo', 'http://estaticos.expansion.com/rss/empresastransporte.xml'),
        ('Automoci\xf3n e Industria', 'http://estaticos.expansion.com/rss/empresasauto-industria.xml'),
        ('Distribuci\xf3n', 'http://estaticos.expansion.com/rss/empresasdistribucion.xml'),
        ('Deporte y Negocio', ' [url]http://estaticos.expansion.com/rss/empresasdeporte.xml[/url]'),
        ('Mi Negocio', 'http://estaticos.expansion.com/rss/empresasminegocio.xml'),
        ('Interiores', 'http://estaticos.expansion.com/rss/empresasinteriores.xml'),
        ('Digitech', 'http://estaticos.expansion.com/rss/empresasdigitech.xml'),
        ('Portada: Econom\xeda y Pol\xedtica', 'http://estaticos.expansion.com/rss/economiapolitica.xml'),
        ('Pol\xedtica', 'http://estaticos.expansion.com/rss/economia.xml'),
        ('Portada: Sociedad', 'http://estaticos.expansion.com/rss/entorno.xml'),
        ('Portada: Opini\xf3n', 'http://estaticos.expansion.com/rss/opinion.xml'),
        ('Llaves y editoriales', 'http://estaticos.expansion.com/rss/opinioneditorialyllaves.xml'),
        ('Tribunas', 'http://estaticos.expansion.com/rss/opiniontribunas.xml'),
        ('Portada: Jur\xeddico', 'http://estaticos.expansion.com/rss/juridico.xml'),
        ('Entrevistas', 'http://estaticos.expansion.com/rss/juridicoentrevistas.xml'),
        ('Opini\xf3n', 'http://estaticos.expansion.com/rss/juridicoopinion.xml'),
        ('Sentencias', 'http://estaticos.expansion.com/rss/juridicosentencias.xml'),
        ('Mujer', 'http://estaticos.expansion.com/rss/mujer-empresa.xml'),
        ('Catalu\xf1a', 'http://estaticos.expansion.com/rss/catalunya.xml'),
        ('Funci\xf3n p\xfablica', 'http://estaticos.expansion.com/rss/funcion-publica.xml'),
    ]

    # Obtener la imagen de portada

    def get_cover_url(self):
        cover = None
        st = time.localtime()
        year = str(st.tm_year)
        month = '%.2d' % st.tm_mon
        day = '%.2d' % st.tm_mday
        cover = 'http://img5.kiosko.net/' + '/'.join([year, month, day]) + '/es/expansion.750.jpg'
        br = BasicNewsRecipe.get_browser(self)
        try:
            br.open(cover)
        except Exception:
            self.log('\nPortada no disponible')
            cover = 'http://www.aproahp.org/enlaces/images/diario_expansion.gif'
        return cover

    # Para que no salte la publicidad al recuperar la noticia, y que siempre se recupere
    # la página web, mando la variable "t" con la hora "linux" o "epoch" actual
    # haciendole creer al sitio web que justo se acaba de ver la publicidad

    def print_version(self, url):
        st = time.time()
        segundos = str(int(st))
        parametros = '.html?t=' + segundos
        return url.replace('.html', parametros)

    _processed_links = []

    def get_article_url(self, article):

        # Para obtener la url original del artículo a partir de la de
        # "feedsportal"

        link = article.get('link', None)
        if link is None:
            return article
        if link.split('/')[-1] == 'story01.htm':
            link = link.split('/')[-2]
            t = (
                ('0B', '.'),
                ('0C', '/'),
                ('0D', '?'),
                ('0E', '-'),
                ('0F', '='),
                ('0G', '&'),
                ('0N', '.com'),
                ('0L0S', 'www.'),
                ('0A', '0'),
            )
            for a, b in t:
                link = link.replace(a, b)
            link = 'http://' + link

        # Eliminar artículos duplicados en otros feeds

        if link not in self._processed_links:
            self._processed_links.append(link)
        else:
            link = None

        return link

    # Un poco de css para mejorar la presentación de las noticias

    extra_css = '''
                    .entradilla {font-family:Arial,Helvetica,sans-serif; font-weight:bold; font-style:italic; font-size:16px;}
                    .fecha_publicacion,.autor {font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:14px;}
                '''

    # Para presentar la imagen de los videos incrustados

    preprocess_regexps = [
        (re.compile(r'var imagen', re.DOTALL | re.IGNORECASE), lambda match: '--></script><img src'),
        (re.compile(r'.jpg";', re.DOTALL | re.IGNORECASE), lambda match: '.jpg">'),
        (re.compile(r'var id_reproductor', re.DOTALL | re.IGNORECASE), lambda match: '<script language="Javascript" type="text/javascript"><!--'),
    ]
