Twitter API v2の使い方
Twitter API v2
は下の表のようなことができる。
機能 | 説明 |
---|---|
Tweet lookup | ツイートのID からツイートを検索する |
User lookup | 名前かIDからユーザーを検索する |
Recent search | 最新7日間のツイートをTwitterの機能により検索した結果を取得する |
Full-archive search | 2006年3月以降の完全なアーカイブからツイートを検索する 現在は「Academic Research」でのみ提供している。 |
User Tweet timeline | 特定のユーザーのタイムラインを取得する |
User mention timeline | 特定のユーザーへのメンション(「@ユーザー名」を含むツイート)を取得する |
Filtered stream | フィルターにマッチしたツイートをリアルタイムにストリーミングする |
Sampled stream | 全てのツイートのおよそ1%をリアルタイムでストリーミングする |
Hide replies | 特定のツイートに対するリプライの表示・非表示を切り替える |
以前はツイート検索をしたかったためRecent search
機能を使用した。
ここで、ツイート検索をする際に用いる検索オプション、得られるデータの詳細をまとめる。
公式から引っ張ってきただけ。
https://developer.twitter.com/en/docs/twitter-api/early-access
1. Recent searchの基本的な使い方
以前Pythonから使用したときのまとめ↓
APIにquery(検索ワード)
とtweet_fields(取得する属性)
を渡すと検索結果が返ってくる。
2. 検索ワード
query(検索ワード)
に以下の要素を含めると対応したものが検索できる。
AND検索、OR検索などもできる。
検索ワード | 説明 | 例 |
---|---|---|
keyword | 検索ワード 句読点、記号、区切り文字で分割される それらを含めて検索したい場合は全体をダブルクォーテーションで囲む | 「岩石の巨兵」 |
emoji | 絵文字 | 「emoji」 |
exact phrase match | 正確な検索ワード 全体をダブルクォーテーションで囲む | 「”聖なるバリア -ミラーフォース-“」 |
# | ハッシュタグ | 「#遊戯王」 |
@ | メンション | 「@YuGiOh_OCG_INFO」 |
from: | 特定のユーザーの投稿したツイート | 「from:YuGiOh_OCG_INFO」 |
to: | 特定のユーザーに対して投稿したツイート | 「to:YuGiOh_OCG_INFO」 |
url: | UPLの検索 短縮URLも元のURLも両方マッチする 句読点や特殊文字を含む場合は全体をダブルクォーテーションで囲む | 「url:”https://www.yugioh-card.com/"」 |
retweets_of: | 特定のユーザーのリツイート | 「retweets_of:YuGiOh_OCG_INFO」 |
context: | ドメインID・エンティティIDの組からツイートを検索 “※”はワイルドカードとして使える | 「context:67.1108732957936644096」 ※ドメインID 67→’Interests and Hobbies’ ※エンティティID 1108732957936644096→’YU-GI-OH!’ |
entity: | エンティティからツイートを検索 エンティティIDではなく文字列 エンティティIDを使いたい場合は「context:」を使用 | 「entity:”遊戯王”」 |
3. 検索オプション
query(検索ワード)
に以下の要素を含めると対応したものだけが検索できる。
マイナス検索するとそれ以外のものだけ取得できる。
演算子 | 説明 | 例 |
---|---|---|
is:retweet | リツイート | 「is:retweet」 |
is:verified | 公式アカウントによるツイート | 「is:verified」 |
has:hashtag | ハッシュタグが含まれるツイート | 「has:hashtag」 |
has:links | リンクが含まれるツイート | 「has:links」 |
has:mentions | メンションが含まれるツイート | 「has:mentions」 |
has:media | メディアが含まれるツイート | 「has:media」 |
has:images | 画像が含まれるツイート | 「has:images」 |
has:videos | 動画が含まれるツイート | 「has:videos」 |
lang: | 特定の言語によるツイート たまに日本語が中国語扱いされる | 「lang:ja」 |
4. 取得できる属性
tweet_fields(取得する属性)
に以下の要素を含めると対応したものが取得できる。
種類 | 型 | 説明 | 例 |
---|---|---|---|
id (default) | string | ツイートのID | id”: “1050118621198921728 |
text (default) | string | ツイートの本文(utf-8) | text”: “this is tweet. |
attachments | object | 添付されたもの(画像・投票など)のタイプ | “attachments”: { “poll_ids”: [ “1199786642468413448” ] } “attachments”: { “media_keys”: [ “3_1136048009270239232” ] } |
author_id | string | 投稿者のID | author_id”: “2244994945 |
context_annotations | array | ツイートのトピック(Twitterの自動認識?) domainは大まかなジャンル「スポーツ」「ゲーム」など entityは作品名のような細かい属性 | “context_annotations”: [ { “domain”: { “id”: “47”, “name”: “Brand”, “description”: “Brands and Companies” }, “entity”: { “id”: “10045225402”, “name”: “Twitter” } } ] |
conversation_id | string | 会話の始点のツイートID | conversation_id”: “1050118621198921728 |
created_at | date (ISO 8601) | ツイートの投稿時刻(世界標準時) | created_at”: “2019-06-04T23:12:08.000Z |
entities | object | ツイートに埋め込まれているテキスト以外のもの ハッシュタグ・メンション・URL・キャッシュタグ アノテーション(このツイートが何に関連しているか) 対象テキストの開始位置・終了位置・アノテーションの場合は信頼度 | “entities”: { “annotations”: [ { “start”: 144, “end”: 150, “probability”: 0.626, “type”: “Product”, “normalized_text”: “Twitter” } ], “hashtags”: [ { “start”: 0, “end”: 17, “tag”: “blacklivesmatter” } ] } |
geo | object | ユーザーがタグ付けした場所の詳細 場所のID・座標 | “geo”: { “coordinates”: { “type”: “Point”, “coordinates”: [ -73.99960455, 40.74168819 ] }, “place_id”: “01a9a39529b27f36” } |
in_reply_to_user_id | string | リプライ先のユーザーID | in_reply_to_user_id”: “2244994945 |
lang | string | ツイートの言語 | lang”: “en |
non_public_metrics | object | ツイートの非公開エンゲージメント指標 ユーザー認証が必要 インプレッション数・リンククリック数・ ユーザープロフィールクリック数 | “non_public_metrics”: { “impression_count”: 99 “url_link_clicks”: 37 “user_profile_clicks”: 22 } |
organic_metrics | object | ツイートのエンゲージメント指標 ユーザー認証が必要 インプレッション数・リンククリック数・ ユーザープロフィールクリック数 リプライ数・いいね数・リツイート数 | “organic_metrics”: { “impression_count”: 3880, “like_count”: 8, “reply_count”: 0, “retweet_count”: 4 “url_link_clicks”: 3 “user_profile_clicks”: 2 } |
possiby_sensitive | boolean | センシティブな内容を含む可能性があるか | possibly_sensitive”: false promoted_metrics object “ツイートが宣伝されたときのエンゲージメント指標 ユーザー認証が必要 インプレッション数・リンククリック数・ ユーザープロフィールクリック数 |
public_metrics | object | ツイートの公開エンゲージメント指標 リプライ数・いいね数・リツイート数 | “public_metrics” : { “retweet_count”: 8, “reply_count”: 2, “like_count”: 39, “quote_count”: 1 } |
referenced_tweets | array | 参照しているツイートのリスト タイプ(リプライ・引用)・ツイートID | “referenced_tweets”: [ { “type”: “replied_to”, “id”: “1242125486844604425” } ] |
reply_settings | string | このツイートにリプライ可能な範囲 | reply_settings”: “everyone |
source | string | ツイート元のアプリの名前 | source”: “Twitter Web App |
withheld | object | 地域の法律により表示が差し控えられているツイートの詳細 | “withheld”: { “copyright”: false, “country_codes”: [ “IN” ] } |
5. 参考
https://developer.twitter.com/en/docs/twitter-api/early-access
https://developer.twitter.com/en/docs/labs/recent-search/guides/search-queries
https://developer.twitter.com/en/docs/twitter-api/data-dictionary/object-model/tweet