cojimaru BLOG

エンジニア支援のために技術情報を発信するブログ

pythonでTwitter APIを使ってみた

f:id:cojimaru-chan:20210225012522p:plain

はじめに

どうも、こじまるです。
Twitterの情報を解析してみたい、自動で投稿してみたい』などと悩んでいませんか?そんな方に向けて、pythonを使ってTwitter APIで自動投稿、指定ワードで検索する』ための方法を記事にまとめました。

この記事をみてわかること

本記事で紹介する方法を実践すれば、pythonを使ってTwitterに投稿すること、指定ワードでの検索をすることができます。

f:id:cojimaru-chan:20210224203009j:plain
pythonを使ってTwitterの自動投稿

Twitter APIを使ってみた

Twitter APIとは

Twitter APIとは、Twitterが提供しているWeb APIになります。Twitter APIを通して、Tweetの投稿やTweetされた情報の取得などができます。

Twitter APIの始め方

Twitter APIの始め方
  • 1.Twitter Developerの登録
  • 2.アプリケーションの登録
  • 3.API Keyの発行

上記手順は説明を割愛させていただきます。下記記事に詳細に書かれていますので、こちらを参照ください。
digitalnavi.net

Twitter APITweetを投稿する方法

環境設定

pythonTwitter APIをコールするために、requestsを使用します。requestsがインストールされていない場合にはpipを使ってインストールしてください。

pip install requests
Twitter APITweetの投稿

Tweetを投稿するAPIとして、下記を使用します。APIの仕様書はこちらから確認できます。


TweetはOAuth1.0aで認証します。下記のようにTokenを取得しました。

""" settings.py """
ACCESS_TOKEN = "xxxxxxxxxxxx-xxxxxxxxxxxx"
ACCESS_TOKEN_SECRET = "xxxxxxxxxxxx"
CONSUMER_KEY = "xxxxxxxxxxxx"
CONSUMER_SECRET = "xxxxxxxxxxxx"


認証のために、OAuth1Sessionを使用します。

import requests
from requests_oauthlib import OAuth1Session

twitter = OAuth1Session(settings.CONSUMER_KEY,settings.CONSUMER_SECRET,settings.ACCESS_TOKEN,settings.ACCESS_TOKEN_SECRET)


リクエストの型はAPIの仕様に合わせて実装しました。

message = "Twitter API test"
params = {"status":message}
endpoint = "https://api.twitter.com/1.1/statuses/update.json"
res = twitter.post(endpoint,params=params)
ソースコード

全体のソースコードは下記の通りです。

import json
import requests
import settings
from requests_oauthlib import OAuth1Session

if __name__ == '__main__':
    message = "Twitter API test"
    params = {"status":message}
    endpoint = "https://api.twitter.com/1.1/statuses/update.json"
    twitter = OAuth1Session(settings.CONSUMER_KEY,settings.CONSUMER_SECRET,settings.ACCESS_TOKEN,settings.ACCESS_TOKEN_SECRET)
    res = twitter.post(endpoint,params=params)
    json_res = res.json()
    print(json.dumps(json_res,indent=4,sort_keys=True,ensure_ascii=False))
実行結果

Twitter APIを通して、Twitterに自動投稿することができました。
f:id:cojimaru-chan:20210224203009j:plain

Twitter APITweetを検索する方法

Twitter APITweetの検索

最近のTweetを検索するAPIを使用します。


Bearer Tokenが使用できるので、そちらを使用します。

bear_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
headers = {"Authorization":"Bearer {}".format(bear_token)}


今回はPython』を文字列に含むTweetを検索するようにしました。

query = "Python -is:retweet"
tweet_fields = "tweet.fields=author_id"
endpoint = "https://api.twitter.com/2/tweets/search/recent?query={}&{}".format(query,tweet_fields)
res = requests.get(endpoint,headers=headers)
ソースコード

全体のソースコードは下記の通りです。

import json
import requests
import settings
from requests_oauthlib import OAuth1Session

if __name__ == '__main__':
    bear_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    headers = {"Authorization":"Bearer {}".format(bear_token)}

    query = "Python -is:retweet"
    tweet_fields = "tweet.fields=author_id"
    endpoint = "https://api.twitter.com/2/tweets/search/recent?query={}&{}".format(query,tweet_fields)
    res = requests.get(endpoint,headers=headers)
    json_res = res.json()
    print(json.dumps(json_res,indent=4,sort_keys=True,ensure_ascii=False))
実行結果

下記が実行結果になります。事前に投稿したTweetが取得できることが確認できました。
f:id:cojimaru-chan:20210224222115j:plain

f:id:cojimaru-chan:20210224230555j:plain
事前に投稿したTweet

まとめ

最後に、ご紹介した内容をおさらいしていきます。
pythonTwitter APIを使用することで、下記のようなことが実現できます。

Tweetの自動投稿
Tweetの検索


ご紹介した内容を実践すれば、初心者の方でもpythonを使ってTweetの自動投稿、Tweetの検索などを行うことができます。pythonでLINE notifyを使用した自動投稿の記事も書いていますので、ぜひ見てください。
cojimaru-chan.hatenablog.com