見出し画像

APIからXにポストしてみた(テキスト/画像)

API経由でXにテキストまたはテキスト+画像をポストする方法(Python)を紹介します。

この情報は2024年7月時点のものです。


前準備: API Keyの取得

取得できるAPI Keyは以下の全7種です。今回使わないものもありますが、一応すべて記録しておくことをオススメします。

  • Consumer API Key

  • Consumer API Secret

  • Client ID

  • Client Secret

  • Bearer Token

  • Access Token

  • Access Token Secret

取得方法は割愛しますが、そんなに難しくないです。APIで投稿したいXのアカウントでX Developer Platformにログインして、アプリ開発の画面に表示されるAPI Key達を表示して記録するだけです。以下の2つの記事を参考にすれば簡単に取得できると思います。

テキストをポストする

コードは以下の通りです。めっちゃ簡単。

import tweepy
import os

api_key = os.environ["X_API_KEY"]
api_key_secret = os.environ["X_API_KEY_SECRET"]
bearer_token = os.environ["X_BEARER_TOKEN"]
access_token = os.environ["X_ACCESS_TOKEN"]
access_token_secret = os.environ["X_ACCESS_TOKEN_SECRET"]

client = tweepy.Client(
    bearer_token=bearer_token,
    consumer_key=api_key,
    consumer_secret=api_key_secret,
    access_token=access_token,
    access_token_secret=access_token_secret
)

content = "テキスト"

client.create_tweet(text=content)

自分の場合は各API Keyを環境変数に設定しているので、

api_key = os.environ["X_API_KEY"]

みたいな書き方をしていますが、よく分からない人はAPI Keyの内容をベタ打ちしても良いと思います。(他人にKeyがバレないように注意!)

テキスト+画像をポストする

テキストをポストする際に用いたのはv2 APIというやつなんですが、これだけだと画像のポストはできないようです。じゃあどうすればいいのかと言うと、以下のようにv1 APIとv2 APIを組み合わせて使用する必要があります。

# Twitter API credentials
consumer_key = os.environ["X_API_KEY"]
consumer_secret = os.environ["X_API_KEY_SECRET"]
access_token = os.environ["X_ACCESS_TOKEN"]
access_token_secret = os.environ["X_ACCESS_TOKEN_SECRET"]

# Authenticate Twitter API
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

# Create API object
api = tweepy.API(auth)
client = tweepy.Client(
    consumer_key=consumer_key,
    consumer_secret=consumer_secret,
    access_token=access_token,
    access_token_secret=access_token_secret)

# Attach image and message to tweet
message = "テキスト"

media = api.media_upload(filename="画像ファイルのパス")
client.create_tweet(text=message, media_ids=[media.media_id])

まあ別にそんな難しいことやってるわけではないです。v1 APIで画像ファイルをアップロード&メディアIDを取得して、v2 APIでテキストと合わせてポストするイメージです。

皆さんもAPIを使って快適なXライフをお過ごしください~!

この記事が気に入ったらサポートをしてみませんか?