HACK SCORE

# 現役エンジニアの出力コンソール

【30分タイムアタック】Python×Twitter フォロバ自動化

せっかくSNS始めたので、

なるべく輪を広げたい

だけど、あまり時間かけたくない

自動化して楽したいなってことで

Pythonで検索するとすぐに出てくる

Twitterの自動化シリーズですね

今日のコードは

いちいちフォロワーみて、

「あ、この人フォロー返すの気づかなかった」とかいうのを

コマンド実行だけで、勝手にやってくれるやつです

ゴール

$ Python AutoFollowBack.py

これ実行したら、フォロワー全員自動でフォロバしてくれる感じ

手順

  • 1.follower_idを取得
  • 2.follow_idを取得
  • 3.not_followed_user_idを算出
  • 4.for文で回して、1人ずつ自動フォローする

1. follower_id(自分をフォローしてくれている人)を取得

follower_id = api.followers_ids()

2. follow_id(自分がフォローしている人)を取得

follow_id = api.friends_ids()

3. not_followed_user_id(フォローされているけど、自分がフォローしていない人)を算出

  1. 手順1と2の和集合を求める

  2. そこから、フォローしてる人を除外する

  3. フォローできていない人が算出できる

not_followed_user_id = set(follower_id + follow_id) ^ set(follow_id)

4. for文で回して、1人ずつ自動フォローする

あとは、フォローできていない人をフォローする処理だけですね

コード

import tweepy
import sys
import TwitterAuth

api = TwitterAuth.getTwitterApi()

follower_id = api.followers_ids()
follow_id = api.friends_ids()
not_followed_user_id = set(follower_id + follow_id) ^ set(follow_id)

number_of_followed = 0
for user_id in not_followed_user_id:
    try: 
        api.create_friendship(user_id)
        number_of_followed += 1
    except Exception as e:
        print(e)

print('number_of_followed : {}'.format(number_of_followed))

※最後に確認のため、フォローした人数出力してます

ちなみに、

import TwitterAuth

api = TwitterAuth.getTwitterApi()

ここは、API取得するところをモジュール化してます

おまけ

同様にして、 not_follow_me_user_id(フォローしてるのにフォローしてくれていない人)は 和集合から、手順1のフォローしてくれている人を除外すればいいですね

not_follow_me_user_id = set(follower_id + follow_id) ^ set(follower_id)

最初からfor文回して、1人ずつフォローしているかどうか判定して

フォローしていなければフォローするっていうコード公開している人いるけど

そもそも2つの集合のどちらの数が多いかわからないのに、

forのなかにforいれていくのは、危険じゃないかな・・・

追記

tweepyのコードスニペット見返してたら、

こんなのあった

for follower in tweepy.Cursor(api.followers).items():
    follower.follow()

これでも全員フォローできるみたい

ご利用規約

当ブログの記事に関して、各サイトやAPI等のご利用規約に触れる恐れがありますので、ご利用は、全て自己責任でお願いします。

また、記事の内容を利用・参考にした上での活動について、いかなる理由があろうとも当ブログは一切責任を負いませんので、予めご了承ください。