[Python] X APIを使ってみる

Python

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

X APIの利用

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

X API利用申請

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

以下のようなページが表示されるので、画面上の「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画面に遷移します。

APIアプリケーション設定

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

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

画面を下にスクロールすると、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をRegenerateします。

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

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

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

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

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

ツイートをポストする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上に正しくポストされていることを確認できます。

その他

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

コメント

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