公式Twitter APIを使いやすくしてくれるPythonライブラリ”Tweepy”を用いて、ツイートの取得や自動ツイート・自動いいねを実装する方法について解説しています。Developer Portal画面からのアプリ設定・認証キーの取得方法も解説。
※ 2023年2月、TwitterがAPIの仕様変更を実施しました。基本的にはTwitter API v1ではアクセスができなくな た、Twitter API v2経由でのアクセスが原則となります。(一部、v1.1.media/upload などは引き続き利用できるとの情報もあり)
参考: 【2023年6月最新版】TwitterのAPIが有料化。各種ツールへの影響とは?
本記事でAPIとして利用しているのはTwitter API v1です。新しいほうのTwitter API v2を利用する方法は、 TweepyをTwitter API v2経由で利用する の記事をご覧ください。
Developer Portalの設定画面に大きな変更はありません。
目次:
- Twitter API使用に必要な情報
- Twitter Developer Portal画面へ
- APIアクセスするための情報を確認
- User authentication settings
- 認証情報の設定が完了したら、API疎通テストを試してみる
- Tweepyを使ってタイムラインを取得
- Tweepyでタイムラインの情報を取得
- 自分のアカウントに関する様々な情報を取得: .verity_credentials()
- 特定のユーザー情報を取得
- Tweepyを用いて自動ツイート
- 通常ツイート: .update_status()
- 画像つきのツイート: .update_status_with_media()
- 自動いいねとRetweet
- 自動いいね: .create_favorite()
- Retweet: .retweet()
- 検索した投稿すべてにいいね
- Tweet・投稿を検索: .search_tweets()
Twitter API使用に必要な情報
Twitter Developer Portal画面へ
Twitter API Developer Platform にて、開発者アカウントのTwitterでログインしていることを確認し、” Developer Portal” へ進む。
この Developer Portalが、いわゆる「開発者ダッシュボード」となります。
全体の構成としては、大枠として”Project”があり、その中にAppを作っていく形。
APIアクセスするための情報を確認
Projectsの鍵マークからアクセス。
Consumer Keys:
API Key: APIを特定するためのキー
API Secret Key: 暗証番号のような働きをするキー(セキュリティ認証)
Authentication Tokens:
Bearer Token:
Access Token: Twitterアカウントを特定するためのキー
Access Token Secret: Twitterアカウントにアクセスするためのセキュリティキー
User authentication settings
現在では、User authentication set upを行うことが必須となっています。この認証作業を行わなければ、OAuth2.0による接続に必要な Client IDおよびClient Secretキーが発行されません。
2018年6月13日以降はAPIを使用するアプリ側できちんとcallback時のURLを設定する必要があります。 アカウントを連携する時に返ってくるURLになります。 ちなみに開発環境においては、 localhostはNGでしたが、Vagrantで使用しているIPを使ってもOKでした。 実際のアプリでは正しくURLを指定する必要があります。 つまりoauth/request_tokenをリクエストする時のoauth_callbackパラメータに入るurlを、Twitterの開発アカウントの設定画面のcallbackURLで設定したURLと一致していないとダメになりました。
TwitterのAPIでcallbackURLをチェックするようになった - Qiita
Callback URLについて公式Docs: Callback URLs | Docs | Twitter Developer Platform
Twitter OAuth 2.0について参考: Twitter OAuth2.0の設定や動作まとめ
Twitter OAuth 2.0設定の参考動画: How to Get Twitter API KEY and OAuth Client ID and Client Secret - YouTube
認証情報の設定が完了したら、API疎通テストを試してみる
これらの情報が確認できたら、実際のプログラミングに入る前にPostmanやThunder Clientを利用するなどして、API疎通テストを行なうことをオススメします。
Tweepyを使ってタイムラインを取得
Tweepyとは、Twitter APIを使いやすくしてくれるライブラリ。あくまで公式Twitter APIを介しています。
Tweepyについて参考: Twitterからユーザー情報の取得・スクレイピング。API利用で禁止事項をクリア
Tweepy:
本記事では、Tweepyを用いて、Twitter API v1を介して情報の取得・書き込みを行います。
Tweepyのインストール: Installation — tweepy 4.9.0 documentation
$ pip install tweepy
まず、jsonファイルを作成し、Twitter認証情報を格納します。
{
"consumer_key": "xxxxxxx",
"consumer_secret": "xxxxxxx",
"access_token": "xxxxxxxxxxx",
"access_token_secret": "xxxxxxxxxxxxxxx"
}
あとは、Getting started — tweepy 4.9.0 documentation を参考に下記。
import tweepy
import json
# jsonファイルの情報を読み取ってそれぞれ変数に格納
with open('twitter_key.json') as f:
twitter_keys = json.load(f)
consumer_key = twitter_keys['consumer_key']
consumer_secret = twitter_keys['consumer_secret']
access_token = twitter_keys['access_token']
access_token_secret = twitter_keys['access_token_secret']
# APIの認証: Twitter API v1の場合
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
# Twitterアカウントへの認証: Twitter API v1の場合
auth.set_access_token(access_token, access_token_secret)
# 認証を終えたアクセス情報を、apiというインスタンスで取得: Twitter API v1の場合
api = tweepy.API(auth)
Tweepyでタイムラインの情報を取得
Getting started — tweepy 4.9.0 documentation
API — tweepy 4.9.0 documentation
public_tweets = api.home_timeline()
for tweet in public_tweets:
print(tweet.text)
print('----------')
自分のアカウントに関する様々な情報を取得: .verity_credentials()
以下、すべてTwitter API v1を介して取得する方法です。
API — tweepy 4.9.0 documentation
# API.verify_credentials()で返ってきたUserオブジェクトをmeに格納
me = api.verify_credentials()
me.name
\\
'Nakata / まほウェブ'
戻り値の型としては、Userオブジェクトとして返ってくる。
いくつかの情報の例:
# アカウント作成日
me.created_at
\\
datetime.datetime(2018, 1, 11, 4, 15, 54, tzinfo=datetime.timezone.utc)
# プロフィール文
me.description
# フォロワー数
me.followers_count
\\
446
# フォロー数
me.friends_count
\\
1041
# フォロワーの情報をリストで取得。ただし20人が上限となる。
me.followers()
# 上記リストを利用して、最新フォロワーのプロフィール名のみ
me.followers()[0].name
\\
'T.Sax@組み込みエンジニア'
特定のユーザー情報を取得
get_user(user_id=, screen_name)
user_idまたはscreen_name、どちらかの引数は必須。
GET users/show | Docs | Twitter Developer Platform
- user_id : Twitterプロフィール画面でのユーザーIDとは異なり、Twitterがユーザーに一意に付与しているID番号。
- screen_name: こちらがいわゆる、Twitterプロフィール画面でのユーザーID。@以降のユーザー名を入力する。
# プロフィールのユーザー名から指定して情報を取得
elon = api.get_user(screen_name="elonmusk")
elon.followers_count
\\
93439249
# eitityを確認
elon.entities
\\
{'description': {'urls': []}}
# Twitterが付与しているユーザーIDを取得
elon.id
\\
44196397
# ユーザーIDで指定して情報を取得
elon = api.get_user(user_id="44196397")
elon.name
\\
'Elon Musk'
# 特定ユーザーのフォロワーのIDをまとめて取得するメソッド: follower_ids()
elon_followers_ids = elon.follower_ids()
print(elon_followers_ids[:3])
len(elon_followers_ids)
\\
[1526104716727291904, 1526105031564742656, 1526105159650009088]
5000
Tweepyを用いて自動ツイート
通常ツイート: .update_status()
API — tweepy 4.9.0 documentation
# 投稿したいテキストを引数にして投稿
api.update_status('Test Posting via API from Tweepy.')
もし、” Read-only application cannot POST. ” などのエラーメッセージが出たら、Twitter Dev APIのパーミッション・スコープなどを疑う。
パーミッション・スコープ設定を変更した場合には、アクセストークンの再発行が必要となる。
画像つきのツイート: .update_status_with_media()
API — tweepy 4.9.0 documentation
Parameters: ・status – The text of your status update. ・filename – The filename of the image to upload. This will automatically be opened unless file is specified.
api.update_status_with_media\
(status="Test Posting with Image from API.",\
filename="headliner_bg_1200.jpg")
自動いいねとRetweet
自動いいね: .create_favorite()
API — tweepy 4.9.0 documentation
いいねを押す先のTweet”id”を事前に取得する必要がある。
Tweet idは、単一のTweet画面のURL末尾。
例: https://twitter.com/island_coral57/status/1526065267566030848
この場合、1526065267566030848 がTweet idとなる。
tweet_id = '1526065267566030848'
# 上記IDの投稿にいいねを押す
api.create_favorite(tweet_id)
Retweet: .retweet()
API — tweepy 4.9.0 documentation
api.retweet(tweet_id)
検索した投稿すべてにいいね
Tweet・投稿を検索: .search_tweets()
API.search_tweets(q, *, geocode, lang, locale, result_type, count, until, since_id, max_id, include_entities)
API — tweepy 4.9.0 documentation
下記引数を指定して検索してみる。
・q – The search query string of 500 characters maximum, including operators. Queries may additionally be limited by complexity. ・lang – Restricts tweets to the given language, given by an ISO 639-1 code. Language detection is best-effort. ・count – The number of results to try and retrieve per page.
API — tweepy 4.9.0 documentation
lang: List of ISO 639-1 codes - Wikipedia
原因は不明ですが、 count= で指定した数が大きい場合、取得してくる要素の数と一致しない場合があります。
# 投稿を検索
python_queries = api.search_tweets(q="python", lang="en", count='3')
len(python_queries)
\\
3
# 取得した投稿のうち、最初の1つの投稿IDを取得
python_queries[0].id
# 個々の投稿IDを取得して、それぞれすべてにいいねを押す
for python_querie in python_queries:
query_id = python_querie.id
api.create_favorite(query_id)
この記事の気になった箇所を読み返す:
- Twitter API使用に必要な情報
- Twitter Developer Portal画面へ
- APIアクセスするための情報を確認
- User authentication settings
- 認証情報の設定が完了したら、API疎通テストを試してみる
- Tweepyを使ってタイムラインを取得
- Tweepyでタイムラインの情報を取得
- 自分のアカウントに関する様々な情報を取得: .verity_credentials()
- 特定のユーザー情報を取得
- Tweepyを用いて自動ツイート
- 通常ツイート: .update_status()
- 画像つきのツイート: .update_status_with_media()
- 自動いいねとRetweet
- 自動いいね: .create_favorite()
- Retweet: .retweet()
- 検索した投稿すべてにいいね
- Tweet・投稿を検索: .search_tweets()
Category: 開発・プログラミング | エンジニアリング