Twitter API v2の使い方1 (Twitterアカウント作成からツイート取得まで)

Twitter API v2の使い方1 (Twitterアカウント作成からツイート取得まで)

Twitterアカウントの作成からAPIを使用してツイート取得するまで。

Twitter APIというものを使うとTwitter上の情報を集めたりできて便利。

すごいトリ~!

そこで、
Twitterアカウントの作成 → 開発者登録 → プロジェクト作成 → APIを使用してツイート検索・取得
までの作業を一通り行う。

1. Twitterアカウント作成

既存のアカウントでもいいけど開発用に新規作成した。

Twitterでアカウントを作成する。

  • 名前
  • 電話番号 or メールアドレス
  • 生年月日

を登録する。
後で認証用のメールを送ってくるのでメールアドレスの方がいいと思う。

2. 開発者登録

Twitter APIを使用するためにはTwitterアカウントの開発者登録をする必要がある。
これが一番面倒。

DeveloperPortalで開発者登録する。

Twitterアカウントでログインして「Create an app」をクリック。



先に開発者登録しなさいと言われる。
「Apply」をクリック。



  • アンケート

何を作りたいかを答えて「Get started」
ただのアンケートなのでどれでもいい。



  • Basic info

名前、国、コーディングスキルを聞かれる。
答えて「Next」



  • Intended use

APIの使用目的を聞かれる。
英文を書く必要があり面倒。
ちゃんと答えないと承認されないらしいが一瞬で承認されたので多分誰も読んでない。

質問と回答の例(自分の書いたやつ)↓

Q.
「How will you use the Twitter API or Twitter Data?」

A.
「I want to get posts about manga, anime and games on twitter.
I would like to study based on those characteristics.
I’m going to use only twitter data.
I don’t use tweet, Favorites and Retweet function.」

Q.
「Are you planning to analyze Twitter data?」

A.
「Yes」

Q.
「Please describe how you will analyze Twitter data including any analysis of Tweets or Twitter users.」

A.
「I want to get posts about manga, anime and games on twitter.
I would like to study based on those characteristics.」

Q.
「Will your app use Tweet, Retweet, Like, Follow, or Direct Message functionality?」

A.
「No」

Q.
「Do you plan to display Tweets or aggregate data about Twitter content outside Twitter?」

A.
「No」

Q.
「Will your product, service, or analysis make Twitter content or derived information available to a government entity?」

A.
「No」

ここまで答えたら「Next」。

  • Review

今まで答えた内容を確認。
問題がなければ「Next」。

  • Terms

規約をしっかり読んで「Submit application」を押す。

  • 認証

承認されると認証用のメールが送られてくる。
メール中の「Confirm your email」を押して認証する。

3. APIキーの取得

APIを使用するためにはAPIキーが必要となる。
APIキーはプロジェクト作成時に発行されるが、メモし忘れた場合は再発行できる。

3.1. プロジェクト作成

プロジェクト作成。
DeveloperPortalの左タブの「Overview」をクリック。



「New Project」をクリック。



  • Name your Project

プロジェクトの名前を適当に入力。



  • Which best describes you?

一番それっぽいやつを選択。



  • Describe your new Project

何するつもりか入力。



  • Last step, name your App

アプリの名前を入力。



  • Here are your keys & tokens

APIキーが発行・表示される。
これがないとAPIが使用できない。
メモしてから「App settings」をクリック。

うっかり忘れても後から再発行できる。安心。

3.2 APIキーの再発行

発行されたAPIキーをメモし忘れた場合はDeveloperPortalで再発行できる。

さっき作ったプロジェクトの右側の鍵マークをクリックする。



「API Key」、「API Key Secret」、「Bearer token」、「Access token」、「Access token secret」の5種類がある。

「Regenerate」をクリックすると過去に発行された鍵が破棄され、新たな鍵が発行・表示される。



4. APIを使用してツイート検索・取得

PythonスクリプトからTwitter APIを使用してツイートの検索・取得を行う。

4.1 Pythonのインストール

されている前提。

4.2 Pythonライブラリのインストール

requestsが必要。
ターミナルから以下のどちらかのコマンドでインストール。

1
2
3
4
# pipの人
pip install requests
# condaの人
conda install -c anaconda requests

4.3 Pythonスクリプトの作成

Twitter公式の公開しているサンプルコードを改造。
https://github.com/twitterdev/Twitter-API-v2-sample-code/blob/master/Recent-Search/recent_search.py

後述のコードを作成。

今回は検索用のサンプルコードを使用したが他にも種類がある。

4.4 作成したPythonスクリプトの実行

作成したスクリプト内のBEARER_TOKENに、先ほど取得した自分のBEARER_TOKENを貼り付けると動く。
queryに検索したい文字列、tweet_fieldsに取得したい情報を入れる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import requests
import json

def create_url(query, tweet_fields):
if(any(tweet_fields)):
formatted_tweet_fields = "tweet.fields=" + ",".join(tweet_fields)
else:
formatted_tweet_fields = ""

url = "https://api.twitter.com/2/tweets/search/recent?query={}&{}".format(
query, formatted_tweet_fields
)
return url

def create_headers(bearer_token):
headers = {"Authorization": "Bearer {}".format(bearer_token)}
return headers

def connect_to_endpoint(url, headers):
response = requests.request("GET", url, headers=headers)
print(response.status_code)
if response.status_code != 200:
raise Exception(response.status_code, response.text)
return response.json()

def main():
# bearer_token = auth()
BEARER_TOKEN = r"取得したBEARER_TOKEN"
query = "テスト"
# 検索ワード e.g. query = "テスト" / query = "テスト OR test"
# OR 検索 AND検索 -検索 などしたい場合はそのように書く
tweet_fields = ["created_at", "author_id"]
# 取得データ e.g. tweet_fields = ["created_at", "author_id"]
# 空の場合は ツイートのid, text のみ取得する。
# created_at(投稿時刻), author_id(アカウントID)などの情報が欲しい場合はtweet_fieldsに書く

url = create_url(query, tweet_fields)
headers = create_headers(BEARER_TOKEN)
json_response = connect_to_endpoint(url, headers)
result_text = json.dumps(json_response, indent=4, sort_keys=True, ensure_ascii=False)
print(result_text)

if __name__ == "__main__":
main()

4.5 実行結果

検索されたツイートが10件表示される。
おそらく最新の10件、実行するたびに取得する内容が変わる。

無料枠で1ヵ月あたり500,000件のツイートを取得できるらしい。

実行結果を貼るとツイートの転載になるので貼らない。

5. 次回

サーバ上で定期実行できるようにする。

6. 発生したエラー

1
2
Exception has occurred: MaxRetryError
HTTPSConnectionPool(host='api.twitter.com', port=443): Max retries exceeded with url: /2/tweets/search/recent?query=%E3%83%8D%E3%82%AE%E3%83%88%E3%83%AD (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001F21741A9A0>: Failed to establish a new connection: [Errno 11002] getaddrinfo failed'))

プロキシを通して実行したら発生。
別のネットワークから実行したら成功。

1
2
Exception has occurred: Exception
(401, '{"title":"Unauthorized","type":"about:blank","status":401,"detail":"Unauthorized"}')

認証エラー。
プログラム中のBEARER_TOKENを間違えたら発生。

7. 参考

https://developer.twitter.com/en/docs/twitter-api/early-access

https://github.com/twitterdev/Twitter-API-v2-sample-code/blob/master/Recent-Search/recent_search.py

8. Twitter API リンク

タグ ,

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×