いつもツイートしているNFTの宣伝を自動化してみたくて色々やってみました。
TwitterAPIの取得
こちらのブログを参考に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 始め方」とかで調べれば簡単に実行環境の作り方が調べられます。
驚いたことに、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が出来ない
嘘ぉ・・・・(´・ω:;.:…
散々調べ回ったのですが、結論から言うと今の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:
JPN4seasons:
Study of eye:
コメント