栗’s diary

Python勉強中。トレードに役立つようなTwitter bot開発中。暗号通貨の自動売買もやってみたい。

ツイッターbot作成の道(その4)

定期的にWeb情報を取得し呟く事は出来るようになりました。次はいよいよサイトの更新がされるや否や呟く、そういうこと。cronを知ってから薄々想像してましたが、次のサイトでやっぱりって感じでした。

qiita.com

つまり頻繁にサイトを訪れて、更新されたかどうかを調べるわけですね。なかなか迷惑(笑)GAEでは最短1分単位で対象サイトを訪れられます。

 

これならこれまでの知識の延長で出来るわけですが、ただ一つ、比較するためのログを残しておく必要があります。より壮大なことをやろうとするとそのうちデータベースとのデータのやり取りが必要になる事は覚悟してますが、今回はもっとお手軽にデータをやり取りしたいなと思いググってみました。そうして辿り着いたのがJSON (JavaScript Object Notation)

d.hatena.ne.jp

英語はサクサクッとクリア。でもやっぱり日本語...。プログラムは動くけど出力されたファイルが読めない、私が。そこでちゃんと見つけてきました。

d.hatena.ne.jp

テスト環境では成功。if文比較も出来ました。

 

さて、それではGAEにDeploy

IOError: [Errno 30] Read-only file system

も、もしかして・・・

 書き込み不可かよ ><

 

 

 

現在のbot機能

我がbot

twitter.com

基本、平日に活動します。

現在の機能は、

  • 1時間に一回、ドル円と日経平均先物を呟く。(日経平均先物は残念ながら10分遅れ。時間帯によってSGXとCMEを使い分け。リアルタイムで日経平均先物の情報を取得できる無料サイトがあれば教えてね。)
  • 6:50にCMEのFF金利先物から利上げ確率を計算して呟く。答え合わせはCountdown to FOMC - CME Groupで。計算方法についてはそのうち記事で紹介する予定。
  • TDnetの開示情報を場中30分単位で若干のフィルターをかけて呟く。来週からは5分単位に切り替えていく所存。

現在取り組んでいるのは、指定した企業サイトからPR情報が更新されたら即呟く事。これが出来れば、当初目論んでいたツイッターbotのための技術は取得できたことになるのだが。

ツイッターbot作成の道(その3):細かいcron

※本記事は別ブログで書いた内容を多少の加筆修正の上、転載したものです。

 

マーケット情報を呟く定期botを作るのが目標なので土日は静かにしていたい。
具体的には月曜の7時から土曜の7時までの間1時間おきにツイートしたい。

cronでそこら辺の指定ないのかなって探してみたけど見つからず。
公式のレファレンスには、

every 5 minutes from 10:00 to 14:00 (10時から14時までの間5分おきに)
every monday 09:00 (毎週月曜9時に)
2nd,third mon,wed,thu of march 17:00 (3月の第2第3の月曜水曜木曜に)

とかならあるけど、直接参考になるものはなかった。

試行錯誤していくつかの組み合わせパターンを試してみたけど、すべてエラー。
こういうニーズってあんまりないのだろうか。

cronをいくつも書いちゃうという荒業もあろうが、
今回はpython側でdatetimeモジュールを使って曜日や時間を調べて分岐させるという方法を取りました。
(でもこれだと無駄にURL叩いちゃうことになるんだよな。)

「月曜の7時から土曜の7時までの間1時間おきに」をcronでシンプルに書く方法があれば教えてくださいませ。

Google App Engineによるアプリ(ツイッターbot)制作まとめ

※本記事は別ブログで書いた内容を多少の加筆修正の上、転載したものです。

 

前回の記事で、鉄は熱いうちに打てを学びました。

今までGoogle App Engine(GAE)って使ってましたが、現在はGoogle Cloud Platformのサービスの一つって位置づけなんですかね。

gihyo.jp

それはともかくGAEを使ってツイッターbotを作る流れをまとめると

(最初のみ)
Google Cloud Platformにアカウント登録
Google App EngineSDK(GAE Launcher含む)をインストール

Google Cloud Platform上にアプリケーション作成(箱)
・GAE Launcherでアプリケーション(例えば、ツイッターbot)作成
・ローカルホストでテスト、テスト、テスト
・GAE Launcher上のアプリケーションをGoogle Cloud PlatformにDeploy
・アプリケーションのURLは http://[your-app-id].appspot.com/
(アプリケーションの名前がURLに使われるので名前には色々制限がある。)

てな感じでしょうか。
あれ、だいぶ短くなった...。

 

Google Cloud Platformに関する参考記事

Creating a Guestbook Application  |  Python  |  Google Cloud Platform

Google App Engine - Python Tutorial を和訳してみた - Qiita

App Engine の料金  |  App Engine  |  Google Cloud Platform

 

Google App Engine Launcherに関する参考記事

開発サーバとして便利なGoogle App Engine Launcher - ねずみとりんご

Google App Engine Documentation  |  App Engine  |  Google Cloud Platform

Google App Engine Launcherへアプリケーションの登録 | 無料レンタルサーバ(格安・有料)情報のレンサバ.com