eniehackとの議論2
- 往復書簡になってきて笑う
- 細かい差異はあるけど一緒にやってもいいんじゃない?という気がしてきた
- UI
- サービスとして考えるとUIは普通(Play Storeにあるような)のにすればいいと思った
- Frontend <-> Filter <-> Backend という分離ができると気持ちいいだろうな
- フィルタ
- daemonで作れればserverlessにもすぐ応用はできると思う
-
daemon形式の場合、毎回、1からデータが送られてくるとステートレスになりそう
- serverlessで当初考えていたのもあって、フィルタはステートレスを前提と勝手にしてたな
- ツイートの列を扱うメリット、思いつかなかったしとりあえず単体で考えればいいと思う
-
提案: keywordでCWにするような機能をFilter言語に持たせるのはどうだろうか
- そういう機能でもいいし、もっと一般的に加工させてもいいと思った(下記参照)
- リモートのAPIを叩かせようとすると、それはそれでセキュリティ的に考える必要がある
- sandboxに入れて、少なくとも外部へのアクセスがあることを認識できるようにするとか
- おいおい考えればいいか
- 処理系のリンク・埋め込み
- Rubyならmagnusとかどうでしょう
- とくにEmbedding Ruby in Rustのところ
- Rubyならmagnusとかどうでしょう
- マルチプラットフォーム対応
-
しかし、Payloadがそれぞれ違うので、
has_images?
的な関数が参照するfieldが違うのが、難所のような気がしている- シブい、無理ってことはないと思うが
- Fediverse各種のデータ構造の共通する部分はActivityPubに入っているはずなので、ActivityPubとTweetのデータ構造の共通部分を抜き出して、差異は別途フィールドを設けて吸収させる感じかなあ
-
- GUI
-
icedもよさそう
- icedは使ったことないからわからんなー
-
# DSLのイメージ (メソッド名は適当)
filter "@some_bizarre_otakuをミュート" do |post| # titleはuserscriptっぽくスクリプトの外側で記述させてもいいか
return false if post.author.username == "@some_bizzare_otaku"
post
end
# 別の行、あるいは別のフィルターとして…
filter "「調査」と入っている投票ツイートをミュート(Twitterで世論調査をするな)" do |post|
FILTER_WORDS = ["調査", "世論", ...]
return false if (
FILTER_WORDS.any? {|w| post.text.include? w }
&& post.polls != nil
)
post
end
filter "ITF.をUTに置き換える(University of Tsukubaなので)" do |post|
new_post = post.clone
new_post.text = post.text.replace(/ITF\./, "UT")
new_post
end
filter "pixivの画像にはCWをつける" do |post|
new_post = post.clone
if post.images.any? { |i| i.url.include? "pixiv.net" }
new_post.cw = "NSFW"
end
new_post
end