読者です 読者をやめる 読者になる 読者になる

OpenTween AdventCalendar 5日目 - タブ振り分けルールの動作

この記事は OpenTween AdventCalendar の5日目の記事です。

今日はタブ振り分けルールの動作についてです。実装について書かうとも思ったんですが、今のところ式木が生ひ茂る森なので説明するなら Yacq を導入してからにしたいなー、といふ感じです。

「タブ振り分けルール」って何

f:id:kim_upsilon:20141205223426p:plain

これです。

新規タブの種別を「タイムライン振り分け」にすると、この機能を使へるタブが作られます。振り分けルールを使ふ目的は、

  • 自分の名前を含むツイートを別のタブに振り分けて通知する
  • タイムラインから特定のキーワードを含むツイートを見えなくしたい
    • 振り分けルールを使ってツイートを別のタブに「移動」することでNGワード的な機能を実現できます

などが主でせうか。スクリーンネーム複数指定して、ストリーミング可能な疑似リストタブのやうなものも作れたりします。

タブ振り分けルールの動作

例として、このツイートを振り分けるときの挙動を見てみませう。*1

振り分けルールで注意しなければならないのは、「URL検索」がオンの状態とオフの状態で判定に使はれるテキストが変はるといふことです。そのため、ここでは「URL検索」がオン/オフの場合を分けて解説します。

「URL検索」にチェックが入ってゐない場合

  • ScreenName
    • kim_upsilon
  • TextFromApi
    • I just added 日の出製麺所 to #OpenStreetMap. openstreetmap.org/browse/node/27… via @pushpinapp
  • Source
    • iOS

上のテキストを使って、次のやうな判定が行はれます。

  • 「複合条件」の場合
    • ScreenName と「ユーザーID」*2が一致してゐるか?(完全一致)
    • TextFromApi に「発言内容」(スペース区切り)が含まれてゐるか?(AND検索, 部分一致)
  • 「単一条件」の場合
    • ScreenName または TextFromApi に「発言内容」(スペース区切り)が含まれてゐるか?(AND検索, ScreenNameとは完全一致, TextFromApiとは部分一致)
  • 共通
    • Source が「Source」と一致してゐるか?(完全一致)
    • 公式RTのみ」にチェックが入ってゐる場合、公式RTであるか?

「URL検索」にチェックが入ってゐる場合

  • ScreenName
    • kim_upsilon
  • Text
    • I just added 日の出製麺所 to <a class="hashtag" href="https://twitter.com/search?q=%23OpenStreetMap">#OpenStreetMap</a>. <a href="http://t.co/FF2GTsKHWO" title="http://www.openstreetmap.org/browse/node/2720199696">openstreetmap.org/browse/node/27…</a> via <a class="mention" href="https://twitter.com/pushpinapp">@pushpinapp</a>
  • SourceHtml
    • <a href="http://www.apple.com/">iOS</a>

上のテキストを使って、次のやうな判定が行はれます。

  • 「複合条件」の場合
    • ScreenName と「ユーザーID」が一致してゐるか?(完全一致)
    • Text に「発言内容」(スペース区切り)が含まれてゐるか?(AND検索, 部分一致)
  • 「単一条件」の場合
    • ScreenName または Text に「発言内容」(スペース区切り)が含まれてゐるか?(AND検索, ScreenNameとは完全一致, Textとは部分一致)
  • 共通
    • SourceHtml が「Source」と一致してゐるか?(部分一致)
    • 公式RTのみ」にチェックが入ってゐる場合、公式RTであるか?

注意

  • 正規表現」が有効な場合、上記の動作の「完全一致」はすべて部分一致になります
    • 完全一致でマッチさせる場合はパターンを ^$ で囲ひます
  • 「除外ルール」では各条件は OR 条件として機能します
    • マッチルールでは全ての条件に当てはまらなければ振り分けられないが、除外ルールでは一つでも条件が当てはまれば振り分け対象外となる

ScreenName に bot が含まれてゐないアカウントの twittbot.net によるツイートを振り分ける:

  • マッチルール
    • Source: twittbot.net
  • 除外ルール

「#共感したらRT」的なツイートを振り分ける:

  • マッチルール
    • 発言内容: [##].+([たな]ら|ひと|人は?|全員)RT
    • 正規表現: オン

まとめ

いい加減ラムダ式復活させたい。

*1:メンションとハッシュタグと URL の全てが揃ったツイートを探したらたまたまうどんツイートになりました。うどんうどん。

*2:Tween/OpenTween ではスクリーンネームのことを「ユーザーID」と呼んでゐます。表記変へたい…。