〜2015年9月中旬〜
いろいろkimonoでAPIを作っているが、IFTTTとの相性が悪いのか時間経つとTimeoutしてしまうものがある。
IFTTTのログはまったくもって役に立たないので原因がわからないんだよなあ。
まじで生のログを見せてほしい。
descriptionに画像のURLを
<img src="http://.../foo.jpg">
のように埋め込んで置くとIFTTTでEntryImageUrlで受け取れるが、
どうもこれが悪さしてるようで。外したら調子いい。
そういえばもう1個動かしてるほうは画像なしのせいか調子いい。
しかしそうなると画像つきtweetが使えないのは痛いな。
JSON.stringifyって書くの面倒だなと思ったら、console.logには%jなんてものがあった。
% node -e 'console.log({foo:{bar:{baz:{hoge:1}}}})' { foo: { bar: { baz: [Object] } } } % node -e 'console.log("%j", {foo:{bar:{baz:{hoge:1}}}})' {"foo":{"bar":{"baz":{"hoge":1}}}} % node -e 'console.log(JSON.stringify({foo:{bar:{baz:{hoge:1}}}}))' {"foo":{"bar":{"baz":{"hoge":1}}}}
内部的には単にJSON.stringifyを呼んでるだけなので結果も同じだ。
livedoor天気情報は今時珍しくRSSでも配信していて助かる。
しかし、これをtwitterへbotとして流そうとすると困ることになる。
たとえばさいたまだと
こんな感じのページになっているが、これは1週間分予報として存在する。
RSSの中身も1週間分あるが、一番新しいのは1週間後の天気になる。
つまりIFTTTでrecipe作ってもtwitterに流れるのは常に1週間後の天気になる。
どうしろと。
1時間に1回という指定にすると、どうもsleep 60m的な処理になってるらしくだんだんずれていく。
そうなるとbot的にはいつか1個飛ばしになるわけでちょっと体裁が悪い。
そのために頻度を上げるのもどうかと思うし、
そもそも1時間より細かい設定はできないしで痛し痒し。
Sep 15, 2015 12:23 PM Sep 15, 2015 1:25 PM Sep 15, 2015 2:32 PM Sep 15, 2015 3:34 PM Sep 15, 2015 4:35 PM Sep 15, 2015 5:37 PM Sep 15, 2015 6:38 PM
convertでできるのか調べてみると
Advanced Techniques -- IM v6 Examplesの後ろのほうに書いてある方法でできそうな気がする。
でもなんかまた違った効果になりそうな。
このあたりになると何やってるのかさっぱりわからんな。
単純な二値化じゃしょうがないとも言える。
どうにかするには挿絵だけはditherで処理するしかないが、
はたして挿絵と文章のページはconvertで自動的に判断可能かどうか。
挿絵のページは少ないとはいえ手動じゃちょっとやってられない。
ヒストグラムを取ればいけそうな気もする。
ああ、つぶれるなら2二値化して黒の画素数が一定以上だったら絵とみなせばいいか。
kimono labsのAPIドキュメントを見るとなんとStart a crawlなんてAPIがある。
つまりkimonoに任せなくても外から制御可能なわけだ。
ここで適当なcrontabからじゃ面白くないので何か手はないかと探しまくる。
IFTTTのDate&Timeが使えそう。これで1時間に1回というタイマーが設定できる。
さらにMakerを使うとhttpで叩くことが可能。完璧だ。
というわけで設定してみた。
ドキュメントがものすごく不親切だが、要するに以下のような感じでいける。
% curl -sL -H 'Content-Type: application/json' \ --data '{"apikey":"my api key"}' \ https://www.kimonolabs.com/kimonoapis/{API_ID}/startcrawl
kimonoapisがまさかそのままの意味だとは思わなかった。
IFTTTのMakerもPOSTとかContent-Typeの指定もできるので至れり尽くせり。
それほど期待してなかったがまあ問題ない範囲で使えるようだ。
Sep 19, 2015 2:22 AM Sep 19, 2015 3:29 AM Sep 19, 2015 4:20 AM Sep 19, 2015 5:20 AM Sep 19, 2015 6:21 AM Sep 19, 2015 7:22 AM Sep 19, 2015 8:19 AM Sep 19, 2015 9:19 AM Sep 19, 2015 10:19 AM Sep 19, 2015 11:19 AM Sep 19, 2015 12:22 PM Sep 19, 2015 1:20 PM Sep 19, 2015 2:18 PM Sep 19, 2015 3:19 PM Sep 19, 2015 4:18 PM Sep 19, 2015 5:20 PM Sep 19, 2015 6:18 PM Sep 19, 2015 7:20 PM Sep 19, 2015 8:19 PM Sep 19, 2015 9:20 PM Sep 19, 2015 10:20 PM Sep 19, 2015 11:20 PM
毎時15分に発火するようにしてkimono labsのCRAWL HISTORYで確認したところ、
だいたい20分あたりで実行されたようで。
というわけで、
IFTTTからkimono APIを叩きRSSのcacheを作らせ、
IFTTTのFeedを読む巡回が適当に動いて、
twitterへ配信するというbotが完成。
バックエンドはawsなのかherokuなのかはわからないけど、両方とも障害を起こすとは。
そういえばIFTTTの障害ってあまり聞いたことないな。