技術

Twitter Search APIのSandboxを使うよ

Pocket

Twitter APIがuser streaming廃止だなんだと結構色々あったので、手始めに新しくなったSearch APIを試してみたよ

Search API

Search APIは3種類あって、その中でまた契約プランによって使える機能などがかわってきて
一度に返してくれるツイートの量や、使える検索オペレーターなどが変わってくる。
そういった検索まわりの仕様がStandardとPremium, Enterpriseでは大きく異なり
PremiumとEnterpriseでは大きな部分では料金形態などが変わってくるようだ。(Enterpriseは要問い合わせっぽいので詳細は知らない。)
検索オペレーターの一覧など見ていると、Enterpriseでしか使えないものも存在している。
Overview — Twitter Developers

  • 7-days – 検索対象は7日間前までのツイート
    • Standard
  • 30-days – 検索対象は30日間前までのツイート
    • Premium
    • Enterprise
    • (Sandbox)
  • Full ARchive Search – 検索対象は2006年3月までのツイート(Twitterがサービス開始して以来初めてのツイートまで、全部!)
    • Premium
    • Enterprise
    • (Sandbox)

Search Tweets: 7-days(Standard Search)

無料で使えるやつ。
Standard Searchは基本的にTwitterの高度な検索でできる事をAPIでできるんだけど
twitterのモバイルクライアントなんかで検索していてわかる通り、twitter側である程度関連性などに焦点を当ててアグリゲートしたデータが返ってくるので、一部ツイートやユーザーが出てこない事もある。
データの完全性を求めるのであれば、Premium以上の検索APIを利用する必要がある。
Standard search API — Twitter Developers

Search Tweets: 30-days/Full Archive(Premium. Enterprise)

有料のやつ。30日版と全期間版
ちなみにツイートはツイートした後、約30秒くらいでAPIから検索できるようになるらしい。

Premium search — Twitter Developers

30-days/Full ArchiveはSandboxが使える

こちらはdeveloper accountを申請すると無料でSandboxが利用できるようになる。
premiumだとエンドポイントがデータ取得用とデータ個数取得用の2種類利用できるようになるけど、sandboxで利用できるエンドポイントはデータだけ。
他にもsandboxは制約があり、一度に取得できるデータ数が違うとか、検索パラメーターが一部しか使えないなど色々あるんだけど
一番気にしておきたいところで言うと、一月のリクエスト回数で、30daysは250回まで、full archiveは50回まで。

develop accountを申請するよ

sandboxで検証してきたくなったでしょう。そうしたらdeveloper accountを申請するのです。
Apply for access — Twitter Developers
Apply for developer accessというページに遷移するので、求められるままに情報を入力していきましょう。
企業なのか個人なのか、どのジャンルのサービスなのか、どの国と地域に提供するサービスなのかなど、サービスがある前提です。
「ちょっと触ってみたいだけの人」は触れないのですねぇ。

「Describe in your own words what you are building」
この項目は300文字以上で書かないといけないので一番めんどくさいと思いますが

  • サービス・製品の目的
  • ユーザー・カスタマーに何をお届けするのか
  • ツイートやユーザーなどのコンテンツをどんな感じで分析するのか
  • 取得したデータはどう表示されるのか

みたいな事を書いていきます。
私は制作を考えているサービスに基づいて、こういいうサービスを考えているよ!というサービスの概要についてと、
データの取り扱いについて、ツイートのfavやRT数を元に人気度を分析したりするよ!とか、ツイートは埋め込み表示するつもりだよ!とか書きました。

承認されると以下のようなメールが届きます。金曜日に申請して日曜日には受理してもらえたというスピード感。

さあ、楽しいdeveloper生活の始まりです。

Full Archive検索を試してみよう

Postmanを使ってリクエストすることにしました。
事前にJWTを発行しておきます。

node.jsで以下の処理を書いてJWTを取得。

PostmanのHeadersで
Authorizationに Bearer {JWT_TOKEN}
を持たしておきましょう。

bodyにはjsonで検索クエリをや期間などを指定します。

toDateは未指定だとnow()が反映されます。

リクエストするエンドポイントは
https://api.twitter.com/1.1/tweets/search/fullarchive/{env_label}.json

{env_label}には、developerサイトのAccount / Manage dev environmentsから登録したdev environment labelを記載します。
Manage dev environments (ログインユーザーだと見られる)

検索オペレーター

twitterの検索窓ど同じように、検索オペレーターをクエリ内に含ませることができる。
Using standard search — Twitter Developers
Premium search operators — Twitter Developers

使える・使えないの一覧はこれを見ると早い
Operators by product — Twitter Developers

気をつけた方がよさそうなこと

APIから取得できるデータは一部可変的であることから、1日1回日付やユーザーをフィルタにして検索かけてデータ取得して対象ツイートを保存していくみたいなバッチを組むとして
ユーザーのフィルタとしてユーザーのハンドル「@xxxx」を使ってしまうと変更になる可能性があるので、UIDにするとかなんかいろいろある
あと、返って来たデータはidじゃなくてid_strを使うこと。

きになるお値段

Tweets: Full Archive

全期間の検索で、複雑なクエリをもたせたい場合は課金必須なのでなかなか大変。
過去ツイートを使ったサービスといえばtogetterだけど、あれはNTTデータさんのサービスを使っているんですってね。

感想

2500回くらいアクセスしたかったら20万円くらい払う必要があります
もう湯水のごとくジャブジャブAPIを利用できる時代は終わったのね!

複雑な検索クエリを作って1024文字超えないようにね!多分平気だけど!

こちとら限られたリクエスト数で勝負していきたいというのに、トレンドのハッシュタグを付けたレイバンのサングラス買ってねみたいなゴミツイートの存在が憎いですねと思いました。

Pocket

mm

作成者: ぴーやま

なんとかエンジニア。忘れっぽいのでブログにメモをしている。 最近、一番好きな食べ物は汁物に浮いているたまごなんじゃないかなぁと思ってきた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください