PythonでTwitterのフォローを自動化してみた【2019】

PythonでTwitterのフォローを自動化してみた【2019】

今回はPythonを使ってTwitterのフォローの自動化をしてみたよ

自動化って、楽できるん?

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 = "nahamot" #自分のアカウント名

    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)

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

 

 

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

 

 

記事のまとめ

  • Pythonでフォロー自動化するにはまずTwitter APIに登録する。
  • keyを取得しconfigファイルにまとめる。
  • configファイルの置いてあるディレクトリで自動化プログラムを実行する。

 

 

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

とはいえ、結構時間が削減出来ているんじゃない?

その通りなんやで。ぽちぽち生活とはもうおさらばなんや

でもあんまりフォローするとタイムラインが大変なことになりそうなんよ

そうだよね。だから、これからフォローフォロワーを増やしていく過程で、フォローバックのない垢のアンフォローとリストによるユーザーの管理をしていく必要があるんだ

まだまだやること多いんよ

そ、初心者なりに頑張ります!