- LINEのbotをHeroku+Pythonで動かす
- 各社の公開APIを使う
アカウント作成:
https://signup.heroku.com/dc
Herokuの使い方がわからない場合や初めてで環境が整っていない場合は、
https://devcenter.heroku.com/categories/application-architecture
の左メニューから好きな言語を選び、Getting Started on Herokuで勉強する。
Python版: https://devcenter.heroku.com/articles/getting-started-with-python#introduction
プロジェクトのファイルの構成は https://github.com/heroku/python-getting-started ほか既存のものなどを参考にすると良い。 https://github.com/heroku に各言語の例がいくつかある。
Procfileは web:
に続けて起動するときのコマンドを書く。
単純には web: python main.py
など。
https://github.com/heroku/python-sample
フレームワーク使用時のProcfileの例:
https://github.com/heroku/python-django-sample
Python+Flask: http://qiita.com/sqrtxx/items/2ae41d5685e07c16eda5
Python+Falcon: http://qiita.com/shiraco/items/58a33b878fa5f1180d75
依存パッケージがある場合は、requirements.txtやbuild.gradleやcomposer.jsonなどに書く
LINEのwhitelist機能を使用したい場合はFixie(無料のアドオン)が使えるが、クレジットカードの登録が必要であり、動かすだけなら設定しなくても問題ない。
登録する場合はFixieのOutbound IPsを使用する。
http://qiita.com/yuya_takeyama/items/0660a59d13e2cd0b2516
SettingsのConfig Variablesから環境変数として登録して使うとソースコードに直書きしなくてよくて便利。
Pythonなら os.environ['Config Varsに書いたKEY']
で取れる。
普段使いのLINEアカウントを元にして、BOT API Trial Accountを作成する。
必要事項を入力すると、運用に必要な
- Channel ID
- Channel Secret
- MID
が発行される。また、QRコードも発行されて作成したアカウントと友達になれる。
http://qiita.com/Yuki_BB3/items/5c18073181b5eea94164
Callback URLにはHerokuで作ったアプリを設定する。
たとえば /callback
で受け付けるように作ったなら https://あああああ.herokuapp.com:443/callback
。設定反映まで時間がそこそこかかる(403が返るなど)。気長に待つ。
https://developers.line.me/bot-api/api-reference
上記3つのID&Secretをheaderに、投稿や取得に必要な情報をjsonにして投げる。
無料かつ普段使ってる@gmail.comでログインが済む。が、無料の範囲で使うとしてもクレカ登録が必要。
使用時の認証にはいろいろな方法があり、おなじみのAPIキーを発行して必要なデータと同時に投げる方法など。
ラベル付けや顔認識やいろいろあるので好きなものを使う。
https://cloud.google.com/vision/docs/
無料かつ普段使ってるMicrosoftアカウントでOK。Googleとの違いは、自然言語で画像に説明をつけてもらえる。
アカウント画面にあるkeyをheaderに入れて投げる。
https://www.microsoft.com/cognitive-services/en-us/computer-vision-api
Googleは有料なので、無料を使いたい場合はMicrosoftのものが良い。
Computer Visionと違い、
- Azure MarketplaceにAPIを使う側のアプリを登録し(client secretが発行される)
- client secretを使ってトークンを取るAPIでトークンを取って
- トークンを翻訳APIのheaderに使う
- https://msdn.microsoft.com/en-us/library/ff512421.aspx
- https://msdn.microsoft.com/en-us/library/ff512387.aspx
https://www.microsoft.com/en-us/translator
http://qiita.com/shanonim/items/f90ee13180ee70a1903d
/oauth2/tokenでトークンをとってきて各種APIのheaderに使う。
お手持ちの日経IDを使うには、
grant_type
:password
username
: 自分のpassword
: 自分の
でOK。headerの Authorization
にはテスト用のものをとりあえず書いておけばよい。
検索。GET版のほうに細かく書いてあるが、POST版も同じ。
レスポンスのフィールドについては「レスポンスフィールド詳細」からGoogleのシートを読むとわかる。fields
に title
を指定するとタイトルが返ってくるなど。
kiji_id
を取れば http://www.nikkei.com/article/記事ID
でアクセスできる。
別タイトル同記事やほぼ同じ内容の別記事が検索にかかってしまう場合は、
keyword
のAND検索としてoriginal:true
を付け足すservice_category
でpaper
を指定しない(news
だけ指定する)
で対策できる。
/recommend/v1/articles
もsearchと同じような使い方でOK。
MeCab利用の形態素解析。 parse?sentence=解析したい文章
と他のAPI同様headerに Bearer トークン
でOK。
https://github.com/Nikkei/text-analysis-api/
API | |
---|---|
/market/v1/search | 銘柄コードを取れる |
/market/v1/price/銘柄コード | 株価を取れる |
/market/v1/summary | 為替やマーケット指標を取れる |
/market/v1/summary
はトークン不要で https://apigw.n8s.jp/market/v1/summary だけでも見られる
SQLのものに似たクエリを送ることでリクエストとなる。
エンドポイント: https://query.yahooapis.com/v1/yql
為替を取る場合、対象のテーブルは yahoo.finance.exchange
であり、これは pair
の絞り込みをする where
が必須で、しかもcommunity tableなるもののimportが必要になる。つまり、パラメータは
パラメータ | |
---|---|
q |
pair に関する where を含むクエリ |
env |
store://datatables.org/alltableswithkeys |
を指定しなければならない。例えば
http://query.yahooapis.com/v1/public/yql?env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&format=json&q=select+%2A+from+yahoo.finance.xchange+where+pair+in+%28%22USDJPY%2CEURJPY%2CJPYJPY%22%29
( format=json
を指定するとjsonで返る)