昨日学科のLT大会があった。 毎年LT大会ではツイートを流すスクリーンがあるのだけれど、リモート開催なので学科のmattermostにTwitterが流れる仕組みがあれば面白いかな〜と思い雑に実装した。
もともとTwitterのAPIはアプリを申請していたので使用できる状況にあったのだけれど、User Streams APIが廃止されていたので出来るかどうか微妙だった。 軽く調べるとUser Streams APIの代わりにStreaming APIがあるらしく、この中のstatus filterを使えばだいたい行けそうだった。 鍵垢のツイートが取れないというのはあるが、まぁ...。
それとmattermostへのwebhookはslackのものをエンドポイントをmatrtermostにすればいいだけらしく、これもわりと簡単そうだった。
というわけで雑に検索して出てきたgolangのTwitter API SDKと、slackへのメッセージSDKをいい感じにして実装した。
結構いい感じですね。
golangで実装していたので、手早くローカルからLinux用にビルドして、学科のubuntu VM上でsystemdをつかって動かしていた。 基本的には特に障害も無く元気に動いてたので良かった気がする。
まぁなんとなく一応リポジトリ作った。
実装おもしろポイント
ハッシュタグの大文字小文字が区別されない
今回はクエリパタメーターとして
v.Set("track", "#ieLT")
を渡している。 これはツイート中に#ieLT
があるツイートのみを抽出するものである。(学科LTのハッシュタグ)
TweetDeckやなどをつかっていると大文字小文字は区別されるので #IELT
と #ieLT
は別物扱いになる。
しかしこのAPIか、 golangのライブラリの仕様かは定かではないが、大文字小文字の区別がなく #IELT
も収集されてしまうので雑に#IELT
が含まれていたら弾くようにした。
今回は変なbotは出なかったが、bot避けに軽度緯度で日本国内に限定するとかしても良いかもしれない。
Tweetプロフィール画像の高画質化
今回のAPIで取得できるプロフィール画像は
https://pbs.twimg.com/profile_images/1153141142998794240/Yt9814c5_normal.jpg
と _normal
がついている。
これだと実際の画像が の様にあまり画質が良くない(サイズが小さい)
個人的な趣味でなるたけ高画質で取ってきたかったので、雑に_normal
を取り除いて
https://pbs.twimg.com/profile_images/1153141142998794240/Yt9814c5.jpg
なURLに変更すると
とそこそこ高画質化される