翔泳社の技術書が電子書籍で半額セールをしている。ITエンジニア向け。
電子書籍が世に出てきてから、なかなか値下げされず中古市場にも出回らなかった技術書が安く手に入るので嬉しい。
ただ、個人的には、積んである本がたくさんあるので、今回はよほど良さげな本がない限り見逃そうかと思う。
でも、AWS関連の本が一冊ぐらい欲しい。
だと簡単すぎるだろうか?
おすすめタイトル
有名どころで世間的にも名著とされているのを何冊かあげておく。
翔泳社の技術書が電子書籍で半額セールをしている。ITエンジニア向け。
電子書籍が世に出てきてから、なかなか値下げされず中古市場にも出回らなかった技術書が安く手に入るので嬉しい。
ただ、個人的には、積んである本がたくさんあるので、今回はよほど良さげな本がない限り見逃そうかと思う。
でも、AWS関連の本が一冊ぐらい欲しい。
だと簡単すぎるだろうか?
有名どころで世間的にも名著とされているのを何冊かあげておく。
前回の続き。
今回はLINE非公式APIをPythonから使って通知の取得を試みた。
LINE manual — LINE api doc 0.6.9 documentation
上記サイト参照。
Pythonで書かれていて、
pip install line
でインストールし、サンプルコード(Echo bot example)
from line import LineClient, LineGroup, LineContact try: client = LineClient("ID", "PASSWORD") #client = LineClient(authToken="AUTHTOKEN") except: print "Login Failed" while True: op_list = [] for op in client.longPoll(): op_list.append(op) for op in op_list: sender = op[0] receiver = op[1] message = op[2] msg = message.text receiver.sendMessage("[%s] %s" % (sender.name, msg))
のような形で使う。 ただし、これだけだとアクセストークンが取得できない。
GitHub - iwdmb/GetLineApiAuthToken: This will help you get LINE API authentication token(authToken).
上記のリポジトリをクローンしてきて、
python GetLineApiAuthToken
を実行すると、ユーザ名パスワードを聞いてくるので、LINEのメールアドレスとパスワードを入力する。 すると4桁の数字が表示されるので、これをスマホのLINEに入力する。 すると、AuthTokenが取得できる。
実は最初に挙げたpip install lineでインストールされるものでもトークン取得できそうなことが書いてあるのだが、実際にやってみると取得できない。
from line import LineClient, LineGroup, LineContact try: client = LineClient(authToken="AUTHTOKEN") #ここに取得したトークンをコピペ except: print "Login Failed" while True: op_list = [] for op in client.longPoll(): op_list.append(op) for op in op_list: sender = op[0] receiver = op[1] message = op[2] msg = message.text print "%s" % msg
LINEから、クライアント古いからアップデートしろよ、という通知が大量に飛んでくる。issueになっているのは見つけたが、解決法は書かれていない。
Receive message of update LINE app after login · Issue #71 · carpedm20/LINE · GitHub
また、トークンも怪しいとすぐに破棄されるように見える(非公式なのでしかたがないが)。たとえば、上のサンプルコードは、実際にはスリープを数秒間挟まないとすぐダメになった。
ググると、werkzeugのバグだ、古いから更新しろ、という書き込みばかり見つかるが、今回はそれではない。
こちらのissueに書いてある、thriftのバージョンの問題だった。
curve is not compatible with thrift 0.10.0 · Issue #88 · carpedm20/LINE · GitHub
一時的な対処としては、
pip install thrift==0.9.3
で直る。
非公式なのでしかたがないが、安定した動作はしなかった。あるいは、GetLineApiAuthTokenのリポジトリ内にあるLINEディレクトリのメソッドを使えばあるいは…?と思い実験してみたのだが、他の端末が使用していると認識されてしまい、スマホのLINEアカウントが強制ログアウトされてしまい、会話ログも消えてしまった。
これに懲りて、やはり非公式APIはやめて違う方法を検討することにする。
最近、還元率2+1%(たまに4+1%)のLINE Payカードを買い物利用のメインに切り替えた。
還元率はいいのだが、家計簿アプリのZaimへの自動登録機能がないため、毎回自分で登録することになり、家計簿をつけるのがかなり面倒になってしまった。
Zaim側が対応してくれればよいが、まだ対応予定にすら載っていないので、とうぶんは期待できない。
これをなんとか解決したいと考えて、以下ならできそうじゃない?と考えた計画をメモしておく。
なお今のところうまくいっていない。
LINE Payは、使用するとLINEに金額の通知が来る。
この通知から日時と金額の情報をとって、Zaimに投げれば自動化できるのではないか。
LINE Messagging APIという、Botを作るときに用いるAPIがLINEにあるので、これを使ってBotを作る。
Botを作って、そのBotをLINE Payの通知会話に登録させれば情報が拾えるのでは!?
ZaimもAPIを公開しているので、そちらは心配ない。
herokuで動かすのが楽そうだったので、herokuのアカウントを作ってとりあえず固定文字列を返すbotを作成した。
特に大きくつまずく点もなく、資料もそろっていた。
さて、いざ出来たBotをLINE Payの会話に招待してみたところ、今まであった会話に加わるのではなく、新たなグループ会話が出来上がってしまった…。
これではLINE Payからの通知は取得できない。
さっそく暗礁に乗り上げてしまい、やる気を失いつつある。
Androidだと通知領域のテキストを拾う的なことができた気がする。とすれば、LINE Payの通知から金額を拾えないだろうか? まだ調べていないが、通知されるテキストの長さによるだろうか。
ただ、これだとAndroidアプリとして作らないといけないので、ちょっと面倒だなという気持ちがある…
なにか良い方法はないだろうか。