[Python] X APIを使ってみる

Python

以前はTwitterでのAPI申請について書きましたが、
Xになってから色々変わっていますので、
API申請からPythonプログラムによるポストまでを改めてまとめておきます。

X APIの利用

Xアカウントが存在する状態で、まずはX APIの利用申請を行います。

りお
りお

難しくないので心配しなくて大丈夫です。

X API利用申請

X Developer Platformにアクセスします。

X API | Products
Use the X API to analyze, learn from, and interact with posts, Direct Messages, and users. Scale your access to grow, ex...

画面右上の「Developer Portal」をクリックします。

どのプランを選択するか聞かれますので、画面下部にある「Sign up for Free Account」をクリックします。
有償のBasicまたはProを選択することで、Freeだと利用することができないツイートの検索などを行うことができます。
まずは無償のFreeでいいと思います。

ポリシー同意書へのチェックが求められますが、XのデータやAPIをどんな目的で使いたいか記載する必要があります。
詳しく書く必要はなさそう(即時承認されるので)ですが、特に考えたくない人は以下を入力してくれれば大丈夫です。

I would like to use Twitter's API to automatically display articles posted on my website on my Twitter timeline. Content will be automatically displayed on Twitter's timeline about once a day. Content from Twitter will not be retrieved using the Twitter API and displayed on anything other than Twitter.

すべてのチェックボックスにチェックして、「Submit」をクリックします。

Developer Portal画面に遷移します。

ここまででX API利用申請は完了です。
次に実際にアプリケーションでAPIを使うための設定を行っています。

  • 中学生、高校生向けのプログラミングスクール
  • アプリ甲子園やUnityインターハイ等でのコンテスト受賞者多数
  • 難関校の総合型選抜(AO入試)合格者多数
  • ピッチコンテスト受賞者、起業家も輩出

APIアプリケーション設定

画面左のProjects & Appsを展開し、Default project配下のアプリを選択します。
User authentication settingsの「Set up」をクリックします。

App permissions設定画面が表示されます。
デフォルトはReadが選択されていると思いますので、「Read and write and Direct message」にチェックします。
この設定によって、これから実行するPythonプログラムがツイートの読み書きを実行できるようになります。
Readのみの場合はツイートを読むことしかできませんので、ポストをする場合はWrite権限が必要になります。

画面を下にスクロールすると、Type of App設定画面が表示されますので、「Web App, Automated App or Bot」にチェックします。

さらに画面を下にスクロールすると、App info設定画面が表示されます。
Callback URIやWebsite URLの入力が必須になりますので、「https://x.com/」と入力しましょう。

最後に画面一番下の「Save」をクリックします。

権限変更によるアプリケーション影響が問題ないか聞かれますので、「Yes」をクリックします。

Client IDとClient Secretを提示されますが、今回のPythonプログラムでは不要なので、そのまま「Done」をクリックします。
必要な時に改めて再設定(Regenerate)できます。

Client Secretも保存するように求められますが、一旦無視して「Yes, I saved it」をクリックします。

Developer Portal画面に戻ってきますので、User authenticationが設定済みであることを確認します。

  • 外国人エンジニアから直接学べる
  • 現役エンジニア/エンジニア経験者から学ぶことで、「専門的な知識を専門家から学ぶこと」ができる
  • 質の高いプログラミング学習が可能 ・多国籍展開するソフトウェア開発会社が監修
  • 多くのプログラミング言語を学ぶことができ、学びの選択肢が広く、幅広い成長のサポートが可能

キーおよびトークンの取得

次にPythonプログラムで使用する各種キーとトークンを取得します。
「Keys and tokens」をクリックします。

まずはConsumer Keysにある「Regenerate」をクリックします。

確認画面が表示されますので、「Yes, regenerate」をクリックします。
確認画面が出てくる理由は、再設定してしまうと、今まで動いていたアプリケーションに影響を与える可能性があるためです。

API KeyとAPI Key Secretが表示されますので、「Copy」してメモ帳などに控えておきます。
一度しか表示されませんので、見逃してしまった場合は、再度Regenerateを実行すれば大丈夫です。
控え終わったら、「Yes, I saved them」をクリックします。

次にAuthentication TokenにあるBearer Tokenを「Generate」します。

先程と同様にメモ帳などにBearer Tokenを控えて、「Yes, I saved it」をクリックします。

次にAuthentication TokenにあるAccess Token and Secretを「Generate」します。

こちらも同様に、Access TokenとAccess Token Secretを「Copy」してメモ帳などに控えて、「Yes, I saved them」をクリックします。

Access Token and Secreteの生成が完了すると、読み書きの権限(ReadとWrite)が付与されていることを確認できます。

ここまでがX APIの申請からキーおよびトークンの取得になります。

りお
りお

おつかれさまでした。
アプリケーションからX APIを利用できる準備は整いましたので、
実際にプログラムを作っていきましょう!

  • サブスクリプション型プログラミングスクール
  • 入会金は0円!いつでも気軽にはじめることができる
  • 月額10,780円(税込)でHTML、PHP、Javaなどのカリキュラムが学び放題
  • 現役エンジニアの講師へチャット質問し放題で、未経験からスキルアップを考えている方におすすめ

ツイートをポストするPythonプログラム

Xにツイートを投稿するだけのシンプルなプログラムを作成していきます。

tweepyパッケージのインストール

tweepyパッケージを利用しますので、適宜インストールします。
自分の環境ではtweepyパッケージが古かったので、アップデートを実行しました。

$ pip install --user -U tweepy
Requirement already satisfied: tweepy in /home/c9320144/.local/lib/python3.6/site-packages (4.1.0)
Collecting tweepy
  Downloading tweepy-4.6.0-py2.py3-none-any.whl (69 kB)
     |################################| 69 kB 21.6 MB/s
Requirement already satisfied: requests-oauthlib<2,>=1.2.0 in /home/c9320144/.local/lib/python3.6/site-packages (from tweepy) (1.3.0)
Collecting oauthlib<4,>=3.2.0
  Downloading oauthlib-3.2.2-py3-none-any.whl (151 kB)
     |################################| 151 kB 119.9 MB/s
Collecting requests<3,>=2.27.0
  Downloading requests-2.27.1-py2.py3-none-any.whl (63 kB)
     |################################| 63 kB 8.7 MB/s
Requirement already satisfied: charset-normalizer~=2.0.0 in /home/c9320144/.local/lib/python3.6/site-packages (from requests<3,>=2.27.0->tweepy) (2.0.7)
Requirement already satisfied: idna<4,>=2.5 in /home/c9320144/.local/lib/python3.6/site-packages (from requests<3,>=2.27.0->tweepy) (3.3)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/c9320144/.local/lib/python3.6/site-packages (from requests<3,>=2.27.0->tweepy) (1.26.7)
Requirement already satisfied: certifi>=2017.4.17 in /home/c9320144/.local/lib/python3.6/site-packages (from requests<3,>=2.27.0->tweepy) (2021.10.8)
Installing collected packages: requests, oauthlib, tweepy
  Attempting uninstall: requests
    Found existing installation: requests 2.26.0
    Uninstalling requests-2.26.0:
      Successfully uninstalled requests-2.26.0
  Attempting uninstall: oauthlib
    Found existing installation: oauthlib 3.1.1
    Uninstalling oauthlib-3.1.1:
      Successfully uninstalled oauthlib-3.1.1
  Attempting uninstall: tweepy
    Found existing installation: tweepy 4.1.0
    Uninstalling tweepy-4.1.0:
      Successfully uninstalled tweepy-4.1.0
Successfully installed oauthlib-3.2.2 requests-2.27.1 tweepy-4.6.0

ソースコード

こちらのプログラムでXにツイート(Hello World)をポストできます。
API_KEY,API_SECRET,BEARER_TOKEN,ACCESS_TOKEN,ACCESS_TOKEN_SECRETは、取得したキーおよびトークンを入力してください。

import tweepy

API_KEY = 'XXXXXXXXXX'
API_SECRET = 'XXXXXXXXXX'
BEARER_TOKEN = 'XXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXXXX'

client = tweepy.Client(bearer_token=BEARER_TOKEN,
                       consumer_key=API_KEY,
                       consumer_secret=API_SECRET,
                       access_token=ACCESS_TOKEN,
                       access_token_secret=ACCESS_TOKEN_SECRET)

client.create_tweet(text='Hello World')

実行結果

実行結果はこのようになります。

>>> client.create_tweet(text='Hello World')
Response(data={'id': '1846181077259616679', 'edit_history_tweet_ids': ['1846181077259616679'], 'text': 'Hello World'}, includes={}, errors=[], meta={})

Pythonプログラムを実行すると、X上に正しくポストされていることを確認できます。

このコードをスクリプト化して、cronなどでスケジュール実行できれば、自動で定期的にポストするプログラムを作成できます。

りお
りお

自宅PCで定期的に実行しようとすると常時起動しておかないといけないので、
サーバをレンタルすることをおススメます。

その他

Xになってから仕様が色々変わっており、FreeではX APIによるツイート検索ができなくなっています。
Freeでできるのはポストのみで、Twitter時代はできていたことができなくなっていて躓きました。

コメント

タイトルとURLをコピーしました