Python初心者がTwitterのフォロー自動化してみた話【2020】

新月一2020-03-20AutomationPython 自動化 Tweepy

twitter

TIP

Pythonを使ってTwitterのフォローの自動化をしてみた話。

ここから本題

事の発端は私がTwitterのアカウントを消し、新たに作るといういわゆる「垢転生」を経てフォロワーを増やそうと思ったことに端を発します。

Twitterでフォロワーを増やすのって大変ですよね。簡単なのはフォローを増やしてフォローを返してもらうこと。それでもフォローを増やすために何回もぽちぽちしないといけない。

もちろん本当は興味のある人をフォローして、見てほしいと思ってもらえるような内容のツイートや作品を地道に上げてフォロワーを増やすのが王道だと思います。

しかし、興味のある人を探すにもぽちぽちするのってめんどくせ~。ぽちぽち地獄はもう嫌なんだ!

「大変なら自動化すればいいじゃない。」と心の中のマリーアントワネットのささやきに従い、自動化することにしました。

とはいえ、私はこのプロジェクト開始時、完全なるプログラミング初心者でした。そんな人間でもネットの情報を頼りにすれば意外と自動化できるものなんです。

というわけで初心者の私が自動化に至るまでの道のりを話そうと思います。

1. まずはTwitter APIに登録する

タイトル通り、PythonでTwitterにアクセスするには、まずTwitter APIに登録する必要がありますので、登録しました。

参考にしたのは、とりくん様のサイトです。

APIに登録するのに苦労するのは、Twitter APIのサイトがほぼ英語だという所だと思います。でも、ご安心を。我々にはグーグル翻訳という味方がおります。

まずは、問われている英語をグーグル翻訳に打ち込みます。そして問いの意味を理解したら、日本語で答えを作成します。

なんでTwitter APIを利用するの? とか聞かれるので、私はPythonの勉強や、機械学習の勉強のためと少し長めの日本語文章で答えを作成しました。

次はその日本語で書かれた答えをまたグーグル翻訳に打ち込みます。変な文章になっていないかチェックした後、それをそのままコピー&ペーストしましょう。

先に挙げたサイトが凄まじく分かりやすく解説してくれているので、その通りにやって、後は英語の問題をなんとかしたら出来ます。

Twitter APIに登録出来たら、Keyとaccess tokenを取得します。

さあこれで第一段階が終了しました。

2. config.pyファイルを作る

次に、自動化プログラムを走らせる予定のディレクトリに、アクセスキーの書かれたpyファイルを置いておきます。

CONSUMER_KEY = "あなたのキー"
CONSUMER_SECRET = "あなたのキー"
ACCESS_TOKEN = "あなたのキー"
ACCESS_TOKEN_SECRET = "あなたのキー"

名前はconfig.pyとします。

これで、他のプログラムでimport configと書けば、キーを取り出すことが出来るようになります。

3. フォローを自動化する(第一段階)

フォロー人数が少ない内は、フォロー出来る人数が限られています。よって、自動化の第一段階として以下のプログラムを実行しました。

#coding:utf-8
import json, config
import tweepy
#Accesss Token Secert
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)
word = ["ケモミミ", "性癖"]
set_count = 100
results = api.search(q=word, count=set_count)
for result in results:
   username = result.user._json['screen_name']
   user_id = result.id
   print("ユーザーID:"+str(user_id))
   user = result.user.name
   print("ユーザー名:"+user)
   tweet = result.text
   print("ユーザーのコメント:"+tweet)
   try:
       api.create_favorite(user_id)
       api.create_friendship(username)
       print(user+"をフォローと「いいね」をしました\n\n")
   except:
       print(user+"はもうフォローしてます\n\n")

コードはゆとり鳥日記様を参考にさせていただきました。検索するワードを指定し、検索したツイートにいいねとフォローをするようになっています。一回に検索出来る上限が100回みたいなので、最初はこれで実行してました。

注意として、連続して実行はしないほうがいいです。API制限にかかってしまうので。それに、フォロワーが少なければ、フォロー出来る人数も限られているので、とりあえずは地道にフォローを限界まで増やしてフォローバックしてくれる人を待ちました。

4.フォローを自動化する(第二段階)

フォロワーが増えてくれば、フォロー出来る人数も増えていきます。すると、何回もプログラムを実行する必要が出てくる訳です。既に十分楽は出来ているのですが、何回も実行する手間があります。

というわけでそれをさらに自動化出来る手段を探してみました。

参考にしたのは仮想サーファー様のサイトです。

環境はAtomで実装したりconfig.pyファイルを作る方針で進んでいるので、多少違うところはありますが、自分なりにコードを改変してみました。

import config
import tweepy
import time
# TwitterAPIの認証データを取得して認証
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)
follow_count = 0
loop_out = False
for loop_count in range(7):
   print("----------------------------------")
   print(str(loop_count + 1) + "回目のループ開始!")
   print("----------------------------------")
   if loop_count == 0:
       query = "異世界かるてっと"
   elif loop_count == 1:
       query = "仙狐さん"
   elif loop_count == 2:
       query = "五等分の花嫁"
   elif loop_count == 3:
       query = "ブラックラグーン"
   elif loop_count == 4:
       query = "わたモテ"
   elif loop_count == 5:
       query = "SHIROBAKO"
   elif loop_count == 6:
       query = "あやねる"
   elif loop_count == 7:
       query = "ワタモテ"
   #検索はMax100人みたい。検索結果に出てきたアカウント数が上限となる。
   search_count = 100
   my_screen_name = "kanzak1dea" #自分のアカウント名
   followers_ids = api.followers_ids(my_screen_name) #フォロワーのID取得
   following_ids = api.friends_ids(my_screen_name) #フォローのID取得
   check_count = 0
   search_results = api.search(q=query, count=search_count)
   for result in search_results:
       # フォロー人数が特定人数以上になったらループ抜けて処理終了。
       if follow_count > 500:
           loop_out = True
           break
       user_id = result.user.id
       check_count += 1
       print("-----------------------------------------")
       print("[" + str(loop_count + 1) + "ループ目] 現状" + str(follow_count) + "人を新規フォロー。" + str(check_count) + "人目のアカウント(following_id:" + str(user_id) + ")をチェック開始!")
       # 検索結果のユーザーにすでにフォローされていたら、フォロー処理をせずにループを次に進める。
       if user_id in followers_ids:
           print("following_id:" + str(user_id) + ")からはすでにフォローされてたからスルー!")
           continue
       # 検索結果のユーザーをフォローしていたら、フォロー処理をせずにループを次に進める。
       if user_id in following_ids:
           print("following_id:" + str(user_id) + ")はすでにフォローしてたからスルー!")
           continue
       # 検索結果のユーザーのフォロワー数とフォロー数をカウント関数に入れる。
       user_follower_count = api.get_user(user_id).followers_count
       user_following_count = api.get_user(user_id).friends_count
       user_name = result.user.name
       screen_name = result.user.screen_name
       print("----------------------")
       # もしフォロワー数100未満ならスルー
       if user_follower_count < 100:
           print(user_id, ":", user_name + "@" + screen_name, "はフォロワーが" + str(user_follower_count) + "人しかいないからフォローしませんでした")
       # もしフォロー数100未満ならスルー
       elif user_following_count < 100:
           print(user_id, ":", user_name + "@" + screen_name, "はフォローが" + str(user_following_count) + "人しかいないからフォローしませんでした")
       else:
           try:
               api.create_friendship(user_id)
               print(user_id, ":", user_name + "@" + screen_name, "はフォロワーが" + str(user_follower_count) + "人いて、未フォローだったのでフォローしました")
               follow_count += 1
           except:
               print(user_id, ":", user_name + "@" + screen_name, "はフォロー出来ませんでした。ブロックされてるか鍵垢かも?")
   print("----------------------------------")
   print(str(loop_count + 1) + "回目のループが終了しました")
   print("----------------------------------")
   # フォロー上限になったらループ抜ける
   if loop_out:
       break
   # アクセス連続しすぎるとやばいかもだから5分待つ(5分待つことで、153APIアクセス/5分 = 459APIアクセス/15分でAPIアクセス上限に引っかからないはず。)
   print("5分待ちます")
   time.sleep(300)

私はこのプログラムでオタクワード検索して趣味の合う人を楽にフォローさせて頂いております。変えたのは最初のキーの導入とフォロー条件のところぐらいです。

フォローは当然のごとく凄まじい速度で増えていきますので、アンフォローの対策を考える必要もあります。それについてはまたある程度指針が固まったら書きたいと思っています。

5. まとめ

  • Pythonでフォロー自動化するにはまずTwitter APIに登録する。

  • keyを取得しconfigファイルにまとめる。

  • configファイルの置いてあるディレクトリで自動化プログラムを実行する。

    ただし、注意してほしいのは、これは正式に認められた手段ではないということです。凍結されても当方は一切の責任を追いませんのでやるなら自己責任でお願いします。

とはいえ、私の方は結構時間が削減できていい感じです。ぽちぽち生活とはもうおさらばなんや。

でもあんまりフォローするとタイムラインが大変なことになりそう。だから、これからフォローフォロワーを増やしていく過程でフォローバックのない垢のアンフォローとリストによるユーザーの管理をしていく必要があると考えています。

まだまだやること多いですねぇ。ですが初心者なりに頑張ります!

ここまで読んでいただき、ありがとうございました( ੭˙꒳ ˙)੭

Last Updated 2023-03-10 17:35:41