新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

Twitter APIでデータ収集してみる

世の中の動向を知るのに使えないかと、Twitterのデータを、Twitter APIを使って取得してみました。

結論から言うと、Twitter APIの制限がキツイと噂には聞いていましたが、本当にキツ過ぎて使い物になりませんでした…。

Twitter APIでデータを取得するところまではやったので、Twitter APIの使い方メモとして記しておこうと思います。

はじめに

手順は下記記事を参考にしました。

qiita.com

ざっくり手順と注意点をまとめると、下記になります。

  • Twitter APIを使うには、Twitterアカウントが必要
  • Twitterアカウントは電話番号登録しておかないといけない
  • Twitterアカウントで、Developer登録する
  • Developerサイトで、アプリを登録する
  • Twitter APIを使うだけなら、アプリ登録の「Enable Sign in with Twitter」のチェックはOFF
  • アプリで「API key」「API secret key」「Access token」「Access token secret」を生成する

「API key」「API secret key」「Access token」「Access token secret」の4つの情報があれば、Twitter APIが使えます。

Twitter APIでデータ収集してみる

Developerサイトのアプリのトークン画面

「API key」「API secret key」「Access token」「Access token secret」が載っている

Twitter認証するサイトを作りたい時など、Twitterアカウントでログインした人のトークンを使って、Twitter APIをコールするようなアプリを作る際は、 アプリ登録の「Enable Sign in with Twitter」にチェックをONにします。

Google認証のサイトを作る時に、Googleにアプリを登録するのと同じやつですね。

使い方

認証周りがややこしそうなのですが、幸いJavaScriptに「twitter」という、Twitter APIを使うライブラリがあったのでそれを使いました。

どういうAPIがあって、どう使うかは、Twitter APIリファレンスを見て調べます。

例えば、米津玄師さんの最近のツイートを取得するのは、下記になります。

import * as Twitter from 'twitter';

const tw = new Twitter({
    consumer_key: '<API key>',
    consumer_secret: '<API secret key>',
    access_token_key: '<Access token>',
    access_token_secret: '<Access token secret>'
});

function twitterAPIGet(client: any, url: string, params: any) {
    return new Promise((resolve, reject) => {
        client.get(url, params, (error: any, response: any) => {
            if (!error) {
                resolve(response);
            } else {
                reject(error);
            }
        });
    });
}

(async () => {
    try {

        const url = 'statuses/user_timeline';
        const params = {
            screen_name: 'hachi_08'
        };

        const res = await twitterAPIGet(tw, url, params);
        console.log(res);

    } catch (err) {
        console.log(err);
    }
})();

制限

噂には聞いていたのですが、想像以上に制限がキツかったです。

APIによって違うのですが、制限キツイものだと、15分の間に15回、つまり1分につき1回しかコールできません。

例えば、米津玄師さんのフォロワー(約230万人)のデータををTwitter APIで取得しようとすると、1分に1コール、1コールにつき200人までしか取得できないので

230万人÷200人÷60分÷24時間=約8日

かかります…。

また、時間を掛けさえすれば、全ての情報を取得できるかというと、そうでもありません。

例えば、指定したTwitterアカウントの全てのツイートを取得しようとしても、APIで取得できるのは、あくまで最近のツイートのみです。

ざっくりとAPIに目を通した感じ、Twitterとしては、外部の人間にTwitterから情報収集させる気はなさそうで、Twitter APIは、持っているもしくは、認証したTwitterアカウントの操作としての利用をメインで考えているようです。

有料プラン

いつくかお金を払うと使える機能があるので紹介します。

検索

ツイートを検索できるAPIが、別に有料で提供されています。

キーワードによるざっくりとした検索しかできず、新聞の記事検索のような使われ方を想定したAPIです。

自分に関すること

自分のツイートや、自分のフォロワーなど、自分に関する情報を取得する時でさえ、同じAPI制限がかかります。

お金を払ってでもいいから、自分の情報を取得したいというユーザー向けに、自分の情報を取得するためのAPIが、別に有料で提供されています。

ただし、自分のエンゲージメントは全て取得できるのですが、他はアクティビティが発生した時にWebhookする仕様なので、過去に遡っての情報取得はできません。

取得手段は用意しない代わりに、データはリアルタイムでそっちに流すから、後は自分で保存しておけということですね。

感想など

色々Twitterから情報を集めたいなぁと思ったのですが、Twitter APIで広域に情報収集するのは現実的ではないですね。がっかり…。

関連カテゴリー記事

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com