画像をする bot を運用していたが Twitter API のバージョン変更の影響で画像付きツイートができなくなった。
2023/08現在、画像付きのツイートをするにはまず Twitter に画像をアップロードしてから画像のIDを指定してツイートする必要がある。画像のアップロードには API v1 を使う必要がある。
画像アップロードのサンプルコード
tewepy.API を使用することで API v1 でアップロードすることができる。
import tweepy auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api_v1 = tweepy.API(auth) api.media_upload(filename="path/to/image.png")
画像付きツイートをするサンプルコード
API v1 でアップロードしたレスポンスから media_id を取り出し、tweepy.Client で API v2 を使ってツイートすることができる。
import tweepy
api_v2 = tweepy.Clien(
    consumer_key = CONSUMER_KEY,
		consumer_secret = CONSUMER_SECRET,
		access_token = ACCESS_TOKEN,
		access_token_secret = ACCESS_TOKEN_SECRET
)
media = api.media_upload(filename="path/to/image.png")
api_v2.create_tweet(text="ツイート本文", media_ids=[media.media_id])
URL を指定して画像をアップロードするサンプルコード
上記のような方法を選んだ場合、ローカルにある画像ファイルのパスを指定する必要がある。つまり、URL を直接指定してツイートすることができない。URL を指定してツイートしたい場合は一度画像をダウンロードする必要がある。
import os
import requests
def upload(url):
    filename = os.path.basename(url)
		request = requests.get(url, stream=True)
		if request.status_code == 200:
		    with open(filename, 'wb') as image:
				    for chunk in request:
						    image.write(chunk)
				media = api_v1.media_upload(filename)
				os.remove(filename)
				return(media.media_id)
		else:
		    # do something
      
 
  
  
  
  
