見出し画像

Twitter apiを使ってフォロワー管理を自動化しよう!

こんにちは!python勉強企画です!皆さんプログラム勉強してますか?
一口でプログラムって言っても多くの人は何して良いか分からないと思います。

そこで、今回は、身近なtwitterを使って遊んでみましょう!Twitterのフォロワー管理って意外と面倒臭く無いですか?私はTwitter botを作って運用しているのですが、フォローバックとかちゃんとするとフォロワーは増えるのですが、フォローバックするのって本当に面倒なんですよね。。

そこで、フォロワー管理を自動化してみましょうというのを、pythonを使ってやってみます。割と簡単にできちゃうので、勉強がてらやってみてください。

1. Twitter apiの登録

Twitter apiを利用するためには、まず、Twitterアカウントに電話番号を登録する必要があります。
Twitter上で、「設定とプライバシー」→「アカウント」→「アカウント情報」で電話番号の登録を行ってください。
※ 一つの電話番号で10個までアカウントを登録できます。

次にTwitter apiを作るために、Developer登録をします。
→ Twitter Developer

次に以下の画面で、赤四角で囲んであるApplyを押してください。

スクリーンショット 2021-01-03 10.39.24

次に画面中央付近にある、「Apply for a developer account」を選択してください。
すると下のような画面になるので、「Building tools for Twitter users」を選択して次へお願いします。

スクリーンショット 2021-01-03 17.10.51

つぎのページにいくと、twitter apiを何に使うかを聞かれます。英語ですが、英語が分からない人は、ブラウザの翻訳機能を使うと楽です。一応chromeの翻訳機能について説明を貼っておきますので、分からない人は参考にしてください。
→ Chrome の言語の変更とウェブページの翻訳

まず、「In your words」です。

TwitterデータやAPIの使用方法を英語で説明してください。応答が詳細であるほど、レビューと承認が容易になります。

ここでは、簡単に自分のやろうとしているアプリを簡潔に説明してあげましょう。例えば、こんな感じです。

フォロワーを分析するアプリを作ろうとしています。フォロワーの中で、自分がフォローをしていないユーザーを絞り出し、フォローバックをサポートするアプリです。そのサービスのログイン認証にTwitterAPIを使用したいと思っています。ユーザーがサービスに簡単に登録またはログインできるようにするためです(OAuthを使用したいです)。
よろしくお願いします。

っていう感じでしょうか。
ちなみに英語にする時は、今だとDeepLが一番精度が良いのでおすすめです。

I am trying to build an app that analyzes followers. The application will narrow down the users who I am not following among my followers and support following back. I would like to use the Twitter API for login authentication for that service. I would like to use the Twitter API for login authentication of the service, so that users can easily register or login to the service (I would like to use OAuth).
Thank you for your time.

あとは、「いいえ」を選択しておけばいいと思います。自動でフォローするところまでやる場合には、以下のところだけYesにして同じ要領で書いてみてください!

Will your app use Tweet, Retweet, like, follow, or Direct Message functionality?

これで、最後に規約に同意すれば、申請ができます。特に問題がなければ、メールアドレスの方にすぐにメールがきているはずです。
メールのURLから飛び、アプリ名を適当に入力したら、完了です。こんな感じの画面が出てきて、apiキーをゲットすることができます!

スクリーンショット 2021-01-03 20.45.05

最後にDeveloper Dashboardにアクセスしましょう!もうちょっとです!
→ Developer Dashboard
「Project & Apps」→「設定したアプリ名」とクリックしていき、「Keys and tokens」のタブへ移動しましょう。

スクリーンショット 2021-01-03 21.50.23

上の①API keyと②API secret、下の③Access tokenと④Access secretを生成して控えてください。

お疲れ様でした!これでAPIキーがゲットできました!これを使ってアプリを作っていきましょう!

2. PythonからTwitter apiを使う!

pythonからAPIを使ってみましょう。もしpythonの使い方がわからないという方がいたら、私の過去記事をみてインストールしてくださいね!
→ 暇なので勉強しよう!Pythonインストール編(Mac)

さて、まずはtweepyをインストールしましょう。tweepyはPythonからtwitter apiをつかうためのライブラリーです。pipを使ってさくっとインストールしてしまいましょう。ついでにpandasとdatetimeも入れておきましょう。

pip install tweepy
pip install pandas
pip install datetime

これで準備完了です!さて、お待ちかねのコーディングタイムです!
とはいっても、今回やることは簡単です!

1.  APIへ接続する
2. フォロワー/フォローを取得する
3. フォロワーとフォローを比較して、相互フォローになっていない人を取得する
4. 該当ユーザーのプロフィールを取得する

1. APIへ接続する

まず、Twitter apiに接続するためのメソッドを作りましょう!

import tweepy
import pandas as pd

def get_twitter_api():
   API_key = '①API key'
   API_secret = '②API secret'
   Access_token = '③Access token'
   Access_secret = '④Access secret'
   auth = tweepy.OAuthHandler(API_key, API_secret)
   auth.set_access_token(Access_token, Access_secret)
   api = tweepy.API(auth, wait_on_rate_limit = True)
   return api
   
api = get_twitter_api()​

①API key、②API secret、③Access token、④Access secretには前節で手に入れたご自身のものを入れてください!

次にこのapiを使って、自分のフォロワー及びフォロー先を取得します。ちなみに、twitterではフォロー先のことをfriendといいます。

follower_ids = pd.Series(api.followers_ids())
friend_ids = pd.Series(api.friends_ids())

2. フォロワーを取得する

api.followers_ids()はlist型で帰ってきますが、後々のために、pandas.Seriesに変換しています。こんな感じで返ってきます。

スクリーンショット 2021-01-04 20.41.40

この数字は、Twitter IDになります。普通にTwitterを使っていると見ることはありませんが、Twitterでは人を識別するためにこのIDを使っています。

さて、これで、フォロワーとフォローを取得できました!次にフォロワーの中でフォローしていない人を抽出してみましょう。

target_ids = follower_id[~follower_id.isin(friend_id)]

逆にフォローしている中でフォロバしていない人を抽出するならこうです。

target_ids = friend_id[~friend_id.isin(follower_id)]

さて、次にtarget_idsに含まれる人たちがどう言う人なのかを取得しましょう。

follower_dic = {}
for index,target_id in enumerate(target_ids):
   print(index)
   try:
       user = api.get_user(id = target_id)
   except tweepy.error.TweepError as e:
       print(e)
   follower_dic[user.screen_name] = user.description
df = pd.DataFrame(follower_dic.values(),index = follower_dic.keys()).reset_index()
df.columns= ["screen_name","profile"]

これの結果はこんな感じになります。(公開プロフィールですが、一応screen_nameは隠しています。)

スクリーンショット 2021-01-05 20.54.17

※ なお、twitter api制限によって、少し時間がかかります。

3. APIを使ってフォローする

最後にフォローをしましょう。
フォローするためには、以下のメソッドを利用します。

api.create_friendship(target_id)

target_idには、上で取得した対象ユーザーのTwitter IDが入ります。
※ フォローはapi制限により、15分間でフォロー可能な人数が決まっています。

これを使って、こんな風に作ってみましょう。

def follows(api,target_id):
    target = api.get_user(id = target_id)
    if target.protected == False:
        try:
            api.create_friendship(target_id)
            print("follow" + str(target_id))
        except:
            print("Follow error" + str(target_id))
            break

まずは、対象とするユーザーが鍵垢かどうかを確認しましょう。鍵垢の場合はapi.get_user(id = target_id).protectedがTrueになっていますので、これを確認してFalseの時のみフォローするようにしましょう。

次に、api制限によってたくさんフォローしようとするとエラーが出ることがあるので、失敗した時の処理も書いておくと良いです。

さらに、このフォローに条件をつけることも出来ます。例えば、プロフィールにある”キーワード”を含んでいるユーザーのみをフォローするなんてことも可能です。

def follows(api,target_id):
    target = api.get_user(id = target_id)
    if target.protected == False:
        if 'キーワード' in user.description:
            try:
                api.create_friendship(target_id)
                print("follow" + str(target_id))
            except:
                print("Follow error" + str(target_id))
                break

さて、これで、APIを用いてフォローする方法がわかりました!
あとは、これを使って、条件を指定して、自動でフォローすることができます!

フォロバをレンタルサーバーを使って自動化する

次に、レンタルサーバーとCRON(クロン or クーロン)を使って、フォロワー管理を自動化していきましょう。

CRONというのは、スクリプトを定期的に実行する機能です。これを使って上のpythonプログラムを定期的に実行していけば、自動で条件にあうユーザーをフォローしたり、フォローを外したりすることができます。
ちなみにMacにもCRONはついているので、同じことができますが、PCを起動した状態でないと実行されないので注意してください。Macでやる場合は、こちらの記事を参照してください。
→【cron】定期的に処理を行う【MacOS】【Linux】

レンタルサーバーとして、今回はXreaを利用します。XreaはGMOが出しているレンタルサーバーです。料金はこんな感じです。有料のXREA PlusじゃないとCRONが使えないので、CRONが使えないので、これを使っていきます。月額191円です。ビール一本くらいですねw

画像7

ではここからは、XreaでCRONを使って実現していきます。ここからは以下の手順で進めていきます。
ここから先は基礎的な話になるので、CRONの使い方を理解している人は多分読んでもつまらないと思います!以下を自分で設定できない方だけお進みください!
3. Pythonプログラムの準備
4. XREAの登録&設定方法
5. シェルスクリプトとCRONの設定

このコンテンツを読み終わると、XREA上で定期的にフォロワー管理が可能となります。よろしければご購読ください!
※ 過去記事と内容が重なっている部分があります。過去記事を購入された方は、その応用でできるかと思います!
→ Bitcoinの自動売買をレンタルサーバーで実現する!

ここから先は

7,662字 / 5画像

¥ 500

この記事が参加している募集

おうち時間を工夫で楽しく

サポートしていただいたお金は、新しいボードゲームやカードゲームをプレイするためのたしにします! プレイした感想は順次紹介していきます!