見出し画像

【Python】Twitter APIで自動でフォロー・アンフォローするプログラムを作ってみた

2023年1月6日 修正

Twitter APIを使って自動フォロー・アンフォロー

前回、Twitter APIでフォロー、フォロワーを取得して、データベース化するプログラムを紹介しました。

今回はそのフォロー・フォロワーデータベースと連携して、自動でフォロー・アンフォローするプログラムを紹介します。

こちらも私が現在、使用しているプログラムでそこそこ安定に稼働しているので今回紹介することとしました。

ただこれまで同様、誰にでもできるというレベルにまで落とし込めていないので、この記事の対象となる方は以下の方となります。

  • Pythonプログラミングができる方

  • Twitter Developer Portalに独力で登録し、トークンを取得できる方

  • cron(またはそれに変わる定期実行)を設定できる+環境をお持ちの方

  • 「【Python】Twitter APIでフォロー、フォロワーを取得して、データベース化するプログラムを作ってみた」で紹介したプログラムが稼働できる方

前回の記事で紹介した「フォロー、フォロワーを取得して、データベース化するプログラム」と連動したプログラムとなっていますので、そちらのプログラムが稼働できていないと、今回のプログラムも稼働できませんのでご注意ください。

またこの有料記事は「プログラムの販売」ではなく、あくまでも私が作成したプログラムの「解説記事の販売」なので、上記環境を準備できない、ご自身の環境で動かないといったことには基本的には対応できませんのでご了承ください。

それでは始めていきましょう。

設定ファイルとプログラム概要

今回のプログラムは2つのファイルからできています。

  • アカウント情報を記載したファイル(accounts.json)

  • プログラムファイル(TwitterAutoFollowUnfollow.py)

基本的にAPIのトークンを設定ファイルに記載し、その情報をもとにプログラムファイルで処理をするという流れになります。

ということでまずは設定ファイルの中身を見てみましょう。

{
    "Account1":{
    "consumer_key":"Your consumer key",
    "consumer_secret":"Your consumer secret",
    "bearer_token":"Your bearer token",
    "access_token":"Your access token",
    "access_token_secret":"Your access token secret",
    "protectedusers":[]
    },
    "Account2":{
    "consumer_key":"Your consumer key",
    "consumer_secret":"Your consumer secret",
    "bearer_token":"Your bearer token",
    "access_token":"Your access token",
    "access_token_secret":"Your access token secret",
    "protectedusers":[]
    }
}

実はこちらの設定ファイルは前回の「Twitter APIでフォロー、フォロワーを取得して、データベース化するプログラム」と全く同じです。

そのため前回のプログラムとは同じフォルダで実行するのがいいでしょう。

「consumer_key」、「consumer_secret」、「bearer_token」、「access_token」、「access_token_secret」はTwitterAPIのトークンです。

これらのトークンを取得できない場合、このプログラムは動きませんのでご注意ください。

このプログラムでは複数のアカウントをこのaccounts.jsonに記載しておくこととで、それぞれのアカウントのフォロー数・フォロワー数に応じて新規フォロー数、アンフォロー数を調整しつつ、フォロー・アンフォローします。

またprotectedusersにリスト形式でアカウントIDを記載しておくと、アンフォローされなくなります。(2023/1/6追加)

その調整のプログラムをお見せするとこんな感じです。

def followUnfollowNum():
    me = client.get_me(user_fields=['public_metrics'])
    time.sleep(0.2)
    followers = me.data.public_metrics['followers_count']
    following = me.data.public_metrics['following_count']

    ff_ratio = followers/following
    
    if following < 1000:
        maxnum_follow = 9
        maxnum_followback = 1
        maxnum_unfollow = 10
    elif 1000 <= following < 3000:
        maxnum_follow = 8
        maxnum_followback = 2
        maxnum_unfollow = 10
    elif 3000 <= following < 5000:
        maxnum_follow = 7
        maxnum_followback = 3
        maxnum_unfollow = 10
    elif 5000 <= following:
        if ff_ratio <= 0.925:
            maxnum_follow = 3
            maxnum_followback = 0
            maxnum_unfollow = 10
        elif 0.925 < ff_ratio <= 0.95:
            maxnum_follow = 5
            maxnum_followback = 1
            maxnum_unfollow = 10
        elif 0.95 < ff_ratio <= 1.0:
            maxnum_follow = 7
            maxnum_followback = 3
            maxnum_unfollow = 10
        elif 1.0 < ff_ratio:
            maxnum_follow = 9
            maxnum_followback = 5
            maxnum_unfollow = 10
        
    return maxnum_follow, maxnum_followback, maxnum_unfollow

ちょっと縦長で見づらいですが、以下のように条件分岐させています。

  • フォロー数が1000人以下:新規フォロー数9人、フォローバック数1人、アンフォロー数10人

  • フォロー数が1000人以上、3000人未満:新規フォロー数8人、フォローバック数2人、アンフォロー数10人

  • フォロー数が3000人以上、5000人未満:新規フォロー数7人、フォローバック数3人、アンフォロー数10人

  • フォロー数が5000人以上、フォロワー/フォロー比が0.925以下:新規フォロー数3人、フォローバック数0人、アンフォロー数10人

  • フォロー数が5000人以上、フォロワー/フォロー比が0.925より大きく0.95以下:新規フォロー数5人、フォローバック数1人、アンフォロー数10人

  • フォロー数が5000人以上、フォロワー/フォロー比が0.95より大きく1.0以下:新規フォロー数7人、フォローバック数3人、アンフォロー数10人

  • フォロー数が5000人以上、フォロワー/フォロー比が1.0より大きい:新規フォロー数9人、フォローバック数5人、アンフォロー数10人

ここで設定している新規フォロー数、フォローバック数、アンフォロー数は最大値で、後でその値に対し、ランダムに値が選択されるようになっています。

新規フォローの仕方は本文でお話ししますが、フォローバックは相手からフォローされているのに自分がフォローしていないアカウントに対してフォローし、アンフォローは自分がフォローしているのに相手からフォローされていないアカウントをアンフォローすることとしています。

またフォローする条件も設定しており、デフォルトでは1500人以上のフォロワーがおり、フォロワー/フォロー比が0.75以上5未満としています。

アンフォローの条件はデフォルトではこちらがフォローして8日以上経過してもフォローバックされていないアカウントとしています。

あまり大量にフォロー・アンフォローする設定だとすぐにアカウント凍結になる可能性があるので、1回の実行時のフォロー・アンフォローはこれくらいにしておいて、1時間に1回実行するようにcronで設定しています。

この調整により現在では大体フォロワー/フォロー比が0.96程度で推移しています。

またcronで出力をメールで送る設定にしておくと、こんな感じで結果が送られてきます。

3PySci_Nori
1 were unfollowd.
3 were followd from timeline.
FindDiffKanji
8 were unfollowd.
2 were followd from timeline.
Tohyokakusan
5 were unfollowd.
1 were followd by followback.
1 were followd from timeline.
Kotsuikakusan
6 were unfollowd.
8 were followd from timeline.
Botuserkakusan
9 were unfollowd.
2 were followd by followback.
6 were followd from timeline.

ということで概要はここまでにしてプログラムの紹介に移っていきましょう。

ここから先は

32,231字 / 1ファイル
この記事のみ ¥ 1,000

この記事が気に入ったらサポートをしてみませんか?