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', )
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')
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')
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
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', )
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))