宣伝用Tweetの自動化をPythonとTwitterAPIでやってみた〜前編〜

NFT

いつもツイートしているNFTの宣伝を自動化してみたくて色々やってみました。

こちらの続きです。

TwitterAPIの取得

【Python×Twitter】自動ツイート(投稿)を定期実行する方法|APIとtweepyを用いたbot開発支援
「PythonでTwitterの自動ツイート(投稿)はどうやって実行するの?」「定期的に自動ツイートできるツールを作成したい」本記事ではこのような疑問・要望にお答えします。

こちらのブログを参考にAPIの取得と文字TweetをPythonでやってみました。

「Hello world」のTweetはPythonでTweetしたものです。スマホアプリなんかで自動ツイートすると日付の横に「●●からTweet」みたいに出てきますが、TwitterAPIの「App name」が青文字の部分になるみたいですね。NFTOshirase(お知らせ)・・・ちょっと名前変えようかな。

Python環境について

先程参考にしたブログの内容を実行するための環境が要ります。

  • pip ~ などのTweepyをインストールしたりするコード:OSに元から入っているTerminal(Windowsならコマンドプロンプト)
  • .pyファイル:Pythonの統合開発環境(IDE)

IDEについて、私はANACONDAからSpyderを使ってみました。「ANACONDA Python 始め方」とかで調べれば簡単に実行環境の作り方が調べられます。

左側が.pyファイルを書く場所。上部、緑の再生ボタンを押すと、右下のConsoleに実行結果が表示されます。

驚いたことに、pythonで絵文字使えました。(👇とか✨とか)いつもの宣伝コメントをPythonのコードで示すとこんなかんじ。

message = "【定期】GM!! #NFT 宣伝です〜。よろしくお願い申し上げます〜(2022-05-20 update! \n please visit my collections! And follow me ✨✨ \n 👇 \n https://opensea.io/negisuke?s=09 \n \n #illustration #nftart #OpenSeaNFT #NFTJapan 🎌 #NFTArtist #NFTJPN "

MacPCで使える絵文字に限られますが、改行を\nで表す以外は殆ど変えず。まじか、 javaだったら絶対できん・・・。

よし、あとは画像をつけてTweetできれば万事よし。

Twitter API で画像Tweetが出来ない

Twitter API v2にて画像付きツイートができない件|かどゆー
お久しぶりです。 一応プロセカAPIはひと通り終わって、今はTwitterボットを作っています。 そこでハマってしまったことをご紹介します。 画像付きツイートができない!!!!! v2で画像ツイートしたいときはAPI叩く curl -X P...

嘘ぉ・・・・(´・ω:;.:…

散々調べ回ったのですが、結論から言うと今のAPIでは画像つきTweet出来ません

厳密に言うと、TwitterAPIにはv1とv2が有るのですが旧版のv1では出来ます。新しい方のv2では画像つきTweet出来ません。Coming Soonだそうです。

なのに、デフォルトで使えるEssentialプランではv2しか使えず(おそらく企業向けや特殊なプランはv1も使える)現状手立てが無いということが分かりました(´・ω:;.:…チーン

今ネット上にある画像つきTweetのコードはv1のものなんで、てっきり出来るもんだと思ってたんですが、まさかv1を使わせてくれないとは・・・。v1を踏襲できてからv2のみにしておくれよー。

仕方ないので広告の方針転換

3つあるCollectionのアドレスを全て表示するわけにもいかないので各Collectionを別々のTweetにしてランダムに表示するようにしてみました。

import tweepy
from pprint import pprint
import random
import datetime

dt_now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))).hour

# API情報を記入
BEARER_TOKEN        = "XXXXXXXXX"
API_KEY             = "XXXXXXXXX"
API_SECRET          = "XXXXXXXXX"
ACCESS_TOKEN        = "XXXXXXXXX"
ACCESS_TOKEN_SECRET = "XXXXXXXXX"

# クライアント関数を作成
def ClientInfo():
    
    client = tweepy.Client(bearer_token    = BEARER_TOKEN,
                           consumer_key    = API_KEY,
                           consumer_secret = API_SECRET,
                           access_token    = ACCESS_TOKEN,
                           access_token_secret = ACCESS_TOKEN_SECRET,
                          )
    
    return client

# ★メッセージリストを作成
message4sG = "四季女子の宣伝文句とURL"
messageEye = "目の研究の宣伝文句とURL"
messageApG = "擬人化女子の宣伝文句とURL"
messages = [message4sG,messageEye,messageApG]

# ツイートをする関数
def CreateTweet(num,dt_now):
    if dt_now < 12:
        greeting = "GM!"
    elif dt_now < 17:
        greeting = "Hello!"
    else:
        greeting = "おつです!"
    nowMessage = greeting + messages[num]
    tweet = ClientInfo().create_tweet(
        text=nowMessage,
        )
    return tweet

# 関数実行・結果出力
num = random.randrange(3)
pprint(CreateTweet(num,dt_now))

これで実行すればランダムにどれか1つCollectionの宣伝がツイートされます。

今後の方針

あとは特定の時間に実行するだけ。なのですが、PCつけっぱなしにしてSpyderに実行させ続けるのもなんなので、サーバーを使って特定の時間に実行する方法を探してやってみようと思います。pyファイル置いといて、タイマーセットしたら実行してくれるようなの無いかなー。

あとはこれを応用して、過去イラストの定期ツイートもやりたいんですが・・・・いかんせん画像つきツイートができない・・・・TwitterさんAPIの開発はよお願いします(´・ω・`)

よければ私のNFTもお願いします!

anthropomorphicGirls: 

https://opensea.io/collection/neginotes

JPN4seasons: 

https://opensea.io/collection/jpn4seasons

Study of eye: 

https://opensea.io/collection/study0feye

コメント

タイトルとURLをコピーしました