目次
はじめに
はじめに Twitter APIを使ってプログラムからツイート内容を取得したり、自動でつぶやいたり、いいねやリツイートしたりすることができます。 このAPIを利用したい場合、Twitterで申請を行う必要があるため[…]
Windows10
Docker Desktop
Python 3.11.0
検証環境について
Twitter APIおよびPythonを利用するにあたって、Dockerに最新のPythonイメージをダウンロードしてコンテナとして起動します。
はじめに プログラミングを行う際に実行環境を構築する必要がありますが、普段利用しているローカルPCに直接インストールしてしまっては、トライアンドエラーを繰り返すうちに不要なアプリケーションが積み重なり動作が不安定にな[…]
はじめに これまでDockerで仮想環境を作成して開発環境を簡単に構築する方法をまとめてきましたが、実際のサービスとしてプログラミング開発を行うとなった場合にコンテナ一つで進めるのはまれです。 例えば、このブログは[…]
はじめに 皆さんはプログラミングを行う際にエディターは何を使っていますでしょうか? 秀丸エディタ?、NotePad++?、サクラエディタ?、それともメモ帳でしょうか? Linuxの人はviやvim、emacsなど[…]
Twitter APIを利用するための事前準備
Twitter APIをPythonから利用するために、Pythonイメージを作成します。
Pythonコンテナの準備
Pythonの最新イメージを利用します。また、作業ディレクトリとして/workspaceを作成し、さらに/workspace/srcにソースコードを格納していきます。ローカルPCのカレントディレクトリとコンテナンの/workspaceを共有しています。
version: "3"
services:
app:
restart: always
image: python:latest
# build: .
container_name: "twitterapi-python"
working_dir: "/workspace/src"
tty: true
volumes:
- .:/workspace
docker-compose.ymlが準備できたらコンテナを起動します。
docker-compose up -d
起動完了したら、コンテナのbashを起動してコマンド操作できるようにします。
docker exec -it twitterapi-python bash
コンテナ操作できるようになったら、念のためパッケージを最新化しておきます。
apt update -y && apt upgrade -y && apt autoremove -y
Pythonのバージョン確認とpipの最新化も行っておきます。
python -V
Python 3.11.0
pip install -U pip
pip install -U setuptools
Twitter APIの利用方法
Twitter APIをPythonから利用する場合、tweepyというライブラリを使います。
tweepyのインストール
pipでtweepyをインストールします。
pip install tweepy
インストール結果を確認します。
pip list
Package Version
------------------ ---------
certifi 2022.9.24
charset-normalizer 2.1.1
idna 3.4
oauthlib 3.2.2
pip 22.3
requests 2.28.1
requests-oauthlib 1.3.1
setuptools 65.5.0
tweepy 4.12.0
urllib3 1.26.12
wheel 0.37.1
tweepy 4.12.0がインストールされていることが確認できます。また、ほかの依存ライブラリも自動的にインストールされています。
Twitter APIの基本コード
ここからは実際にPythonでTiwtter APIを利用するためのプログラムコードをまとめていきます。
APIを利用するためにはTwitterアカウントの認証を行うために、利用申請時に取得した以下の4つのコードが必要となります。
- API Key
- API Key Sercret
- アクセストークン
- アクセストークンシークレット
では、APIを利用するための認証コードが準備できたら、それぞれに実際にAPIを利用するための基本コードを作成します。
import tweepy
#twetter接続情報
CONSUMER_KEY = '*****' # API Key
CONSUMER_SECRET = '*****' # API Key Sercret
ACCESS_TOKEN = '*****' # アクセストークン
ACCESS_SECRET = '*****' # アクセストークンシークレット
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
*****となっている部分を、取得した認証用のコードに置き換えます。
これで、利用申請したアカウントでPythonからTwitterを操作することができます。
Twitter APIでツイート情報を取得する
Twitter APIを利用する例としてAPIを使ってあるアカウントのタイムラインの内容を取得してみましょう。
import tweepy
def main():
#twetter接続情報
CONSUMER_KEY = '*****' # API Key
CONSUMER_SECRET = '*****' # API Key Sercret
ACCESS_TOKEN = '*****' # アクセストークン
ACCESS_SECRET = '*****' # アクセストークンシークレット
#twetter認証
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
#取得対象
Account = "misukeblog64"
#ツイート取得
tweets = api.user_timeline(screen_name=Account, count=1, page=1, tweet_mode="extended")
tweet = tweets[0]
print('twid : ', tweet.id) # tweetのID
print('user : ', tweet.user.screen_name) # ユーザー名
print('date : ', tweet.created_at) # 呟いた日時
print(tweet.full_text) # ツイート内容
print('favo : ', tweet.favorite_count) # ツイートのいいね数
print('retw : ', tweet.retweet_count) # ツイートのリツイート数
for url_obj in tweet.entities["urls"]:
print('URL : ', url_obj["url"]) # ツイート内のURL(短縮URL)
print(' expanded_url : ', url_obj["expanded_url"]) # ツイート内のURL(元のURL)
print(' display_url : ', url_obj["display_url"]) # ツイート内のURL(表示されるURL)
return
if __name__ == "__main__":
main()
14行目まではTwitter APIに接続するための認証情報の設定を行っています。
#取得対象
Account = "misukeblog64"
タイムラインを取得するアカウントのIDを指定します。ここでは、本ブログのアカウントIDを指定しています。
#ツイート取得
tweets = api.user_timeline(screen_name=Account, count=1, page=1, tweet_mode="extended")
api.user_timeline()を実行することでタイムラインを取得することができます。
パラメータには取得するアカウントIDやツイート数などを記載します。tweet_mode=”extended”を指定しないと、ツイート内部のURLがツイート文字数上限を超える場合に短縮化されたものが返却されてしまいます。それを防ぐためにextendedを指定しています。
今回はタイムラインのうち最新のツイート1件を取得するようにしております。
tweet = tweets[0]
print('twid : ', tweet.id) # tweetのID
print('user : ', tweet.user.screen_name) # ユーザー名
print('date : ', tweet.created_at) # 呟いた日時
print(tweet.full_text) # ツイート内容
print('favo : ', tweet.favorite_count) # ツイートのいいね数
print('retw : ', tweet.retweet_count) # ツイートのリツイート数
for url_obj in tweet.entities["urls"]:
print('URL : ', url_obj["url"]) # ツイート内のURL(短縮URL)
print(' expanded_url : ', url_obj["expanded_url"]) # ツイート内のURL(元のURL)
print(' display_url : ', url_obj["display_url"]) # ツイート内のURL(表示されるURL)
api.user_timeline()を実行するとツイートの配列で返却されます。今回は、1件のみ取得しているので、インデックス0の内容をtweetとして取得しています。
実際にこのPythonプログラムコードを実行すると以下のように情報が取得できます。
twid : 1587823070550507520
user : misukeblog64
date : 2022-11-02 15:04:55+00:00
Twitter APIの利用申請手順をまとめました。
プログラムからツイートなどを行う際は申請が必要になるので参考にしてください。
#ブログ更新のお知らせ
#プログラミング初心者
#駆け出しエンジニアと繋がりたい
#TwitterAPI
https://t.co/cjvQD8IPwI
favo : 8
retw : 1
URL : https://t.co/cjvQD8IPwI
expanded_url : https://mi-sukeblog.com/it/utility/twitterapi/
display_url : mi-sukeblog.com/it/utility/twi…
Twitter APIを利用してできること
例としてタイムラインを取得する方法を取り上げましたが、ほかに「ツイートする」「いいね!する」「リツイートする」「フォローする」「フォロー解除する」「DMを送信する」といった、普段、Twitterのアプリ等からできることは一通り行うことができます。
それぞれのAPIの利用方法についてはtweepyのリファレンスに乗っていますので、本格的にTwitter APIを使ったプログラミングを行う際は参照してください。
まとめ
出版社:インプレス
出版社:オライリージャパン; 第2版
出版社:技術評論社