Enviar por Telegram textos en HTML o Markdown

Se pueden enviar textos con formato HTML o Markdown, pero con muchas limitaciones.

La API de telegram nos indica que los Bots admiten el formato básico de los mensajes. Puede utilizar texto en negrita, cursiva, subrayado y tachado, así como enlaces en línea y código preformateado en los mensajes de sus bots. Los clientes de Telegram los renderizarán en consecuencia. Puede utilizar formato de estilo Markdown o HTML.

Las etiquetas soportadas actualmente son:

<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>
<b>bold <i>italic bold <s>italic bold strikethrough</s> <u>underline italic bold</u></i> bold</b>
<a href="http://www.example.com/">inline URL</a>
<a href="tg://user?id=123456789">inline mention of a user</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre>

Este código Python envía un mensaje a un bot de telegram con etiquetas HTML soportadas actualmente por la Api.

import requests
import json
import datetime
import funciones_telegram as ft

url = "https://api.openweathermap.org/data/2.5/weather"

querystring = {"lat":"41.383745","lon":"2.046644","appid":"90eda4c96ac3f30dfa32f0b8bedf2956f9","units":"metric","lang":"38"}

headers = {
    'Cache-Control': 'no-cache'
    }

response = requests.request("GET", url, headers=headers, params=querystring)

data = json.loads(response.content)

hora_UTC = datetime.datetime.fromtimestamp(data['dt'])
amanecer = datetime.datetime.fromtimestamp(data['sys']["sunrise"])
atardecer = datetime.datetime.fromtimestamp(data['sys']["sunset"])

Latitud = str(data['coord']['lat'])
Longitud = str(data['coord']['lon'])
Nubes = data['weather'][0]['main']
Descripcion = data['weather'][0]['description']
Temperatura = str(data['main']['temp'])
Sensacion_termica = str(data['main']['feels_like'])
Temperatura_minima = str(data['main']['temp_min'])
Temperatura_maxima = str(data['main']['temp_max'])
Presion_atmosferica = str(data['main']['pressure'])
Humedad = str(data['main']['humidity'])
Visibilidad = str(data['visibility'])
Velocidad_viento = str(data['wind']['speed'])
Direccion_viento = str(data['wind']['deg'])
Abundancia_nubes = str(data['clouds']['all']) + ' %'
Hora_datos = hora_UTC.strftime('%d-%m-%Y %H:%M:%S')
Codigo_pais = data['sys']['country']
Hora_amanecer = amanecer.strftime('%H:%M:%S')
Hora_atardecer = atardecer.strftime('%H:%M:%S')
Poblacion = data['name']
Codigo_poblacion = str(data['id'])

m = '<b>Condiciones climatologicas</b>' + '\n'
m += '<b>Latitud: </b>' + Latitud + '\n'
m += '<b>Longitud: </b>' + Longitud + '\n'
m += '<b>Nubes: </b>' + Nubes + '\n'
m += '<b>Descripción: </b>' + Descripcion + '\n'
m += '<b>Temperatura: </b>' + Temperatura + '\n'
m += '<b>Sensación termica: </b>' + Sensacion_termica + '\n'
m += '<b>Temperatura minima: </b>' + Temperatura_minima + '\n'
m += '<b>Temperatura máxima: </b>' + Temperatura_maxima + '\n'
m += '<b>Presión atmosferica: </b>' + Presion_atmosferica + '\n'
m += '<b>Humedad: </b>' + Humedad + '\n'
m += '<b>Visibilidad: </b>' + Visibilidad + '\n'
m += '<b>Velocidad del viento: </b>' + Velocidad_viento + '\n'
m += '<b>Dirección del viento: </b>' + Direccion_viento + '\n'
m += '<b>Abundancia de nubes: </b>' + Abundancia_nubes + '\n'
m += '<b>Hora cálculo datos: </b>' + Hora_datos + '\n'
m += '<b>Código país: </b>' + Codigo_pais + '\n'
m += '<b>Hora amanecer: </b>' + Hora_amanecer + '\n'
m += '<b>Hora atardecer: </b>' + Hora_atardecer + '\n'
m += '<b>Población: </b>' + Poblacion + '\n'
m += '<b>Código población: </b>' + Codigo_poblacion + '\n'


ft.aviso_mensaje_html(m)

Este código llama a la Api de Open Weather Map y devuelve información meteorologica de las coordenadas enviadas.

Y la función que realiza en envío al bot de telegram:

def aviso_mensaje_html(Mensaje):
    r =requests.post('https://api.telegram.org/bot9987543:CCH0rnTYm3dEp3ryCWTMVXXkxcGemycBgxg/sendMessage',
              data={'chat_id': chat_id, 'text': Mensaje, 'parse_mode' : 'HTML'})
    print(r.text)

Para mensajes en HTML, “parse_mode” debe ser “HTML” y “Markdown” para formatos de texto en Markdown.

En la Api de telegram podrás encontrar más información de los formatos y etiquetas soportados actualmente, enlace.



Si encuentras esta noticia interesante la puedes compartir en tus redes sociales, a tus seguidores les puede gustar. Utiliza los botones que tienes más abajo.

Share

Obtener datos de la API Open Weather Map con Python

Existen multitud de servicios que nos proporcionan datos meteorológicos actuales, futuros y pasados. Open Weather Map dispone de un servicio Api Rest desde el cual podemos solicitar diferente información:

  • Datos meteorológicos actuales
  • Pronóstico diario para 16 días
  • Buscar datos meteorológicos
  • Datos meteorológicos históricos
  • Previsión climática a 30 días
  • Datos de pronóstico de 5 días / 3 horas

Para poder utilizar la Api de Open Weather Map, debemos registrarnos en su pagina web, aqui. Aunque se trata de un servicio de pago, podemos utilizarlo de forma gratuita, con ciertas limitaciones. Podemos acceder a determinados servicios, tenemos una limitación de usos diarios, la información proporcionada no es en tiempo real, tiene una pequeña demora, pero gran parte de la información que nos proporciona nos puede ser de gran valor.

También nos sirve para pacticar con una API REST, JSON y Python.

Una vez registrados, en el apartado API keys, disponemos de nuestra key, para poder utilizar el servicio.

El siguiente código en Python hace la llamada a la Api, y nos imprime por terminal todos los datos obtenidos en la solicitud.

import requests
import json
import datetime

url = "https://api.openweathermap.org/data/2.5/weather"


querystring = {"lat":"41.383745","lon":"2.046644","appid":"199eef4c322fac3f30f08bedf2956f9","units":"metric","lang":"38"}

headers = {
    'Cache-Control': 'no-cache'
    }

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)

data = json.loads(response.content)

hora_UTC = datetime.datetime.fromtimestamp(data['dt'])
amanecer = datetime.datetime.fromtimestamp(data['sys']["sunrise"])
atardecer = datetime.datetime.fromtimestamp(data['sys']["sunset"])


print('')
print('Condiciones climatologicas')
print('Latitud:', data['coord']['lat'])
print('Longitud:', data['coord']['lon'])
print('Temperatura:', data['main']['temp'])
print('Sensación termica:', data['main']['feels_like'])
print('Temperatura minima:', data['main']['temp_min'])
print('Temperatura máxima:', data['main']['temp_max'])
print('Presión atmosferica:', data['main']['pressure'])
print('Humedad:', data['main']['humidity'])
print('Visibilidad:', data['visibility'])
print('Velocidad del viento', data['wind']['speed'])
print('Dirección del viento:', data['wind']['deg'])
print('Abundancia de nubes:', str(data['clouds']['all']) + ' %')
print('Hora cálculo datos:', hora_UTC.strftime('%d-%m-%Y %H:%M:%S'))
print('Código país:', data['sys']['country'])
print('Hora amanecer:', amanecer.strftime('%H:%M:%S'))
print('Hora atardecer:', atardecer.strftime('%H:%M:%S'))
print('Población:', data['name'])
print('Código población:', data['id'])

Obtenemos los siguientes datos:

La key utilizada en el script no es real, la debes sustituir por la tuya.

Con unas simples lineas obtenemos una serie de datos interesantes. La hora atardecer nos puede servir para controlar un dispositivo remotamente que encienda las luces de nuestro hogar, utilizando una Raspberry Pi o Arduino.

También podriamos lanzar el script a determinadas horas del día y que los datos obtenidos nos sean enviados al correo electronico o a un bot de telegram, entre otras muchas opciones.

Las posibilidades son inmesas, todo depende de nuestra imaginación.



Si encuentras esta noticia interesante la puedes compartir en tus redes sociales, a tus seguidores les puede gustar. Utiliza los botones que tienes más abajo.

Share