Как получить оповещения о изменении цены криптовалюты по SMS с помощью Python
Table Of Content
- ⚒️ Необходимые инструменты:
- 🤔 Проблема
- 🐍 Давайте напишем код!
- Шаг 1: Парсинг цены Coreto с [Coin Market Cap](https://coinmarketcap.com/currencies/coreto/)
- Шаг 2: Сохранение результатов в таблицу
- Шаг 3: Отправка текстового сообщения с помощью Twilio
- Выполнять код, если разница больше чем 0.001 доллара США
- ☁️ Код, который работает 24/7
- ✨ Вот и все! Наслаждайтесь покупкой Coreto или вашей любимой криптовалюты! 🤑🌈
Привет всем! В этом посте вы узнаете, как получать оповещения по SMS каждый раз, когда ваша любимая криптовалюта меняет цену, создав простой скрипт на Python.
⚒️ Необходимые инструменты:
- Python
- Учетная запись Twilio (для получения номера для отправки SMS)
- Облачная виртуальная машина AWS ec2 (или другая облачная машина)
🤔 Проблема
Моим последним увлечением стала криптовалюта Coreto, относительно новая криптовалюта, которая стремится изменить рынок, став "Facebook" в мире криптовалют. Проблема заключается в том, что, будучи новой монетой, она все еще не доступна на централизованных биржевых платформах, таких как Coinbase или Binance, и большинство децентрализованных платформ обмена, таких как Uniswap, не предлагают лимитные ордера.
Невозможность размещать ордера на покупку и продажу по предварительно заданным ценам может привести к потере большого количества денег, не смогув завершить покупку на падении или продажу на росте. С помощью скрипта на Python, который вы сможете создать после прочтения этого поста, вы будете получать оповещения о изменении цены в виде SMS-сообщений, даже во время сна.
🐍 Давайте напишем код!
Шаг 1: Парсинг цены Coreto с Coin Market Cap
Для этого мы будем использовать Beautiful Soup, библиотеку Python для извлечения данных из веб-страниц.
import bs4 as bslink = "https://coinmarketcap.com/currencies/coreto/"request = urllib.request.Request(link) webpage = urllib.request.urlopen(request)
source = webpage.read()
webpage.close() soup = bs.BeautifulSoup(source, 'html.parser')
После того, как у нас есть весь веб-сайт в переменной soup, нам нужно найти цену.
price = soup.find(class_="price").text
Имейте в виду, что если вы планируете часто парсить цену, вам следует добавить случайную паузу, чтобы избежать обнаружения как бота и блокировки вашего IP-адреса Coin Market Cap.
Шаг 2: Сохранение результатов в таблицу
Для решения данной задачи есть два подхода. Первый - мы можем отправлять текстовые уведомления каждый раз, когда криптовалюта достигает заранее определенного значения, или второй - мы можем отправлять текстовое сообщение каждый раз, когда криптовалюта понижается/повышается на определенное значение. В этом посте мы выберем второй вариант, но вы можете выбрать первый, если это имеет больше смысла для вас и вашей стратегии.
Для этого нам понадобится сохранить историю последнего отправленного текстового сообщения в таблице.
import pandas as pd
from datetime import datetimecurrent_time = datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
df = pd.DataFrame([(current_time, price)],
columns = ["time", "price"])
df.to_csv("coreto_price_history.csv", index=False)
Вы должны считывать эту таблицу каждый раз, когда вы парсите цену, и обновлять ее только в том случае, если разница между текущей ценой и последней ценой в таблице больше заданного порога. Если это так, мы можем перейти к следующему шагу нашего скрипта.
Шаг 3: Отправка текстового сообщения с помощью Twilio
Когда у нас есть информация о изменении цены
price_difference = price - df.price.values[-1]
abs_price_difference = abs(price_difference)
sgn = "🔺" if price_difference <0 else "🔻"
Мы создаем флаговую переменную, чтобы не использовать API Twilio, если мы действительно не хотим отправлять обновление по SMS, чтобы избежать дополнительных расходов.
# Выполнять код, если разница больше чем 0.001 доллара США
flag = round(diff,3)>=0.001
Перейдите в консоль Twilio и получите свой ACCOUNT SID
и AUTH TOKEN
. Затем получите номер телефона Twilio, который может отправлять текстовые сообщения. Twilio предлагает $15 долларов пробного периода, однако, если у вас есть пробная учетная запись, вы сможете отправлять текстовые сообщения только на проверенные номера Twilio (что должно быть достаточно, если вы отправляете уведомление о цене только себе).
account_sid = "XXXXXXXXXXXXXXXX"
auth_token = "XXXXXXXXXXXXXXXXX"
twilio_phone = "+1........"
target_number = "+1......." # Номер телефона, который получает уведомления
Теперь мы аутентифицируемся и отправляем текстовое сообщение
client = Client(account_sid, auth_token)def send_msg(text, number, sender):
message = client.messages.create(body=text,
from_=sender,
to=number)msg = f"Цена Coreto составляет {price}. Скрапировано @ {current_time}"send_msg(msg, target_number, twilio_phone)
Et voilà!
Ну... на самом деле нет. Мы закончили сценарий, но теперь мы хотим запустить его даже если наш компьютер выключен, пока мы спим.
☁️ Код, который работает 24/7
Вы можете запланировать выполнение своего скрипта так часто, как вам нужно, с помощью cronjob, однако я рекомендую делать это на облачной машине, чтобы ваш компьютер не должен быть включенным и подключенным к интернету все время. Я использовал самый маленький (и самый дешевый) экземпляр AWS ec2, так как наш код довольно простой.
Чтобы добавить cronjob на экземпляр ec2, просто введите crontab -e
. Затем вы окажетесь в среде vi. Команды, которые вам понадобятся для выполнения вашей задачи, это i
для вставки вашего cronjob, затем нажмите клавишу esc
, затем :wq
и нажмите Enter, чтобы сохранить изменения.
Мой cronjob выглядит так:
*/2 * * * * python coreto.py >> log.txt
Звездочки означают, что скрипт будет запускаться каждые две минуты, и я решил сохранить все выводы журнала в файл log.txt
.
✨ Вот и все! Наслаждайтесь покупкой Coreto или вашей любимой криптовалюты! 🤑🌈
Полный код доступен на моем GitHub.
Подписывайтесь на меня в Twitter или Instagram или YouTube :)
Если вам понравилась эта статья, отправьте мне немного Coreto 😜