Твитер бот

DECONSTRUCTIONIST

Where are those...Who took away from me?
Забанен
Теневой КомитетMarch 30, 2020
d6fd645f5e6e807f50430.png

Пример твита от такого бота



Сегодня мы будем создавать свой собственный Twitter бот, публикующий обновления рынка в режиме реального времени для ваших любимых криптовалют. Это возможно с помощью Python, Tweepy и LunarCRUSH. Ниже мы опишем пошаговый процесс с использованием Python. Бот тянет информацию о валютах из LunarCRUSH.

Метрики для Bitcoin, Ethereum, Litecoin сохраняются в виде отформатированных переменных и автоматически выводятся в Твиттере каждые 30 минут.



Настройка учетной записи Twitter и Tweepy

Давайте начнем с установки Tweepy. Это достаточно просто совершается через командную строку, используя команду:

pip install tweepy



Далее вам нужно создать аккаунт разработчика в Твиттере.

Twitter для разработчиков предоставляет доступ к API Twitter для публикации и анализа твитов.

Прежде чем начать использовать API Twitter, создайте учетную запись разработчика и сгенерируйте ключи API. Вы можете подать заявку на аккаунт разработчика прямо здесь. Вы должны ответить на вопросы о том, как вы планируете использовать API и принять Соглашение разработчика Twitter, и тогда вам будет предоставлен доступ к панели инструментов разработчика.

Получив одобрение доступа к Developers for Twitter, войдите на сайт разработчика и создайте свое приложение. Этот шаг автоматически сгенерирует ваши ключи API и токены доступа, помните, вы должны держать их в секрете:

b582d2f7655b80288508b.png



Аккаунт разработчика должен быть связан с аккаунтом Twitter, где вы хотите активировать бота. На платформе Twitter Development вы можете редактировать разрешения приложения. В моем примере я предоставил своему приложению разрешение на чтение, запись и отправку прямых сообщений.



Введение в LunarCRUSH

Чтобы начать знакомство с криптовалютой в социальных сетях, вы должны зайти на LunarCRUSH.com и создать учетную запись.

1d31b54eca96d22215d2e.png



В левом столбце перейдите к Developers и выберите API Docs

ac76c23c27b1ac1b08013.png

Сгенерируйте V2 API Key

097607a3f534fa9d704be.png

Как только вы окажетесь в API Docs, создайте ключ API V2.



Создание бота в Twitter с помощью Python, Tweepy, LunarCRUSH

Давайте начнем строить нашего бота в Twitter. Как упоминалось ранее, вы будете использовать библиотеку Tweepy, которая без проблем работает с Twitter API и LunarCRUSH API / LunarSTREAM .

Сначала импортируем твипы. Tweepy упрощает аутентификацию API через секретные ключи нашего приложения Twitter.

Ниже приведен фрагмент кода, повторите его, создав экземпляр OAuthHandler для входа в систему.

Чтобы иметь возможность отправлять запросы в API, отправьте обратно токен доступа. Используйте метод auth.set_access_token для хранения токена запроса доступа для нашего сеанса.

Теперь вы готовы контролировать вашу учетную запись Twitter с помощью Python. Обратите внимание, что я написал «XXX» вместо своих настоящих API-ключей. Замените «XXX» Api-ключами, которые вы можете получить на своей панели инструментов Twitter для разработчиков.

import tweepy
import urllib.request
import ssl
import json
import time
ssl._create_default_https_context = ssl._create_unverified_context
# Oauth keys
consumer_key ="XXX"
consumer_secret ="XXX"
access_token ="XXX"
access_token_secret ="XXX"
# Authentication with Twitter
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)



Наша переменная api - это место, где вы храните настройки аутентификации. Вы будете использовать его для отправки запросов в Twitter API.

Идея этого бота в Твиттере состоит в том, чтобы публиковать разные твиты, каждые x минут, с определенными показателями монет / токенов криптовалюты.

Давайте добавим наши ключи API LunarCRUSH к коду. Просто добавьте:

api_key = "XXX"



Теперь вы прошли аутентификацию с помощью LunarCRUSH API. Настало время решить, какие криптовалюты вы хотели бы интегрировать в свои твиты. Используйте coin_list для хранения различных символов шифрования. Например, «LTC» - это Litecoin, «ETH» - это Ethereum, а «BTC» - это биткоин.

coin_list = [
"LTC",
"ETH",
"BTC"
]
coins = ','.join(coin_list)



Список полей, требуемых от API: KEY - это ключ LunarCRUSH, а 2ое значение - это имя поля, выводимое в Twitter.

{"LUNAR_CRUSH_KEY": "RENDERED_NAME"}



Например, чтобы добавить "ответы на твит", добавьте в код это:

{"tweet_replies": "Tweet Replies: "},



Теперь вы можете отобразить, какие значения вы хотите получить из LunarCRUSH API. Например, цена токена, его капитализация и тд:

map = [
{"name":""},
{"symbol": ""},
{"price": " Price: "},
{"percent_change_24h": " - 24 Hour Percent Change: "},
{"market_cap": " Market Cap: "},
{"volume_24h": " 24 Hour Volume: "},
{"url_shares": " URL Shares: "},
{"reddit_posts": " Reddit Posts: "},
{"tweets": " Tweets: "},
{"galaxy_score": " Galaxy Score: "},
{"volatility": " Volatility: "},
{"social_volume": " Social Volume: "},
{"news": " News: "},
{"close": " Close: "},
]
def final_render(asset_tweet, value, key, asset):
if key == 'symbol':
asset_tweet += " (" + asset[key] + ")"
elif key == 'percent_change_24h':
asset_tweet += value + str(asset[key]) + "%"
else:
asset_tweet += value + str(asset[key])
return asset_tweet



Теперь переберите каждое из полей из LunarCRUSH, которые получают значение из LunarCRUSH и отображает его с именем поля.

def main():
url = "https://api.lunarcrush.com/v2?data=assets&key=" + api_key + "&symbol=" + coins
assets = json.loads(urllib.request.urlopen(url).read())
for asset in assets['data']:
asset_tweet = ""
for field in map:
key = list(field.keys())[0]
value = list(field.values())[0]
asset_tweet = final_render(asset_tweet, value, key, asset)
print(asset_tweet)
print(len(asset_tweet))
# Posts tweets
api.update_status(status=asset_tweet)
# Runs main() every 30 minutes
while True:
main()
time.sleep(1800)
 
Полный код на Python

Ссылка на гитхаб - https://github.com/nirholas/LunarCRUSH-Cryptocurrency-Market-Bot/tree/master

import urllib.request
import ssl
import json
import time
import tweepy
ssl._create_default_https_context = ssl._create_unverified_context
# Oauth keys
consumer_key ="XXX"
consumer_secret ="XXX"
access_token ="XXX"
access_token_secret ="XXX"
# Authentication with Twitter
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
#LunarCRUSH API Key
api_key = "XXX"
# Allows adding as many coins as desired
coin_list = [
"LTC",
"ETH",
"BTC"
]
coins = ','.join(coin_list)
# A list of the fields desired from the API - key is the Lunar Crush key, and the value is the field name outputted to Twitter
# {"LUNAR_CRUSH_KEY": "RENDERED_NAME"}
# For example, to add tweet_replies, you would add:
# {"tweet_replies": "Tweet Replies: "},
# to the list below.
map = [
{"name":""},
{"symbol": ""},
{"price": " Price: "},
{"percent_change_24h": " - 24 Hour Percent Change: "},
{"market_cap": " Market Cap: "},
{"volume_24h": " 24 Hour Volume: "},
{"url_shares": " URL Shares: "},
{"reddit_posts": " Reddit Posts: "},
{"tweets": " Tweets: "},
{"galaxy_score": " Galaxy Score: "},
{"volatility": " Volatility: "},
{"social_volume": " Social Volume: "},
{"news": " News: "},
{"close": " Close: "},
]
def final_render(asset_tweet, value, key, asset):
# As the program becomes more complex, this should be written in a more robust manner
if key == 'symbol':
asset_tweet += " (" + asset[key] + ")"
elif key == 'percent_change_24h':
asset_tweet += value + str(asset[key]) + "%"
else:
asset_tweet += value + str(asset[key])
return asset_tweet
# Iterates over each of the fields from Lunar Crush, gets the value from Lunar Crush and renders it with the field name
def main():
url = "https://api.lunarcrush.com/v2?data=assets&key=" + api_key + "&symbol=" + coins
assets = json.loads(urllib.request.urlopen(url).read())
for asset in assets['data']:
asset_tweet = ""
for field in map:
key = list(field.keys())[0]
value = list(field.values())[0]
asset_tweet = final_render(asset_tweet, value, key, asset)
print(asset_tweet)
print(len(asset_tweet))
# Posts tweets
api.update_status(status=asset_tweet)
# Runs main() every 30 minutes
while True:
main()
time.sleep(1800)



Также у вас есть возможность настроить и добавить все доступные метрики из LunarCRUSH:

market_cap (Market Cap)
galaxy_score (Galaxy Score)
price_score (Price Score)
average_sentiment (Average Sentiment)
social_impact_score (Social Impact Score)
market_cap (Market Cap)
galaxy_score (Galaxy Score)
price_score (Price Score)
average_sentiment (Average Sentiment)
social_impact_score (Social Impact Score)
correlation_rank (Correlation Rank)
volatility (Volatility)
social_score (Social Volume)
social_volume (Social Volume)
twitter_volume (Twitter Volume)
reddit_volume (Reddit Volume)
news_volume (News Volume)
search_volume (Search Volume)
spam_volume (Spam Volume)
bullish_sentiment (Bullish Sentiment)
bearish_sentiment (Bearish Sentiment)

Metrics Widgets
average_sentiment (Average Sentiment)
correlation_rank (Correlation Rank)
galaxy_score (Galaxy Score)
market_cap (Market Cap)
market_cap_rank (Market Cap Rank)
news_articles (News Volume)
popular_tweet (Popular Tweets)
price_btc (Price BTC)
price_score (Price Score)
priceclose (Price Close)
pricehigh (Price High)
pricelow (Price Low)
priceopen (Price Open)
reddit_comment (Reddit Comments)
reddit_post (Reddit Posts)
reddit_post_reddit_comment (Reddit Volume)
search_average (Search Volume)
social_impact_score (Social Impact Score)
social_score (Social Volume)
tweet (Twitter Volume)
tweet_sentiment1 (Very Bearish Sentiment)
tweet_sentiment2 (Bearish Sentiment)
tweet_sentiment2_tweet_sentiment (Negative Sentiment)
tweet_sentiment3 (Neutral Sentiment)
tweet_sentiment4 (Bullish Sentiment)
tweet_sentiment5 (Very Bullish Sentiment)
tweet_sentiment4_sentiment5 (Positive Sentiment)
tweet_sentiment_impact1 (Very Bearish Sentiment Impact)
tweet_sentiment_impact2 (Bearish Sentiment Impact)
tweet_sentiment_impact3 (Neutral Sentiment Impact)
tweet_sentiment_impact4 (Bullish Sentiment Impact)
tweet_sentiment_impact5 (Very Bullish Sentiment Impact)
tweet_spam (Spam Volume)
volatility (Volatility)
volumefrom (Market Volume Open)
volumeto (Market Volume Close)



Также такой твиттер имеет несколько фишек в функционале:

Посмотреть информацию о конкретном пользователе Twitter - методы пользователя

Отправка прямых сообщений - Методы прямых сообщений

Подписаться и отписаться от пользователей - Методы дружбы

Блокировать и разблокировать пользователей - Методы блокировки



В несколько строк кода ваш легко настраиваемый бот Twitter теперь получает данные из LunarCRUSH и автоматически привлекает платежеспособную аудиторию надежными инсайдами.
 
Назад
Сверху