Scrapbox Stream Timeline
2021/04/14
n人のStreamをsubscribeしておくと、更新があった時にタイムラインで表示してくれる的なやつ
編集の真っ最中を見てみたい場合に使えそう
お、Aさんが更新始めたな、どれどれ
2021/09/04
nのStreamをワンプレイスで表示すればTwitterのタイムラインみたいになって楽しいかもしれない
たぶん誰かつくってないこれ?
2021/09/20
ああ、そうか、Slackに流せばいいだけか
StreamにもRSSあったっけ
ある
そう単純でもないみたい
2021/09/29
>GASにScrapbox Notificationを流して、GASからSlackに通知
GAS部分でフィルタリングするということか
>GASを経由して、author_nameがbluemountainのやつをフィルターする
ああ、これは自分のprojectにn人を招待してていて、その人達も書き込むからその分を知りたいってことか
デフォではauthor_name=自分なので、それ以外だけ見るようにすればもれなくチェックできる
モチベ
別に必要性はないんだよなぁ
タイムラインみたいな見栄えで見れたらなんか楽しそう、寂しさ紛らわせそうってだけで
APIあるんだっけ? yes
ok
Rate Limitは?
>あくまで内部APIです。APIは予告なく変更を行います。
なので、まあ常識の範囲内やね
エンジニアのリテラシーが問われる
--
statuses/user_timelineは1秒1回
search/tweetsは5秒に1回
実装イメージ
n分ごとにGETする
endの値が変わらなければ無視
ん?これ「一番古いタイムスタンプ」じゃね?最新ではなくて
a: 1630228190
b: 1630229197
1630229197-1630228190 = 1007
1007秒の違い
projectに更新が入れば、streamデータの「一番古いデータ」も変わるはず。そこがendに反映される
だからendの値を監視することで更新有無を調べることはできる? → true
pageごとに以下を出す
title
updatedのうち一番値でかいやつ(をreadable datetimeに変換)
複数あったらどれかひとつでいい
同上、そのtext
---
つまりTwitterでいうtweetは、ここでは以下の組になる
projectname
title(pagetitle)
updated datetime
updated text
permalink
ここでidを使えば行レベルでアクセスできる
このtweetを最新順に出す感じで見せれば良い
取得ロジック
まずはAさんだけ取るとする
1分ごとにgetして、endの値が変化してるか見ればいい
変化してない場合は? → スルーすればいい
変化してた場合は→ 表示を更新
どう表示すればいいかはわかんね
updated_at一番でかいの持ってくればいいんだろうか?
変化した量が多い場合は? → 表示数が増えるってだけの話
---
Bさんも取りたいとする
モデル二つあるな
1分の中で二分割して取る
1分ごとに、n人分を一気に叩く
あるいは分業
つまり「あるprojectPのstreamを取ってきて、その結果を保存するコマンド」と「保存された結果達を監視し、表示するツール」の分業
これなら前者はn人みたいならn個のコマンドを並列させればいいだけ
どこで並列実行させるねんって話はある
仕事だったらAWSに環境つくって、とか色々できるけど
普段使いのこのpc上でずっとコマンド走らせるってのも気持ち悪いし
まあつくりかたは見えたのでいったんおしまいかな
モチベ高まったらまた。