예제 #1
0
def subte(bot, update):
    """Estado de las lineas de subte, premetro y urquiza."""
    try:
        soup = soupify_url('https://www.metrovias.com.ar')
    except ReadTimeout:
        logger.info('Error in metrovias url request')
        update.message.reply_text('⚠️ Metrovias no responde. Intentá más tarde')
        return

    subtes = soup.find('table', {'class': 'table'})
    REGEX = re.compile(r'Línea *([A-Z]){1} +(.*)', re.IGNORECASE)
    estado_lineas = []
    for tr in subtes.tbody.find_all('tr'):
        estado_linea = tr.text.strip().replace('\n', ' ')
        match = REGEX.search(estado_linea)
        if match:
            linea, estado = match.groups()
            estado_lineas.append((linea, estado))

    bot.send_message(
        chat_id=update.message.chat_id,
        text=monospace(
            '\n'.join(
                format_estado_de_linea(info_de_linea) for info_de_linea in estado_lineas
            )
        ),
        parse_mode='markdown',
    )
예제 #2
0
def posiciones(bot, update, **kwargs):
    soup = soupify_url('http://www.promiedos.com.ar/primera',
                       encoding='ISO-8859-1')
    tabla = soup.find('table', {'id': 'posiciones'})
    info = parse_posiciones(tabla, posiciones=kwargs.get('args'))
    pretty = prettify_table_posiciones(info)
    bot.send_message(chat_id=update.message.chat_id,
                     text=pretty,
                     parse_mode='markdown')
예제 #3
0
def cinearg(bot, update):
    """Get top 5 Argentina movies"""
    CINE_URL = 'https://www.cinesargentinos.com.ar/cartelera'
    soup = soupify_url(CINE_URL)
    cartelera = soup.find('div', {'class': 'contenidoRankingContainer'})
    listado = [(rank, li.text, CINE_URL + li.a['href'])
               for rank, li in enumerate(cartelera.div.ol.find_all('li'), 1)]
    top_5 = '\n'.join(f'[{rank}. {title}]({link})'
                      for rank, title, link in listado[:5])
    bot.send_message(chat_id=update.message.chat_id,
                     text=top_5,
                     parse_mode='markdown')
예제 #4
0
def get_rofex():
    try:
        soup = soupify_url('https://www.rofex.com.ar/', verify=False)
    except TimeoutError:
        return None

    table = soup.find('table', class_='table-rofex')
    cotizaciones = table.find_all('tr')[1:]  # Exclude header
    contratos = []

    for cotizacion in cotizaciones:
        contrato, valor, _, variacion, var_porc = cotizacion.find_all('td')
        month, year = DOLAR_REGEX.match(contrato.text).groups()
        contratos.append(Contrato(int(month), year, valor.text))

    return contratos
예제 #5
0
def dolar_hoy(bot, update, chat_data):
    soup = soupify_url("http://www.dolarhoy.com/usd")
    data = soup.find_all('table')

    cotiz = get_cotizaciones(data)
    pretty_result = pretty_print_dolar(cotiz)

    chat_data['context'] = {
        'data': cotiz,
        'command': 'dolarhoy',
        'edit_original_text': True,
    }
    keyboard = banco_keyboard(cotiz)
    bot.send_message(
        update.message.chat_id,
        text=pretty_result,
        reply_markup=keyboard,
        parse_mode='markdown',
    )
예제 #6
0
def partido(bot, update):
    try:
        soup = soupify_url('https://mundoazulgrana.com.ar/sanlorenzo/')
    except requests.exceptions.ReadTimeout:
        update.message.reply_text(
            'En estos momentos no puedo darte esta info.')
        return

    try:
        partido = soup.find_all('div', {'class': 'widget-partido'})[1].find(
            'div', {'class': 'cont'})
        logo, *info = info_de_partido(partido)
    except ValueError:
        update.message.reply_text(
            'No pude leer el próximo partido.\n'
            'Podes chequearlo [acá](https://mundoazulgrana.com.ar/sanlorenzo/)',
            parse_mode='markdown')
        return
    bot.send_photo(chat_id=update.message.chat_id, photo=logo)
    bot.send_message(chat_id=update.message.chat_id, text='\n'.join(info))