Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.
curi_u edited this page Dec 9, 2017 · 6 revisions

Filter とは

フィルタを利用してホームタイムラインから特定のツイートを抽出することが出来ます。 また、ミュートフィルタを利用して見たくないツイートを消し去ることができます。


Filterの書式

文字列はすべて大文字小文字を考慮します。

演算子

以下の演算子が使用可能です。

  • == - 同じ値だった場合Trueを返します
  • != - 違う値だった場合Trueを返します
  • < - 左辺が右辺未満の場合Trueを返します (Numeric Only)
  • <= - 左辺が右辺以下の場合Trueを返します (Numeric Only)
  • > - 左辺が右辺よりも大きいの場合Trueを返します (Numeric Only)
  • >= - 左辺が右辺以上の場合Trueを返します (Numeric Only)
  • Contains - 左辺に右辺の文字列が含まれている場合にTrueを返します (String Only)
  • StartsWith - 左辺が右辺の文字列で始まっている場合にTrueを返します(String Only)
  • EndsWith - 左辺が右辺の文字列で終わっている場合にTrueを返します(String Only)
  • RegexMatch - 左辺の文字列に対し右辺の正規表現を使用し、マッチした場合Trueを返します(String Only)
  • !Contains - 左辺に右辺の文字列が含まれていない場合にTrueを返します (String Only)
  • !StartsWith - 左辺が右辺の文字列で始まっていない場合にTrueを返します(String Only)
  • !EndsWith - 左辺が右辺の文字列で終わっていない場合にTrueを返します(String Only)
  • !RegexMatch - 左辺の文字列に対し右辺の正規表現を使用し、マッチしない場合Trueを返します(String Only)
  • In - 左辺の文字列が右辺の配列に含まれる場合Trueを返します(Array Only)
  • !In - 左辺の文字列が右辺の配列に含まれない場合Trueを返します(Array Only)
  • || - OR
  • && - AND
  • ! - NOT
  • + - プラス(足し算)(Numeric Only)
  • - - マイナス(引き算)(Numeric Only)
  • * - かける(掛け算)(Numeric Only)
  • / - わる(割り算)(Numeric Only)
  • % - あまりを求める(剰余)(Numeric Only)

予約語など

以下の予約語などが存在します

  • True - TrueのBooleanと認識されます(Boolean)
  • False - FalseのBooleanと認識されます(Boolean)
  • "" - " で囲った文字は文字列として認識されます(String)
  • 1234567890 - 数字は整数型として認識されます(小数などは非対応)(Numeric)
  • Null - Nullと認識されます(Stringに対して有効)
  • ["test", "test2"] - 配列と認識されます (Numeric, String両方対応、混在不可)

リテラル

以下のリテラルが使用可能です

Status以下
  • CreatedAt - ツイートされた日時を示すDateTime(DateTime)
  • RetweetCount - ツイートのリツイートされた数(Numeric)
  • FavoriteCount - ツイートのお気に入り(いいね)に登録された数(Numeric)
  • InReplyToScreenName - リプライ先のスクリーンネーム(String)
  • InReplyToUserId - リプライ先のユーザーID(Numeric)
  • InReplyToStatusId - リプライ先のツイートのID(Numeric)
  • Source - つぶやき元(String)
  • Text - ツイート本文(String)
  • IsFavorited - 自分がツイートをお気に入りに登録したかどうか(String)
  • IsRetweeted - 自分がツイートをリツイートしたかどうか(String)
  • HasRetweetInformation - ツイートがリツイートかどうか(Boolean)
  • QuotedStatusId - 引用ツイート先のID(Numeric)
  • QuotedStatus - 引用ツイートの情報(Status)
  • RetweetInformation - リツイートの情報(RetweetInformation)
  • Entities - ツイートのエンティティ(Entities)
  • User - ユーザーの情報(User)
RetweetInformation以下
  • RetweetInformation.User - ユーザーの情報(User)
  • RetweetInformation.CreateAd - リツイートされた日時(DateTime)
  • RetweetInformation.Id - リツイートのID(Numeric)
Entities以下
  • Entities.Urls.Count - ツイート内のURLの数(Numeric)
  • Entities.HashTags.Count - ツイート内のハッシュタグの数(Numeric)
  • Entities.Media.Count - ツイート内のメディアの数(Numeric)
  • Entities.UserMentions.Count - ツイート内のユーザーの数(Numeric)
User以下
  • User.CreateAt - ユーザーがアカウントを作った日時(DateTime)
  • User.Description - ユーザーのBio(String)
  • User.FavouritesCount - ユーザーのお気に入りに登録した数(Numeric)
  • User.FollowersCount - ユーザーのフォロワーの数(Numeric)
  • User.FriendsCount - ユーザーのフォローの数(Numeric)
  • User.Id - ユーザーID(Numeric)
  • User.IsFollowRequestSent - そのユーザーに対してフォローリクエストを送ったか(Bool)
  • User.IsMuting - そのユーザーをミュート中か(Boolean)
  • User.IsProtected - そのユーザーが鍵垢か(Boolean)
  • User.IsVerified - そのユーザーが認証済みか(Boolean)
  • User.Language - ユーザーの設定している言語,例:ja(String)
  • User.ListedCount - ユーザーがリストに追加された数(Numeric)
  • User.Location - ユーザーの場所(String)
  • User.Name - ユーザーの名前(String)
  • User.ProfileBackgroundColor - ユーザーのプロフィールの背景色(String)
  • User.ProfileBackgroundImageUrl - ユーザーのプロフィールの背景画像(String)
  • User.ProfileBannerUrl - ユーザーのバナー画像(String)
  • User.ProfileImageUrl - ユーザーのプロフィール画像(String)
  • User.ScreenName - ユーザーのスクリーンネーム(String)
  • User.StatusesCount - ユーザーのつぶやきの数(Numeric)
  • User.TimeZone - ユーザーのタイムゾーン(String)
  • User.Url - ユーザーの設定しているURL(String)

※ ドキュメントに載っていないリテラルなども存在します。

フィルターの例

  • テキストにフランちゃんが含まれるツイートを抽出したい

(Text Contains "フランちゃん")

  • フォロワーが5000以上でフォローしている人が500以下の人のツイートを抽出したい

(User.FollowersCount >= 5000 && User.FriendsCount <= 500)

  • リツイートされたツイートで,ふぁぼられ,リツイートされた数が100以上のツイートを抽出したい

(HasRetweetInformation && RetweetCount >= 100 && FavoriteCount>= 100)

  • 画像や動画を抽出したい

(Entities.Media.Count > 0)

Pixivの画像が含まれ人気なツイート(250ふぁぼ以上)のツイートを抽出する場合

(Entities.Media.Count > 0 && Text Contains "pixiv" && FavoriteCount >= 250)

  • 特定ユーザーのツイートを抽出したい

(User.ScreenName In ["cucmberium", "Flantter"])

ミュートフィルタの例

  • テキストに~な人RTというものが含まれないツイートを抽出したい

(Text Contains "な人RT")

ハッシュタグの場合のみにするには

(Text RegexMatch "#.*な人RT")

Filter の動作に関して

動作が遅そうなフィルタはできるだけ後の方で評価するようにしましょう。 そうすることでフィルタの動作を若干軽量化できる可能性があります。

例)

× - (Text RegexMatch "#.*な人RT" && RetweetCount > 100)

- (RetweetCount > 100 && Text RegexMatch "#.*な人RT")

Fliter の技術的な部分

字句解析し,ポーランド記法に直した後Expressionを使ってコンパイルしています。