みなさんこのようなツイートを目にすることはないですか??
このようなツイートを見て
「このフォロー&リツイートを自動化させて、勝手に当たらないかな?」
と思うはずです。(思いますよね?)
ということで、今回は「フォロー&リツート」を自動化させて当たるまでやってみたという企画をしたいと思います。(コードをお見せします)
スポンサードサーチ
【【【ここにアドセンスコードを貼り付けます】】】前提と手順
【前提】
・pythonを動かせる環境(google colabはNG)
【手順】
- twitter developerに登録する
- API申請を行う
- コーディングする
自動リツイート&フォローのコーディング説明の前に、Twitter developerについてと、TwitterAPIについて軽く触れておきます。もっと詳しく知りたい方は、Qiitaの方で解説されている記事が多いので参考までにご覧ください。
Twitter Developerに登録する
Twitter Developerとは
Twitter DeveloperとはTwitterの開発者プラットフォームのことである。Twitterのオープンでグローバルなリアルタイム通信ネットワークの力を活用できるようにする多くのAPI製品、ツール、およびリソースを提供している。
API申請を行う
API申請を行う前に、APIについてとTwitterAPIでできることを解説します。時間のない方は、ここは飛ばしても大丈夫です。
APIとは何か?
API(Application Programming Interface)とは、情報システムが提供するデータや機能を外部のソフトウェアから呼び出して利用するための手順やデータ形式などを定めた規約のことです。
難しそうですが、今回の場合でいうとTwitterが持っている情報システムが提供しているデータや機能(いいね、ツイート)を自分たちでも管理できるようにするよ。ということです。
Twitter APIでできること
・ツイート
・リツイート
・いいね
Twitter API申請手順
TwitterのDeveloper Platformにアクセスします。
Get Started ボタンをクリック。
Project&Appに遷移して、自分で作成したプロジェクト名をクリックします。そこに
ConsumerKeyやAuthentication Tokensなどが貼られているので、Keyを忘れてしまった方はここから再発行してください。
コーディング
import time import tweepy import configparser import requests # 紐付け作業[CONFIG] config = configparser.ConfigParser(interpolation=None) config.read('config.ini') CONSUMER_KEY = config['amazon']['CONSUMER_KEY'] CONSUMER_SECRET = config['amazon']['CONSUMER_SECRET'] ACCESS_TOKEN = config['amazon']['ACCESS_TOKEN'] ACCESS_SECRET = config['amazon']['ACCESS_SECRET'] BEARER_TOKEN = config['amazon']['BEARER_TOKEN'] search_url = "https://api.twitter.com/2/tweets/search/recent" # 検索したいキーワードを引数にとる def search(text): query_params = {'query': text, 'tweet.fields': 'author_id'} def bearer_oauth(r): """ Method required by bearer token authentication. """ r.headers["Authorization"] = f"Bearer {BEARER_TOKEN}" r.headers["User-Agent"] = "v2RecentSearchPython" return r def connect_to_endpoint(url, params): response = requests.get(url, auth=bearer_oauth, params=params) print(response.status_code) if response.status_code != 200: raise Exception(response.status_code, response.text) return response.json() json_response = connect_to_endpoint(search_url, query_params) print(json_response) return json_response['data'] # ファローとリツイート def main(): # ユーザー認証 Client = tweepy.Client(None, CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET) text = 'フォロー&リツイート' datas = search(text) for data in datas: user_id = data['author_id'] tweet_id = data['id'] Client.retweet(tweet_id=tweet_id) Client.follow(target_user_id=user_id) print('フォロー&リツイート') print(data['text']) if __name__ == '__main__': main()
- APIの接続(confiparserを使用する)
- 検索機能の作成
- 検索結果をもとにフォロー&リツイート機能を作成
APIの接続
#faile名 config.ini
CONSUMER_KEY='自身のコンシューマーキーを入力'
CONSUMER_SECRET='自身のコンシューマーシークレットを入力'
ACCESS_TOKEN='自身のアクセストークンを入力'
ACCESS_SECRET='自身のアクセスシークレットを入力'
import configparser
#紐付け作業
config=configparser.ConfigParser()
config.read('config.ini')
CONSUMER_KEY=config['amazon']['CONSUMER_KEY']
CONSUMER_SECRET=config['amazon']['CONSUMER_SECRET']
ACCESS_TOKEN=config['amazon']['ACCESS_TOKEN']
ACCESS_SECRET=config['amazon']['ACCESS_SECRET']
Client = tweepy.Client(None, CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET)
セキュリティ上、APIキーはpythonファイルにベタ書きするのはよくないので、configparserを使って、config.iniファイルにAPIキーを記述しました。(configparserについてわかりやすく書いてある記事はこちら)
APIとの接続が完了すると、いよいよフォローとリツイート関数の作成を行います。
検索機能の作成
Twitter APIがV2に変更されたことで、検索機能が簡単に行かなくなりました。(詳しく知りたいかたは、Twitter APIk公式ドキュメントを読んでみてください)
# 検索したいキーワードを引数にとる
def search(text): query_params = {'query': text, 'tweet.fields': 'author_id'} def bearer_oauth(r): """ Method required by bearer token authentication. """ r.headers["Authorization"] = f"Bearer {BEARER_TOKEN}" r.headers["User-Agent"] = "v2RecentSearchPython" return r def connect_to_endpoint(url, params): response = requests.get(url, auth=bearer_oauth, params=params) print(response.status_code) if response.status_code != 200: raise Exception(response.status_code, response.text) return response.json() json_response = connect_to_endpoint(search_url, query_params) print(json_response) return json_response['data']
フォロー&リツイート機能
検索機能で取得できるデータは以下のようなjson形式が返り値として与えられます。
{'author_id': '1268872185784852480', 'id': '1502937214975717378', 'text': '"仕事の依頼が多い?\n登録しとくべき案件サイト?\nプログラミング初心者でも?\nフリーランスにおすすめ実【稼ぐのは余裕です】 https://t.co/hv86bSOv4W"'}, {'author_id': '3014034060', 'id': '1502934872360624132', 'text': 'プログラミング初心者の為の😓やってはいけないチェックリストださい。'}, {'author_id': '1277051247414001664', 'id': '1502933619081318402', 'text': 'プログラミングの基本ルール「順次」を分かりやすく解説します。\n\n・プログラミング初心者向解説\nhttps://t.co/LqmTTf7ZME'}, {'author_id': '1029614638067937280', 'id': '1502921804054097924', 'text': 'プログラミング初心者がプログラミングで最初に楽しいと感じるのは、何か開発環境の構築が難しい場合は、すぐに動かせるものから始めてみると良いでしょう。'},
これらのauthor_idとidを使って、フォロー&リツイート機能を作成していきます。
text = 'フォロー&リツイート' datas = search(text) for data in datas: user_id = data['author_id'] tweet_id = data['id'] Client.retweet(tweet_id=tweet_id) Client.follow(target_user_id=user_id) print(data['text'])
関数の説明
Client.follow(target_user_id=user_id)⇨user_idをフォローする。
クーロンの設定(時間にあったら実行)
crontab -e
PATH=PATHの環境変数 # (分) (時) (日) (月) (曜日) (実行するコマンド) #*/00 12 * * * python 実行するファイルのパスを指定>>cron.logファイルパスの指定 2>&1
pathの環境変数は以下のコマンドで取得できます。
echo $PATH
これで毎日12時になるとツイート&リツイートが可能になりました。
このプログラムを使って、『毎日フォロー&リツイートキャンペーンを実践すると当選するのか?』を検証してみようと思います。
検証結果は次の投稿で発表しようと思います。続きが気になる方は、Twitter をフォローをしてお待ちください。
まとめ
今回はTwitterAPIを使って自動フォロー&リツイートを実行するプログラムを作成しました。TwitterAPIには他にもさまざまな機能があるので興味のある方は試してみてください。(TwitterAPI)
また、ツイッター意外にもAPIを発行しているアプリケーションが多数ありますので、それで遊んでみるのも面白いんじゃないかなと思います。
それでは次回の投稿をお楽しみに✌️
コメント