前回まででXの設定が終わりました。
早速自動化スクリプトを作っていきたいのだが、なにをどう使えばいいのかよくわからなくなったので、ChatGPTを使って整理してみる事にした。
結論から言うと4つのKeyを使えばよくOAuthはいらないようだ
どの情報を使って投稿すればいいか?
簡単な自動投稿をする場合
- API Key
- API Key Secret
- Access Token
- Access Token Secret
この4つを使用してOAuth 1.0a認証を行い、Xに投稿することができます。
OAuth 2.0を使う場合
- Client ID
- Client Secret
- (場合によってはAccess Tokenも使用)
OAuth 2.0を使う場合は、アクセストークンを取得するための追加の手続きが必要です。個人での自動投稿なら、OAuth 1.0aのAccess Tokenを使うのが手軽です。
それでは早速スクリプトを作っていく
import tweepy
# 取得した各種キーとトークンを設定
API_KEY = "あなたのAPIキー"
API_SECRET = "あなたのAPIキーシークレット"
ACCESS_TOKEN = "あなたのアクセストークン"
ACCESS_TOKEN_SECRET = "あなたのアクセストークンシークレット"
# 認証を設定
auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
# APIインスタンスを作成
api = tweepy.API(auth)
# ツイートを投稿
tweet_text = "こんにちは、Pythonからの自動投稿です!"
api.update_status(tweet_text)
print("ツイートを投稿しました!")
実行したところエラーになる
Unauthorized: 401 Unauthorized
89 – Invalid or expired token.
再度確認してみるとXのAPIのバージョンによって、tweepy.API(auth)
の認証方式が変更されているようだ。以下のスクリプトを再度作成してもらった。
import tweepy
# APIキーとトークン
API_KEY = "あなたのAPIキー"
API_SECRET = "あなたのAPIキーシークレット"
ACCESS_TOKEN = "あなたのアクセストークン"
ACCESS_TOKEN_SECRET = "あなたのアクセストークンシークレット"
# OAuth1.0a認証
client = tweepy.Client(
consumer_key=API_KEY,
consumer_secret=API_SECRET,
access_token=ACCESS_TOKEN,
access_token_secret=ACCESS_TOKEN_SECRET
)
# ツイートを投稿
response = client.create_tweet(text="こんにちは、Pythonからの自動投稿です!")
print(f"ツイートが投稿されました: {response.data}")
これでうまくいくことが分かった。APIキーとトークンを別ファイルにしておきたいので、その変更を実施する。
config.py
を作成し、以下のように記述します。
API_KEY = "あなたのAPIキー"
API_SECRET = "あなたのAPIキーシークレット"
ACCESS_TOKEN = "あなたのアクセストークン"
ACCESS_TOKEN_SECRET = "あなたのアクセストークンシークレット"
そして、スクリプトから呼び出す様に変更
import tweepy
import config # 作成したconfig.pyをインポート
# 認証を設定
client = tweepy.Client(
consumer_key=config.API_KEY,
consumer_secret=config.API_SECRET,
access_token=config.ACCESS_TOKEN,
access_token_secret=config.ACCESS_TOKEN_SECRET
)
# ツイートを投稿
response = client.create_tweet(text="Pythonからの自動投稿!")
print(f"ツイートが投稿されました: {response.data}")
別ファイルにして実行する方法は他にもいろいろあるようですが、いったんこのやり方でOKにします。
コメント