【無料】PythonでTwitterAPIによる画像付きツイートの実現方法

 

【悩み】
・Twitterに画像付きツイートをPythonでしたい!できる限り無料で…
・TwitterのAPIを使えば良い?お金はかかるのだろうか?
・ちなみにWeb上にある画像や動画が付いたツイートも投稿できる?



こういった「悩み」に答えます。
 

【本記事の内容】
① そもそもTwitterの画像付きツイートとは?
➁ Pythonで画像付きツイートを実現する方法3選
➂ PythonからTwitter APIを使って画像付きツイートする手順
④ 画像付きツイートに関するよくある質問(FAQ)



本記事に掲載した手順を実践したことで、Twitter APIを使いPythonからjpgやpng形式などの画像が付いたツイートを投稿できるようになりました(下の動画参照)。
 



記事の前半では「そもそも画像付きツイートとは何のことか」や「Pythonから画像付きツイートを実現する方法3選」を解説します。

記事の後半では、「Twitter APIの無料プランで画像付きツイートを実現するPythonプログラムの作り方」や「動画も投稿できる?といったよくある質問やエラー」を説明します。
  

この記事を読み終えることで、「定期的に画像付きツイートを行えTwiterの運用負担を軽減できる」状態になります。
 

本ブログでは、Twitter APIなしでPythonから様々なTwitter操作を自動化する方法をご紹介しています。その他の操作自動化を知りたい方は、以下の記事をご覧ください。

>> 【実例8選】APIなしでPythonでのTwitter操作を実現する方法


 

そもそもTwitterの画像付きツイートとは?


以下の順番で、Twitter(現X)の画像付きツイート(画像付きポスト)に関してご紹介します。
 

【ご紹介事項】
・実物でTwitterの画像付きツイートを理解
・画像付きでツイートする場面やメリットは?


 

実物でTwitterの画像付きツイートを理解

画像付きツイートとは、Twitter上でテキストメッセージと一緒に画像を投稿することを指します。通常のツイートが140文字までのテキストメッセージで構成されているのに対し、画像付きツイートはテキストメッセージと共に画像を含められます(下図参照)。
 



後ほど紹介する方法のいずれかを使うことで、以下の動画のように、Pythonから画像付きツイートを投稿できます。
 


 

画像付きでツイートする場面やメリットは?

Twitterの画像付きツイートは、以下のように様々な場面で活用することができます。
 

利用場面得られるメリット
製品やサービスのプロモーション画像付きツイートを使用して、新製品やサービスを視覚的に魅力的に紹介することで、ユーザーの興味を引きやすくなります。
キャンペーンの宣伝イベントやセールなどの特別なキャンペーンを宣伝する際に、目を引く画像を使って情報を伝えることができます。
出来事の報告ニュースやイベントの発生を画像で伝えることで、より具体的な情報を提供し、読者の関心を引きます。
体験の共有写真やイラストを使って、特別な瞬間や思い出、感情を伝えることができます。
手順の説明レシピ、技術的な手順などを画像を交えて解説することで、理解しやすくなります。



以上より、先ほどのようにプログラミング言語から「画像付きツイート」をすることで、以下のメリットを得られます。
 

【利点】
・Twitter運用の負担を軽減できる
・閲覧者に興味を持ってもらいやすくなりフォロワー数が増えやすくなる
・読者の興味を引くツイートができるため製品などの認知拡大に繋がる



PythonでTwitterに画像付きツイートすることで様々なメリットを得られます。そのため、本記事でご紹介する方法を把握することで損はないです。


 

Pythonで画像付きツイートを実現する方法3選


PythonでTwitterに画像付きツイートをしたい場合、本記事執筆時点では、以下の方法があります。それぞれの方法の概要を簡単にご紹介します。
 

【ご紹介事項】
・方法①:TwitterのAPI(Free以上)を利用
・方法➁:スクレイピングライブラリを使ってPythonスクリプトを自作
・方法➂:GUI自動化ライブラリを使ってPythonスクリプトを自作


 

方法①:TwitterのAPI(Free以上)を利用

Twitterには、「Twitter API」という仕組みがあり、この仕組みを使うことで、簡単にPythonなどのプログラミング言語からTwitterを操作できます。

Twitter APIには以下の4種類があり、Pythonから画像付きツイートをしたい場合、POST /2/tweetsのAPIを使う必要があるため、Free以上の選択が必要です。

そのため、本記事執筆時点では、無料でPythonからTwitterに画像付きツイートを投稿できます。
 

項目FreeBasicProEnterprise
料金無料$100/月$5000/月価格相談
できることTwitter API v2を使ったツイート作成や削除のみTwitter API v2の全機能Twitter API v2の全機能Twitter API v2の全機能
出典:Twitter APIについて(公式サイト)


各プランで操作可能な機能や単位時間当たりの制限回数などは、以下の記事で分かりやすくまとめられています。詳細を知りたい方は、以下をご覧ください。

>> Twitter APIの新料金体系の概要と制限(Rate-limits)のまとめ(外部サイト)
 

方法➁:スクレイピングライブラリを使ってPythonスクリプトを自作

Twitter APIなしで画像付きツイートをしたい場合、スクレイピングという技を使う方法があります。スクレイピングとは何かを知りたい方は、以下の記事の「スクレイピング(Scraping)とは?」箇所をご覧ください。定義などを詳しく解説しています。

>> Yahoo検索をスクレイピング(Python)する方法
 

ちなみに、Pythonでスクレイピングを実現できるライブラリとして、「BeautifulSoup」という有名なライブラリがあります。このライブラリを使うことで、Webページ内にあるボタンのクリックなどができるようになり、それらを応用することで画像付きツイートを行えます。

BeautifulSoupライブラリの使い方に関しては、以下の記事をご覧ください。

>> PythonでGoogle検索する方法【BeautifulSoup】
 

スクレイピングを使うメリットの一つとして、Twitter APIの登録作業の不要があります。またデメリットとして、Webページの見た目(UI)が変わった場合、自作したスクリプトが正常動作しない可能性があります。
 

方法➂:GUI自動化ライブラリを使ってPythonスクリプトを自作

Twitter APIなしで画像付きツイートをしたい場合、GUI自動化ライブラリを使う方法があります。

Pythonには、Webブラウザを操作できるライブラリがあります。以下のようなライブラリを使うことで、Pythonプログラム内でTwitterに画像付きツイートを行えます。
 

【GUI自動化ライブラリの一覧】
・PyAutoGUI(詳しくはこちら
・selenium(詳しくはこちら



GUI自動化ライブラリを使うメリットの一つとして、Twitter APIの登録作業の不要があります。またデメリットとして、Webページの見た目(UI)が変わった場合、自作したスクリプトが正常動作しない可能性があります。
 

以上が、画像付きツイートをPythonで実現する方法となります。ご自身にあった方法を選択しましょう。本記事ではTwitter APIを使う方法を以降で解説します。


 

PythonからTwitter APIを使って画像付きツイートする手順


PythonからTwitter APIを使って画像付きツイートする手順を以下の順番で説明します。本手順を順番に実施することで、画像付きツイートの自動化を実現できます。
  

【流れ】
手順1:Twitter APIのキーとアクセストークンを取得
手順2:Pythonをインストール
手順3:Pythonライブラリのtweepyをインストール
手順4:画像付きツイートのプログラムを作成
手順5:プログラムの定期実行(自動投稿)を設定


 

Twitter APIのキーとアクセストークンを取得

Twitter APIを使うためには、Twitter Develoverに登録し、キーとアクセストークンを取得する必要があります。

登録や取得手順に関しては、以下の記事をご覧ください。図を用いながら解説しています。

>>【図解】Twitter APIの申請手順【APIキーとトークン取得も解説】
 

Pythonをインストール

以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。

>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】

>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】

>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照

>> 【環境構築】インストーラーでMacOSにPythonをインストール

 

Pythonライブラリのtweepyをインストール

PythonでTwitterを操作できる有名なライブラリとして、tweepyがあります。本記事ではtweepyを使って、画像付きツイートを実現します。

tweepyのインストール手順に関しては、以下の「Pythonライブラリをインストール【Twitter投稿に必要】」箇所をご覧ください。

>> PythonからTwitterへ自動投稿(ツイート)する手順
 

画像付きツイートのプログラムを作成

画像付きツイートを実現するPythonプログラムは、以下となります。プログラム内の「適宜変更」に関しては、必要であれば書き換えてください。

import tweepy

# キーとアクセストークンの設定(適宜変更)
consumer_key ="1111"
consumer_secret ="2222"
access_token="3333"
access_token_secret ="4444"

# tweepyでTwitter API V1.1のオブジェクトを作成
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# tweepyでTwitter API V2.0のオブジェクトを作成
client = tweepy.Client(
  consumer_key = consumer_key,
  consumer_secret = consumer_secret,
  access_token = access_token,
  access_token_secret = access_token_secret
)

# 画像をTwitterにアップロード
image_path = 'sample.png' # Twitterにアップロードしたい画像ファイルのPATH(適宜変更)
media = api.media_upload(filename=image_path)

# 画像付きツイート
message = '投稿内容' # ツイートしたい内容(適宜変更)
client.create_tweet(text=message, media_ids=[media.media_id])



上記のプログラムを「tweet-with-image.py」というファイル名で保存しましょう。
 

【media_upload関数について】
・書き方
 api.media_upload(filename=Twitterにアップロードしたい画像のPATH)
・処理
 指定した画像をTwitterにアップロードしアップロードした画像のIDを返却
・参照
 media_upload関数のリファレンス(公式サイト)

 

【create_tweet関数について】
・書き方
 client.create_tweet(text=’テキスト’, media_ids=[‘画像のID’,…])
・処理
 指定した画像とテキストを投稿
・参照
 create_tweet関数のリファレンス(公式サイト)



以下のコマンドで、上記プログラムを実行できます。

python tweet-with-image.py


その結果、以下のようにTwitterに画像付きツイートを投稿できます(下の動画参照)。

 

プログラムの定期実行(自動投稿)を設定

作成したプログラムを定期実行したい場合、以下の方法があります。ご自身に適切な方法を選択しましょう。
 

【定期実行する方法】
・方法①:MacOSやLinuxの場合はcronを使う(詳しくはこちら)
・方法➁:Windowsの場合はタスクスケジューラーを使う
・方法➂:PythonのAPSchedulerライブラリを使う(詳しくはこちら)


  

以上の流れで、PythonからTwitter API使って画像付きツイートを実現できました。何か困ったことがありましたら、お気軽にお問い合わせください。


 

画像付きツイートに関するよくある質問(FAQ)


本記事でご紹介した画像付きツイートに関して様々な疑問があるかと思います。ここでは、以下の「よくある質問」や「疑問」に対して解説します。
 

【よくある質問や疑問の一覧】
・動画付きツイートは可能?
・Web上にある画像を使いたい場合は?
・次のエラー解消方法は?:Large file can not be finalized synchronously


 

動画付きツイートは可能?

本記事に掲載したプログラムを使うことで、動画付きツイートも可能です(下の動画参照)。具体的には、image_path部分に動画ファイルのPATHを設定してください。
 

Web上にある画像を使いたい場合は?

本記事に掲載したプログラムを少し修正することで、Web上にある画像を使って画像付きツイートを実現できます。具体的には、以下のようにrequestsライブラリ関連のソースコードを追加することで実現できます。

import tweepy
import requests

# キーとアクセストークンの設定(適宜変更)
consumer_key ="1111"
consumer_secret ="2222"
access_token="3333"
access_token_secret ="4444"

# tweepyでTwitter API V1.1のオブジェクトを作成
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# tweepyでTwitter API V2.0のオブジェクトを作成
client = tweepy.Client(
  consumer_key = consumer_key,
  consumer_secret = consumer_secret,
  access_token = access_token,
  access_token_secret = access_token_secret
)

# アップロードするファイルのPATH(適宜変更)
file_path = './data/file.jpg'

# ファイルダウンロードしパソコンに保存
url = "https://www.google.com/images/branding/googleg/1x/googleg_standard_color_128dp.png" # ダウンロードしたいファイルのURL(適宜変更)
response = requests.get(url)
image = response.content
with open(file_path, "wb") as f:
    f.write(image)

# 画像をTwitterにアップロード
media = api.media_upload(filename=file_path)

# 画像付きツイート
message = '投稿内容' # ツイートしたい内容(適宜変更)
client.create_tweet(text=message, media_ids=[media.media_id])

   

次のエラー解消方法は?:Large file can not be finalized synchronously

本記事に掲載したプログラムを実行した際に、以下のエラーが発生することがあります。

python tweet-with-image.py
Traceback (most recent call last):
  File "C:\Users\user\Dropbox\設定方法\twitter\画像付きツイート\video.py", line 23, in <module>
    media = api.media_upload(filename=image_path)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\tweepy\api.py", line 3397, in media_upload
    return self.chunked_upload(
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\tweepy\api.py", line 3521, in chunked_upload
    media =  self.chunked_upload_finalize(media_id, **kwargs)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\tweepy\api.py", line 46, in wrapper
    return method(*args, **kwargs)
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\tweepy\api.py", line 3593, in chunked_upload_finalize
    return self.request(
  File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\tweepy\api.py", line 267, in request
    raise BadRequest(resp)
tweepy.errors.BadRequest: 400 Bad Request
Large file can not be finalized synchronously.


上記エラーの発生原因と解決方法は以下となります。
 

・発生原因:
 ・サイズが大きいファイルをアップロードしようとした
 ・動画の長さが長いファイルをアップロードしようとした
・解決方法:ファイルを圧縮するなどしファイルサイズを小さくする



以上がよくある質問と疑問となります。その他に気になることがありましたら、本記事のコメント欄に記入をお願いいたします。調査した上でお答えさせていただきます。

 

【まとめ】Twitter APIを使うことでPythonから無料で画像付きツイートは可能!


いかがでしたでしょうか?

上記で紹介したTwitter APIとtweepyライブラリを使うことで、Pythonから無料で画像付きツイートを行えます。また、動画やWeb上にある画像もツイート可能です。

最後にもう一度内容を確認しましょう。
 

【おさらい】
・画像付きツイートを行うことでフォロワー獲得や認知拡大に繋がる
・スクレイピング、GUI自動化、Twitter APIを使うことで実現できる
・Twitter APIを使う場合、tweepyというPythonライブラリを使う



本ブログでは、「Twitter運用やTwitterのデータ分析に役に立つツール」や「業務の時短化に繋がるIT技術」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。

>> IT技術やその学び方を発信しているサイト「駆け出し物語」(本ブログ)
 


 

コメント