こんにちは。
今回は[x]twitterでbotを作ってみたのでその備忘録になります。
botはウザい?
そもそもbotて煙たがれること多いですよね。「twitter bot」で検索するとウザいとか多すぎとかネガティブな意見がめちゃくちゃ多いです。でもちゃんと活用できれば、情報発信に有効な方法なんです。
前回、楽天APIからスウィーツのランキング情報を取得したのでこのデータを使ってbotを作っていきます。
まずは、楽天APIを叩いてランキング情報を取得して、csvファイルとして保存します。
import requests
import pandas as pd
REQUEST_URL = "https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20220601"
APP_ID="----------------"
serch_params = {
"format" : "json",
"applicationId" : [APP_ID],
"genreId": 551167
}
response = requests.get(REQUEST_URL, serch_params)
result = response.json()
Items = result['Items']
info = []
for i in Items:
itemName = i['Item']['itemName']
itemPrice = i['Item']['itemPrice']
itemUrl = i['Item']['itemUrl']
mediumImageUrls = i['Item']['mediumImageUrls'][0]['imageUrl']
dic = {'name':itemName,'price':itemPrice,'itemUrl':itemUrl,'mediumImageUrls':mediumImageUrls}
info.append(dic)
df = pd.DataFrame(info)
df.to_csv('ranking.csv', index=False)
いざ実装
tweetpyはpythonでXのAPIを扱うためのライブラリでtweepy.Clientをインスタンス化することでツイート機能実装していきます。
ただ、定かではありませんがどうやら開発終了?サポートが終わっている?のか今後使えなくなる可能性がありそうなのでその際は別の方法を取り入れないといけないのかもしれません。
現段階では動作に問題なさそうだったので、こちらを使って実装しました。
import tweepy
import pandas as pd
import requests
CONSUMER_KEY = '-----'
CONSUMER_SECRET = '-----'
ACCESS_TOKEN = '------'
ACCESS_SECRET = '------'
client = tweepy.Client(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_SECRET,
access_token = ACCESS_TOKEN,
access_token_secret = ACCESS_SECRET
)
df = pd.read_csv('ranking.csv')
name = df.iloc[0,0]
price = df.iloc[0,1]
url = df.iloc[0,2]
image_url = df.iloc[0,3]
client.create_tweet(text=url)
XのAPIから取得した、consumer_key、consumer_secret、access_token、access_token_secretをそれぞれ入力してインスタンス化↓。
そしてcreate_tweet(‘投稿内容’)でtweetできます。
このファイルを実行するととりあえず、おすすめ第一位の商品のURLをtweetすることができる。
毎朝APIからデータの取得→決まった時間にファイル定期実行とすればその日の1位の商品をツイートすることができます。