twitterapi-python_アイキャッチ

【Twitter API】PythonからTiwtterを操作する方法

はじめに

前回、Twitter APIを利用するために申請方法をまとめました。
前回の記事はこちら↓
関連記事

はじめに Twitter APIを使ってプログラムからツイート内容を取得したり、自動でつぶやいたり、いいねやリツイートしたりすることができます。 このAPIを利用したい場合、Twitterで申請を行う必要があるため[…]

twitterapi_アイキャッチ
今回は実際にTwitter APIをプログラミング言語のPythonから使用してTwitterを操作する方法をまとめます。
動作環境

 Windows10

 Docker Desktop

 Python 3.11.0

検証環境について

Twitter APIおよびPythonを利用するにあたって、Dockerに最新のPythonイメージをダウンロードしてコンテナとして起動します。

Dockerのインストール方法は以下の記事で紹介しています。
関連記事

はじめに プログラミングを行う際に実行環境を構築する必要がありますが、普段利用しているローカルPCに直接インストールしてしまっては、トライアンドエラーを繰り返すうちに不要なアプリケーションが積み重なり動作が不安定にな[…]

begindocker_アイキャッチ
また、Dockerコンテナはdocker-composeで構築しVSCodeでコマンド操作およびプログラム作成を行っています。
docker-composeの使い方はこちら↓
関連記事

はじめに これまでDockerで仮想環境を作成して開発環境を簡単に構築する方法をまとめてきましたが、実際のサービスとしてプログラミング開発を行うとなった場合にコンテナ一つで進めるのはまれです。 例えば、このブログは[…]

docker-compose_アイキャッチ
VSCodeのインストール方法はこちら↓
関連記事

はじめに 皆さんはプログラミングを行う際にエディターは何を使っていますでしょうか? 秀丸エディタ?、NotePad++?、サクラエディタ?、それともメモ帳でしょうか? Linuxの人はviやvim、emacsなど[…]

vscode_アイキャッチ

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を使ったプログラミングを行う際は参照してください。

まとめ

Twitter APIの利用方法の例としてPythonを使ってプログラムからタイムラインを取得してみました。
現在このブログでは、一週間のうちに投稿した記事をお知らせするためのURLを自動でツイートしています。その実装内容についてもいずれまとめていきますね。
Pythonのプログラミング言語についてより詳しく知りたい方は以下のような書籍を参考にしてみてください。
スッキリわかるPython入門 (スッキリわかる入門シリーズ)
著者:国本大悟 (著), 須藤秋良 (著), 株式会社フレアリンク (監修)
出版社:インプレス
はじめての人・つまずいた人・納得したい人のための入門書。サクサク進めてしくみもバッチリ!プログラミングの「本質」を身に付け未来への道を切り拓こう!業務自動化、データサイエンス、人工知能、アプリ開発プログラマへの第一歩!出典:Amazon
入門 Python 3 第2版
著者:Bill Lubanovic (著), 鈴木 駿 (監修), 長尾 高弘 (翻訳)
出版社:オライリージャパン; 第2版
データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。本書は、ベストセラー『入門 Python 3』の6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。Python 3.9に対応し、f文字列などの新機能も追加され大幅にボリュームアップしました。Pythonの機能をひと通り網羅し、リファレンスとしても便利です。出典:Amazon
たった1日で基本が身に付く! Docker/Kubernetes超入門
著者:伊藤 裕一 (著)
出版社:技術評論社
本書は、次世代のアプリケーションアーキテクチャとして注目されている「マイクロサービス」の技術基盤となるコンテナ技術「Docker」とコンテナオーケストレーション技術「Kubernetes」を取り上げ、Dockerの基本的な利用法、DockerfileやComposeの設計、コンテナのデータ永続化やCI/CD、Kubernetesによる複数コンテナの自動管理までを、一気に学習します。出典:Amazon