Твитер бот

DECONSTRUCTIONIST

Where are those...Who took away from me?
Забанен
Дней с нами
3.028
Розыгрыши
5
Сообщения
1.908
Репутация
36
Реакции
1.473
Теневой Комитет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)
 
  • Like
Реакции: creative36rus


Полный код на 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 и автоматически привлекает платежеспособную аудиторию надежными инсайдами.