TwitterのAPIを使ってbotを作ってみた! (Python編)

Webサービス

こんばんは.

まるめがねです.

今回はTwitterのbotを作ってみたいと思い, その作るまでの経緯を記事と紹介していこうと思います.

要は開発用のTipsですね.

色々と試行錯誤したので, よかったらどうぞ.

ちなみに全てpythonで書かれています.

TwitterのAPIを利用する

まずは, TwitterのAPIを使えるようにしなければなりません.

こちらのURLをどうぞ!

https://developer.twitter.com/en/apps

自分のTwitterのアカウントでTwitter Appsのアカウントを作成します.

ちょっと, 英語で書かれていて, APIを使う理由も200文字以上で書かなければ行けないので, ちょっと大変ですが, そこら辺はGoogle 翻訳でぱぱっと書けばいいと思います.

登録が終わると以下の画面が出ます.

そしてこれが終わると, TwitterのAppsでアプリケーションを作ります.

Twitterアプリケーション新規登録画面

多くの項目がありますが, 以下を参照して記入してみてください.

Twitterアプリケーション登録をするために必須情報を入力します。

・Name(アプリケーション名)

・Description(アプリケーションの概要)

・Website(作った人のサイトURL)が、

必須入力項目です。”Callback URL”は今回は使用しませんので空欄のままにしておきます。

また、Twitterアプリケーションの利用規約に同意しなければ、APIを利用することができません。

利用規約を読んで同意できる場合は、”Yes, I have read and agree to the Twitter Developer Agreement.”の

チェックボックスを選択して、”Create your Twitter application”ボタンを押下して進んでください。

https://cre8cre8.com/python/twitter-api.htm

ここでも, サービスを利用する理由について100文字以上求められます.

ライブラリのインストール

requests:

PythonでRest API操作簡単に行うためのライブラリです.

requests-oauthlib:

PythonでOAuth認証簡単に行うためのライブラリ.

以下のコマンドでまとめてインストールされます.

pip install requests requests-oauthlib

ファイルの準備

ファイル構成は以下のようになっています.

file
├── config.py #認証情報を管理
├── xxx.py #各スクリプト
└── ...
#config.py

CONSUMER_KEY = "**************"
CONSUMER_SECRET = "**************"
ACCESS_TOKEN = "**************"
ACCESS_TOKEN_SECRET = "**************"

config.pyの設定は先程作ったTwitterアプリケーション管理画面からトークンを生成してください.

“Key and Access Token” タブをクリックしてCONSUMER KEY等をコピーしてください.

Consumer KeyとConsumer Secretの確認

トークンは作り出さないと行けないので, “Create my access token”をクリックしてください.

下記の画面のようにトークンが生成されたらコピーし, config.pyに記入してください.

Access TokenとAccess Token Secretの確認

プログラムからツイートしてみよう!

以下のプログラムを作成し, 実行します!

#tweet_form_python.py

import json, config #標準のjsonモジュールとconfig.pyの読み込み
from requests_oauthlib import OAuth1Session #OAuthのライブラリの読み込み

CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS) #認証処理

url = "https://api.twitter.com/1.1/statuses/update.json" #ツイートポストエンドポイント

print("内容を入力してください。")
tweet = input('>> ') #キーボード入力の取得
print('*******************************************')

params = {"status" : tweet}

res = twitter.post(url, params = params) #post送信

if res.status_code == 200: #正常投稿出来た場合
    print("Success.")
else: #正常投稿出来なかった場合
    print("Failed. : %d"% res.status_code)

実行!

python3 tweet_from_python.py

ツイッターの画面を見るとちゃんとツイートされていますね!

天気予報を通知するbotの開発

せっかくなので, 有益なツイートをするbotを開発しようと思います!

有益といったら天気予報の結果ですね(笑)

実際に作ったコードは下記になります!

import requests
import json, config #標準のjsonモジュールとconfig.pyの読み込み
from requests_oauthlib import OAuth1Session #OAuthのライブラリの読み込み

CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS) #認証処理
url = 'http://weather.livedoor.com/forecast/webservice/json/v1'

payload = {'city':'130010'}
tenki_data = requests.get(url, params=payload).json()
tweet = u"日付:" + tenki_data['forecasts'][0]['date'] + "\n"
tweet = tweet + u"今日の場所:" + tenki_data['title'] + "\n"
tweet = tweet + u"今日の天気予報:" + tenki_data['forecasts'][0]['telop' ] + "\n"
tweet = tweet + u"今日の最高温度:" + tenki_data['forecasts'][0]['temperature']['max']['celsius'] + "\n" + "\n"
tweet = tweet + u"明日の日付:" + tenki_data['forecasts'][1]['date'] + "\n"
tweet = tweet + u"明日の場所:" + tenki_data['title'] + "\n"
tweet = tweet + u"明日の天気予報:" + tenki_data['forecasts'][1]['telop' ] + "\n"
tweet = tweet + u"明日の最高温度:" + tenki_data['forecasts'][1]['temperature']['max']['celsius'] + "\n" +"\n"
tweet = tweet + u"#天気"
url = "https://api.twitter.com/1.1/statuses/update.json" #ツイートポストエンドポイント
print("tweet_output")

params = {"status" : tweet}
res = twitter.post(url, params = params) #post送信
if res.status_code == 200: #正常投稿出来た場合
   print("Success.")
else: #正常投稿出来なかった場合
   print("Failed. : %d"% res.status_code)

ちょっとごちゃごちゃしていますが, 実行してうまく行くと, こんな感じに!

AIbotの道は険しいかもしれませんが, これから時間があれば作って見たいと思います!

ちなみにアカウントはこちら!

キーワード検索による”いいね”と”リツイート”と”フォロー”

下記のコマンドを実行すると, ツイッターでいいねやリツイート, フォローが行なえます.

キーワード検索:api.search(q=”エンジニア”, count=100)

api.create_favorite(tweet_id):いいね

api.retweet(tweet_id):リツイート

api.create_friendship(user_id):ツイッターフォロー

import requests
import tweepy
import json, config

from requests_oauthlib import OAuth1Session
CONSUMER_KEY = config.CONSUMER_KEY
CONSUMER_SECRET = config.CONSUMER_SECRET
ACCESS_TOKEN = config.ACCESS_TOKEN
ACCESS_SECRET = config.ACCESS_TOKEN_SECRET

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)

search_results = api.search(q="エンジニア", count=100)

for result in search_results:
   tweet_id = result.id
   user_id = result.user._json['id']

   try:
      api.create_favorite(tweet_id)
      api.retweet(tweet_id)
      api.create_friendship(user_id)
   except Exception as e:
      print(e)

実行してみるとこんな感じで, いいねやリツイートが行われます.

ガガガっていくからちょっと怖い(笑)

プログラム初心者でやってみたい方は講座を受けてみてはどうでしょうか??



スポンサーリンク
Webサービス
まるめがねをフォローする
まるめがねblog

コメント

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