PythonでbitFlyerFXをつぶやくbotを作成

Twitter bot を作るにあたり
なぜTwitter botを作ろうと思ったのか?それは格安スマートウォッチを入手したからだ!
ただ、こいつに通知しようと思っても対応しているアプリが少ないので自由にできない。
でも、Twitterの通知はできる。
ということで、Twitter botを作って、Twitter投稿→スマートウォッチで情報を確認。ということをやってみたいと思います。
参考サイト
こちらのサイトを参考にしていきます。
投稿テスト
予想以上簡単に、pythonから投稿することができました。TwitterAPIを取得するところが一番時間かかった程度です。
ちなみにソースコードは2部構成です。
CONSUMER_KEY = "XXXXXXXXX" CONSUMER_SECRET = "XXXXXXXXX" ACCESS_TOKEN = "XXXXXXXXX" ACCESS_TOKEN_SECRET = "XXXXXXXXX"
#coding; utf-8 from requests_oauthlib import OAuth1Session import json import settings #ここでトークンなどの設定ファイルを読み込む。 import random import datetime twitter = OAuth1Session(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET) tweets = ["pythonによる自動投稿①","pythonによる自動投稿①", "pythonによる自動投稿③"] #ここにツイートする内容を入れる randomtweet = tweets[random.randrange(len(tweets))] timestamp = datetime.datetime.today() timestamp = str(timestamp.strftime("%Y/%m/%d %H:%M")) #タイムスタンプを用意 params = {"status": randomtweet + " " + timestamp} req = twitter.post("https://api.twitter.com/1.1/statuses/update.json", params = params)
ちなみに実行するには実行するには下記モジュールが必要です。
sudo pip3 install requests_oauthlib
自動投稿にしてみる
自動投稿のため、まずはcronで実施してみます。
crontab -e
エディタ選択になるので、vimを選んでcronを記載しました。
1分毎に起動に設定して実行したところ…
一応動いた模様です。とりあえず自動投稿まではいけたので、スクレイピングを絡ませていきます。
今回作るもの
bitFlyerの現在価格をつぶやくボットを作ってみたいと思います!わりと実用的です。
ちなみに、bitFlyerではこんな感じでAPIを公開していますので、これを叩けば作れます。
ソースコード
昨日作っていたものを改変しました。2部構成です。
CONSUMER_KEY = "XXXXXXXXX" CONSUMER_SECRET = "XXXXXXXXX" ACCESS_TOKEN = "XXXXXXXXX" ACCESS_TOKEN_SECRET = "XXXXXXXXX"
#coding; utf-8 rom requests_oauthlib import OAuth1Session import json import settings #ここでトークンなどの設定ファイルを読み込む。 import requests from time import sleep import sys twitter = OAuth1Session(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET) # データを取得 payload = { 'product_code': 'FX_BTC_JPY' } url = 'https://api.bitflyer.com/v1/ticker' while (1): r = requests.get(url, params=payload) # print(r.status_code, "-") if (r.status_code != 503) and (r.status_code != 429): break sleep(0.3) resp = r.json() # print(resp) tweets = "{:,}".format(int(resp['best_ask'])) + "\n#ask #bitFlyer_FX" params = {"status": tweets} req = twitter.post("https://api.twitter.com/1.1/statuses/update.json", params = params)
実行結果
こんな感じで配信されます。10分毎に投稿するようになっているので、本垢だとうざそうです。
スマートウォッチに通知を表示するとこんな感じです。表示を絞ったので割と見やすいです。
ディスカッション
コメント一覧
まだ、コメントがありません