暗号通貨.py

ビットコインやブロックチェーンの技術に衝撃を受け、プログラミングの勉強を開始。現在はPythonを勉強中。

Bitcoin Programming

Python + Herokuでビットコインやブロックチェーン関連のニュースやブログの更新をつぶやくTwitter botをつくってみた(前編)

スピード感たっぷりで、情報を追うだけでも大変な暗号通貨関連のニュースサイトやブログの更新をつぶやくTwitter Botの作成にチャレンジしました。もちろん最近勉強中のPythonで実装しています。

本記事ではPython + Herokuで登録しているサイトの最新記事のタイトルとリンクをbotにツイートさせるところまでを書いています。

これまでの悪戦苦闘の日々は前回までの記事を見ていただくと伝わるかなと思います。笑

PythonのTwitterライブラリ「Tweepy」を使ってつぶやいてみる

Pythonでfeedparserを使ってブログから過去記事をランダムにツイートする

Pythonで仮想環境を構築すべき理由

Pythonの開発環境を整える①

Pythonの開発環境を整える②

初心者がHerokuでハマったポイント

まだ完成していませんが、途中経過でハマったところなど言葉として残しておきたいので前編ということで記しておきます。

実装するしたい機能。

・私がリストとして登録しているビットコイン系のニュース、ブログが更新されたら自動的にツイートするbot

更新されたらツイートっていうのは常時動くサーバーが必要だと思うので → あんまりそのへんよくわかっていない

お金かかりそうだし → 基本ケチ

イメージとしては、

・ニュースやブログの最終の更新情報をサーバーに格納。

・格納しているやニュースやブログを定期的にクロール(巡回)する。

・前回と変わっている(情報が更新されている)ならツイート。

これを無料でやりたい。

問題はこれを実際に行動(コード)にうつせるかですね。親父ギャグではないっす。

無料でやるなら、無料のサーバーが必要ということで色々と調べた結果、

Google App Engine

Heroku

Mongo DB

この3つのサービスのどれかに絞りました。

Google App Engineはこの記事PythonでTwitter Botを作るまでの長い長い物語(失敗編)を見てビビりました。

Mongo DBはなんとなく難しそう・・・

消去法でHerokuにしました。

前回書いた通り簡単ではなかったですが。

開発環境

python 2.7.11

仮想環境をpyenvでローカルに構築。

使用したライブラリ。全部pipでインストールしています。

feedparser==5.2.1
Flask==0.10.1
gunicorn==19.5.0
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
oauthlib==1.1.1
requests==2.10.0
requests-oauthlib==0.6.1
six==1.10.0
tweepy==3.5.0
Werkzeug==0.11.9

 

配信するニュース、ブログ一覧

私がよく見ているニュースサイトやブログです。

順次追加していく予定です。とりあえず思いついたサイトは入れさせてもらっています。

ニュース系

BTCN

Crypto Currency Magazine

Coin Portal

mijin ブログ

ブログ系

ビットコイン&ブロックチェーン研究所

ビットコインを語ろう2.0

Bitcoin投資研究所

GENX NOTES

ビットコインまるわかり

ビットコインの情報サイトの運営者ブログ

もなちょのブログ

Udonの仮想通貨・暗号通貨ひろば

暗号通貨革命

Develop with pleasure!

ついでにw

好奇心をくすぐるブログ

 

前置きが長くなりましたが、コードを。もっとスマートに書きたいのですが・・・

tweet.py

#!/bin/env python 
# coding: utf-8

import os 
import tweepy 
import feedparser 
#keyの取得 btc_botアカウント 
CONSUMER_KEY = 'XXXXXXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXX'

#OAuthHandlerクラスのインスタンスを作成 
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXX' 
ACCESS_SECRET =XXXXXXXXXXXXXXXXX' 

auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) 
api = tweepy.API(auth) 

url = []

url.append('http://btcnews.jp/feed')
url.append('http://kasoutuuka.org/feed')
url.append('http://coinandpeace.hatenablog.com/feed')
url.append('http://cryptocurrencymagazine.com/feed')
url.append('https://www.coin-portal.net/feed')
url.append('http://doublehash.me/feed')
url.append('http://cryptoinvest.hatenablog.com/feed')
url.append('https://genxnotes.com/feed')
url.append('http://mijin.io/ja/category/articles-japanese/feed')
url.append('http://www.trend-stream.net/bitcoin/feed')
url.append('http://www.jpbitcoinblog.info/feed')
url.append('http://udon-cryptocurrency.hatenablog.com/feed')
url.append('http://monacho.hatenablog.com/feed')


#URLの要素をiに代入していき、iをparseしてタイトルとリンクを表示
for i in url:
  my_blog = feedparser.parse(i)
  title = my_blog['entries'][0].title
  link = my_blog['entries'][0].link
  api.update_status(title + link)

 Procfile

$ echo bot: gunicorn tweet:app --log-file=-

#普段は「bot」が「web」
bot: gunicorn tweet:app --log-file=-

 requirements.txt

$ pip freeze > requirements.txt

feedparser==5.2.1
Flask==0.10.1
gunicorn==19.5.0
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
oauthlib==1.1.1
requests==2.10.0
requests-oauthlib==0.6.1
six==1.10.0
tweepy==3.5.0
Werkzeug==0.11.9

 

Profileとrequirements.txtはHerokuでPythonを利用するなら必須のファイルです。

注意点としては、Procfileでwebサービスを作る場合に、先頭を「bot」にしていること。前回は「web」

bot: gunicorn tweet:app --log-file=-

 

バージョン管理をGitで行います。Gitをインストール済として。

$ git init

$ git add .

$ git commit -m "first commit"

 

Herokuを作動させます。

ログイン。メールアドレスとパスワード入力。

$ heroku login

アプリ作成。名前を入れたければcreateの後に入力。入れなければherokuで勝手に決めてくれる。

$ heroku create

デプロイ。

$ git push heroku master

Dynosの動作確認。

$ heroku scale bot=1

ログの確認。

$ heroku logs

 

まとめ

Python + Herokuでbotに登録しているサイトの最新記事のタイトルとリンクをツイートすることに成功しました。

実際に動かし始めているというか、ツイートさせているので、完成したらアカウントを公開していきます。

次は更新情報を取得し、自動で定期的にツイートする機能を実装していきたいのですが、方法はまだわかっていません泣。

アドバイス等あれば是非https://twitter.com/aen63595までお願いします!

 

参考記事

Heroku使ってPythonでTwitterのbot動かしてみる

【Python】Flask+TweepyでTwitter連携アプリを作る

スポンサーリンク

adsense

スポンサーリンク

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin

-Bitcoin, Programming