eniehackとの議論11

binchotan仕様案 Aug13

DSL

# 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
// DSLのイメージ(Lua

TODO

プロトコル

// パスするだけ(リクエスト)
{
  "jsonrpc": "2.0",
  "method": "binchotan.v0.plain_request", // pass through, proxy
  "params": {
    "method": "GET",
    "endpoint": "/lists/tweets",
    "api_params": {
        ...
    }
  },
  "id": "hogehoge" // arbitrary string
}

// フィルタリング付きのエンドポイント(リクエスト)
{
  "jsonrpc": "2.0",
  "method": "binchotan.v0.reverse_chronological",
  "params": {
      "max_results": 1024,
  },
  "id": "hogehoge"
}

// フィルタリング付きのエンドポイント(リクエスト)
{
  "jsonrpc": "2.0",
  "method": "binchotan.v0.backend_info",
  "params": {
  },
  "id": "hogehoge"
}

// レスポンス
{
    "jsonrpc": "2.0",
    "result": {
        "meta": {
            "api_calls_remaining": 24,
            "api_calls_reset": 18,
        },
        "body": { // copy of Twitter API response
            "data": {
                ...
            },
            "meta": {
                ...
            }
        }
    },
    "id": "hogehoge"
}

Backlinks