Categorías
Python

Desarrollo Python en código de Visual Studio (Guía de instalación)

 

Tabla de Contenidos

  • Bitcoin Precio Notificaciones con la configuración del proyecto Python
  • Recuperando el Bitcoin Precio
  • El envío de una notificación de prueba IFTTT
  • Creación IFTTT applets
  • Poniendo todo junto
  • Resumen y próximos pasos

Bienvenidos al primer artículo de una serie de artículos sobre los proyectos de Python para principiantes!

En este tutorial vamos a construir una notificación precio Bitcoin servicio-

Durante este proyecto usted aprenderá acerca de las peticiones HTTP y cómo enviar usando el paquete (nombre apropiado) solicita.

Vas a aprender sobre WebHooks y cómo se puede utilizar para conectar su aplicación Python para servicios externos, como las notificaciones telefónicas o mensajes de telegrama.

con relativamente poco de código (~ 50 líneas) que van a llegar a un servicio de notificación de pleno derecho precio Bitcoin que será fácilmente ampliable a otros cryptocurrencies y servicios.

Así que vamos a saltar a la derecha:

Bitcoin Precio Notificaciones Con Python

Como todos sabemos, el precio de Bitcoin es una cosa caprichosa. Nunca se sabe donde va a ser al final del día. Así, en lugar de comprobar constantemente diversos sitios de las últimas actualizaciones, vamos a hacer una aplicación Python para hacer el trabajo para usted.

Para ello, vamos a utilizar el popular sitio web IFTTT automatización. IFTTT ( “si esto, entonces eso”) es un servicio web que sirve de puente entre diferentes aplicaciones y dispositivos.

Vamos a crear dos subprogramas: ifttt

  • uno para notificación de emergencia cuando el precio de Bitcoin cae por debajo de cierto umbral; y
  • otro para actualizaciones regulares del telegrama en el precio de Bitcoin.

Ambos serán provocada por nuestra aplicación Python que consumirá los datos de la API Coinmarketcap.

Un IFTTT applet se compone de dos partes: un gatillo y una acción.

En nuestro caso, el gatillo será un servicio web hook proporcionada por IFTTT. Se puede pensar en WebHooks como “devoluciones de llamada HTTP definidos por el usuario” y puede leer más aboutthem aquí.

Nuestra Python aplicación va a hacer una petición HTTP a la URL web hook que desencadenará una acción. Ahora bien, esta es la parte divertida de la acción podría ser casi cualquier cosa que desee. IFTTT ofrece una multitud de acciones como el envío de un correo electrónico, la actualización de una hoja de cálculo de Google e incluso llamando a su teléfono. Configuración de inicio

Proyecto

Let mediante la creación de un environment.Run virtual de este comando para obtener un nuevo Python 3 entorno virtual:

$ mkvirtualenv -p $(which python3) bitcoin_notifications

Antes de continuar hay que activar el entorno virtual e instalar las dependencias necesarias:

$ workon bitcoin_notifications # To activate the virtual environment
$ pip install requests==2.18.4 # We only need the requests package

Puede desactivar el entorno virtual mediante la ejecución del comando de desactivación shell.

Recuperando el precio Bitcoin

hora de poner las manos sucias. Podemos empezar por conseguir el último precio de la API Coinmarketcap en la consola de Python:

En primer lugar, tenemos que importar el módulo de peticiones y definir la variable bitcoin_api_url que contiene la API URL Coinmarketcap de Bitcoin.

A continuación, se envía una petición HTTP GET a la URL utilizando la función requests.get () y guardar la respuesta. Dado que la API devuelve una respuesta JSON, podemos convertirlo en un objeto de Python llamando a la función .json () sobre la respuesta. Como se puede ver, la API devuelve una lista con un elemento que contiene los datos de precios Bitcoin:

>>> import requests
>>> bitcoin_api_url = 'https://api.coinmarketcap.com/v1icker/bitcoin/'
>>> response = requests.get(bitcoin_api_url)
>>> response_json = response.json()
>>> type(response_json) # The API returns a list

>>> # Bitcoin data is the first element of the list
>>> response_json[0]
{'id': 'bitcoin', 'name': 'Bitcoin', 'symbol': 'BTC', 'rank': '1',
'price_usd': '10226.7', 'price_btc': '1.0', '24h_volume_usd': '7585280000.0',
'market_cap_usd': '172661078165', 'available_supply': '16883362.0',
'total_supply': '16883362.0', 'max_supply': '21000000.0',
'percent_change_1h': '0.67', 'percent_change_24h': '0.78',
'percent_change_7d': '-4.79', 'last_updated': '1519465767'}

La propiedad que estamos en el más interesado es ‘price_usd’-precio Bitcoin en dólares estadounidenses.

El envío de una notificación de prueba IFTTT

Ahora podemos pasar al lado IFTTT de las cosas. Para utilizar IFTTT primero tendrá que configurar una nueva cuenta e instalar su aplicación móvil (si desea recibir notificaciones telefónicas de su aplicación Python). Una vez que poner esto en marcha, vamos a crear un nuevo applet IFTTT para propósitos de prueba.

Para crear una nueva prueba del applet siga estos pasos:

Para ver la documentación sobre cómo utilizar el IFTTT WebHooks ir a esta página y hacer clic en el botón “Documentación” en la esquina superior derecha. La página de documentación contiene la dirección URL web hook y se ve así:

https://maker.ifttt.comrigger/{event}/with/key/{your-IFTTT-key}

El siguiente, tendrá que sustituir el evento {} parte con el nombre que le dio a nuestro evento en el paso 3, cuando se creó el applet. El {su-IFTTT-key} parte ya contiene su clave IFTTT.

Ahora copiar la URL web hook y empezar otra consola Python. Una vez más importamos módulo de las solicitudes y definimos la variable URL web hook. Ahora sólo tenemos que enviar una solicitud HTTP POST a la URL IFTTT web hook utilizando la función requests.post ():

>>> import requests
>>> # Make sure that your key is in the URL
>>> ifttt_webhook_url = 'https://maker.ifttt.comriggerest_event/with/key/{your-IFTTT-key}'
>>> requests.post(ifttt_webhook_url)

Después de ejecutar la última línea debería ver una notificación en su teléfono:

Creación de applets IFTTT

Ahora finalmente estamos listos para la parte principal. Antes de comenzar con el código que necesitamos para crear dos nuevos applets ifttt: uno para las notificaciones Bitcoinprice de emergencia y uno para recibir actualizaciones periódicas.

emergencia bitcoin applet de notificación de precio:

actualizaciones periódicas de los precios del applet:

Nota: Al crear este applet se tendrá que autorizar el bot IFTTT telegrama.

Poniendo todo junto

Ahora que tenemos IFTTT fuera del camino, vamos a empezar a programar! Vamos a empezar por la creación de la línea de comandos de Python-esqueleto de aplicación estándar que se muestra a continuación. Tome este código y guardarlo en un archivo llamado bitcoin_notifications.py:

import requests
import time
from datetime import datetime

def main():
pass

if __name__ == '__main__':
main()

A continuación, tenemos que traducir las dos sesiones de consola Python anteriores en dos funciones que devolverán el último precio de Bitcoin y post a la IFTTT web hook respectivamente. Añadir las siguientes funciones por encima de la función principal:

BITCOIN_API_URL = 'https://api.coinmarketcap.com/v1icker/bitcoin/'
IFTTT_WEBHOOKS_URL = 'https://maker.ifttt.comrigger/{}/with/key/{your-IFTTT-key}'

def get_latest_bitcoin_price():
response = requests.get(BITCOIN_API_URL)
response_json = response.json()
# Convert the price to a floating point number
return float(response_json[0]['price_usd'])

def post_ifttt_webhook(event, value):
# The payload that will be sent to IFTTT service
data = {'value1': value}
# inserts our desired event
ifttt_event_url = IFTTT_WEBHOOKS_URL.format(event)
# Sends a HTTP POST request to the webhook URL
requests.post(ifttt_event_url, json=data)

El get_latest_bitcoin_price es más o menos el mismo, a excepción de la parte en la que tenemos que convertir el precio de una cadena en un número de coma flotante. El post_ifttt_webhook toma en dos parámetros: evento y valor. El

corresponde parámetro de evento al que sea el nombre del evento que dio a nuestro gatillo al configurar el applet IFTTT. Además, los WebHooks ifttt nos permiten enviar datos adicionales junto con la solicitud como datos con formato JSON.

Es por eso que necesitamos el parámetro de valor: Cuando la creación de applets que dejó una etiqueta {{}} Valor1 en nuestros campos del mensaje. Esta etiqueta se sustituye por el texto ‘valor1’ de la carga útil JSON. La función requests.post () nos permite enviar datos JSON adicionales simplemente añadiendo la palabra clave JSON.

Ahora podemos pasar a la base de nuestra aplicación en la función principal. Estará formado por un bucle Es cierto tiempo desde que queremos que nuestra aplicación se ejecute siempre. En el loopwe va a llamar a la API Coinmarketcap a conseguir el último precio de Bitcoin y registrar la fecha y hora actuales.

basado en el precio actual que decidirá si queremos enviar una notificación de emergencia. Para nuestras actualizaciones regulares del telegrama también vamos a añadir el precio y la fecha actual a una lista bitcoin_history. Una vez que la lista llega a un cierto número de elementos (por ejemplo 5) vamos a dar formato a los elementos, enviar la actualización a Telegram, y restaurar el historial de actualizaciones futuras.

Wheew! Como se puede ver, hay mucho que hacer en esta aplicación. Si usted está teniendo problemas para seguir el código que tenemos hasta el momento y luego tomar un pequeño descanso y volver a leer la sección anterior de nuevo lentamente. Este material no es fácil, así que tome su tiempo y no se preocupe por conseguir todo perfecto la primera vez.

Una cosa importante es evitar el envío de estas solicitudes con demasiada frecuencia, por dos razones:

  • los estados API Coinmarketcap que actualicen los datos sólo una vez cada 5 minutos, por lo que no hay punto de volver a cargar la información más reciente de fijación de precios con mayor frecuencia que que
  • si su aplicación envía demasiadas peticiones a la API Coinmarketcap su IP podría obtener prohibido o suspendido temporalmente.

Eso es por qué tenemos que “ir a dormir” (detener la ejecución del bucle) durante al menos 5 minutos antes de que tengamos nuevos datos. El código siguiente implementa todas las funciones requeridas he dicho anteriormente:

BITCOIN_PRICE_THRESHOLD = 10000 # Set this to whatever you like

def main():
bitcoin_history = []
while True:
price = get_latest_bitcoin_price()
date = datetime.now()
bitcoin_history.append({'date': date, 'price': price})

# Send an emergency notification
if price < BITCOIN_PRICE_THRESHOLD: post_ifttt_webhook('bitcoin_price_emergency', price) # Send a Telegram notification # Once we have 5 items in our bitcoin_history send an update if len(bitcoin_history) == 5: post_ifttt_webhook('bitcoin_price_update', format_bitcoin_history(bitcoin_history)) # Reset the history bitcoin_history = [] # Sleep for 5 minutes # (For testing purposes you can set it to a lower number) time.sleep(5 * 60)

Ya casi hemos terminado! Lo único que falta es la función format_bitcoin_history. Toma el bitcoin_history como un argumentand formatos que utilizan algunas de las etiquetas HTML básicas permitidas por telegrama, al igual que
, , , y así sucesivamente. Copia este functionabove la función principal:

def format_bitcoin_history(bitcoin_history):
rows = []
for bitcoin_price in bitcoin_history:
# Formats the date into a string: '24.02.2018 15:09'
date = bitcoin_price['date'].strftime('%d.%m.%Y %H:%M')
price = bitcoin_price['price']
# (bold) tag creates bolded text
# 24.02.2018 15:09: $10123.4
row = '{}: ${}'.format(date, price)
rows.append(row)

# Use a
(break) tag to create a new line
# Join the rows delimited by
tag: row1
row2
row3
return '
'.join(rows)

Esto es lo que el resultado final debe ser similar en su teléfono:

Para ejecutar la aplicación de notificación de precios, ejecute lo siguiente en su terminal de línea de comandos:

$ python bitcoin_notifications.py

eso es todo ! En poco más de 50 líneas de código Python, que ha creado su propio servicio de notificación de Bitcoin. ¡Felicidades! A continuación he addedthe código entero así que usted puede comparar y ver si te has perdido nada:

Solución

: Pitón Bitcoin Precio notificador Mostrar / Ocultar

import requests
import time
from datetime import datetime

BITCOIN_PRICE_THRESHOLD = 10000
BITCOIN_API_URL = 'https://api.coinmarketcap.com/v1icker/bitcoin/'
IFTTT_WEBHOOKS_URL = 'https://maker.ifttt.comrigger/{}/with/key/{your-IFTTT-key}'

def get_latest_bitcoin_price():
response = requests.get(BITCOIN_API_URL)
response_json = response.json()
return float(response_json[0]['price_usd']) # Convert the price to a floating point number

def post_ifttt_webhook(event, value):
data = {'value1': value} # The payload that will be sent to IFTTT service
ifttt_event_url = IFTTT_WEBHOOKS_URL.format(event) # Inserts our desired event
requests.post(ifttt_event_url, json=data) # Sends a HTTP POST request to the webhook URL

def format_bitcoin_history(bitcoin_history):
rows = []
for bitcoin_price in bitcoin_history:
date = bitcoin_price['date'].strftime('%d.%m.%Y %H:%M') # Formats the date into a string: '24.02.2018 15:09'
price = bitcoin_price['price']
# (bold) tag creates bolded text
row = '{}: ${}'.format(date, price) # 24.02.2018 15:09: $10123.4
rows.append(row)

# Use a
(break) tag to create a new line
return '
'.join(rows) # Join the rows delimited by
tag: row1
row2
row3

def main():
bitcoin_history = []
while True:
price = get_latest_bitcoin_price()
date = datetime.now()
bitcoin_history.append({'date': date, 'price': price})

# Send an emergency notification
if price < BITCOIN_PRICE_THRESHOLD: post_ifttt_webhook('bitcoin_price_emergency', price) # Send a Telegram notification if len(bitcoin_history) == 5: # Once we have 5 items in our bitcoin_history send an update post_ifttt_webhook('bitcoin_price_update', format_bitcoin_history(bitcoin_history)) # Reset the history bitcoin_history = [] time.sleep(5 * 60) # Sleep for 5 minutes (for testing purposes you can set it to a lower number) if __name__ == '__main__': main()

Resumen y próximos pasos

En este artículo, hemos creado nuestro propio Bitcoin servicio de notificación. Ha aprendido a enviar HTTP GET y POST peticiones utilizando el paquete de solicitudes. Ya viste lo fácil que era para conectar su aplicación Python para servicios externos utilizando IFTTT y WebHooks.

Ahora, ¿dónde debe ir ahora? Con Python y IFTTT el cielo es el límite. Pero aquí hay algunas sugerencias que pueden ayudarle a empezar: las hojas de cálculo

  • igual? Utilice una acción IFTTT que agregará los precios Bitcoin a una hoja de cálculo de Google
  • Mejorar la condición de precio
  • Como Etereum / litecoin / dogecoin mejor? Cambiar el get_latest_bitcoin_price a get_latest_cryptocurrency_price que tendrá un criptomoneda como parámetro y devolver su precio
  • Usted quiere que el precio en una moneda diferente? Compruebe la API Coinmarketcap para el parámetro de conversión.

Además, esta será una serie en curso con más proyectos de Python se puede construir a crecer sus habilidades. No se pierda en el siguiente tutorial:

Informarte: no se pierda el seguimiento a este tutorial-Clic aquí para unirse al Boletín pitón real y sabrá cuando la próxima entrega sale.

Buena suerte y feliz Pythoning! Déjame saber lo que se ha construido utilizando Python y IFTTT en los comentarios!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *