0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

X API (Twitter API) で "-is:retweet" が動かなくなった

Last updated at Posted at 2024-09-22

初めに

私は Xのポスト(Twitter の ツイート)を Search API を利用し、データ検索しています。
しかし、最近、やたらと検索結果が増えていることに気がつきました。
理由を追いかけてみると、なんと 「is:retweet」 が利用できなくなっていたので思わず Qiitaに書き込んでいます。

今まで動いていたクエリ

この問題が発生するまでは以下のクエリ条件で検索をおこなうことができました。

query = "#XXXXX OR #YYYYY -ZZZZ has:images -is:retweet"

この検索条件は タグ「XXXX」またはタグ「YYYY」があり、かつキーワードZZZZ を含まない、かつ画像が添付されており、かつリツイートは除く。という条件です。

この内、-is:retweet が動作していないことに気づきました。

答えはドキュメントにある(はず)

ドキュメントの Search API を開いて見ましたが、is:retweet が見つかりません。
まさかと思い検索してみたところいくつかヒットします。

スクリーンショット 2024-09-22 18.39.33.png

まずは一つ目の「Building initial filters」を開いてみます。

スクリーンショット 2024-09-22 18.38.34.png

ありました。やはり、is:retweet は使えそうです。

2つ目の「Full-archive search - Metadata and filtering timeline」を開いてみます。

スクリーンショット 2024-09-22 18.42.52.png

ありますね。 とその時、、、

スクリーンショット 2024-09-22 18.43.50.png

え、えんたーぷらいず?!

まさかと思い、左のメニューの「Enterprise - Gnip 2.0 > Search API」 をクリックし、is:retweet を Cntr+F で検索します。

スクリーンショット 2024-09-22 18.46.19.png

Enterprise search APIs support rules と書かれてますね。
左メニューをもう一度見ています。

スクリーンショット 2024-09-22 18.47.35.png

X API v2Enterprise - Gnip 2.0 というのが並んでいます。
わたしが初めにチェックした X API v2 > Tweets > Search Tweets をもう一度開いて次は Enterprise を検索してみます。

スクリーンショット 2024-09-22 18.51.02.png

When using a Project with regular access, you can use the basic set of operators and can make queries up to 512 characters long. When using a Project with Enterprise access, you have access to additional operators. Projects with Enterprise Access can make queries up to 4096 characters long.

Basic レベルの契約だと operators が使える、Enterprise なら もっっと使えると書いてあります。
ちなみに、operators 先はエラーページです。

スクリーンショット 2024-09-22 18.53.08.png

そのため、 Basic で使える Operator は不明ですが、ほぼ間違いなく is:retweet は Enterprise じゃないと使えなさそうです。

マジですか....

どうしたか

流石に Enterprise は契約できません...
さらにAPI チェックすると tweet.fieldsreferenced_tweets を発見しました。これはリポスト(リツイート)などの場合に元のポスト(ツイート)のリストが含まれる場所です。

よって、Search API の結果から referenced_tweets をチェックし、存在する場合はリポスト(リツイート)であるとして除外できそうです。
また、リポスト(リツイート)の場合は 取得した Tweet の text 属性の値に RT があることも見つけました。わたしの場合はこちらを利用して除外するようにしました。

まとめ

X API (Twitter API) の変更に伴い、"-is:retweet" が Enterprise でのみ有効化なパラメータになり、 それ以下のレベルでは Search API の結果にリポスト(リツイート)が含まれるようになりました。その結果、Search API の結果から除外するロジックの実装が必要になりました。
また、Basic レベルの場合は Search API の limit もあるため、使い切らないように考えて利用する必要があり、かなり辛い変更です。
X(Twitter) API が有料化されて半年ほど経ちましいたがどんどん料金がかかるようになってきましたね。。。

おわり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?