【悩み】
・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に画像付きツイートを投稿できます。
項目 | Free | Basic | Pro | Enterprise |
料金 | 無料 | $100/月 | $5000/月 | 価格相談 |
できること | Twitter API v2を使ったツイート作成や削除のみ | Twitter API v2の全機能 | Twitter API v2の全機能 | Twitter API v2の全機能 |
各プランで操作可能な機能や単位時間当たりの制限回数などは、以下の記事で分かりやすくまとめられています。詳細を知りたい方は、以下をご覧ください。
>> 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技術やその学び方を発信しているサイト「駆け出し物語」(本ブログ)
コメント