いいねしてくれた人をフォローする

タイトルの通りです。自分のツイートをいいねしてくれた人をフォローするプログラムの解説です。


前提:Pythonのインストール、Twitter developでの各種key取得

まずはapiを取得関数を作成します。tweepyを使います。

import tweepy

def getapi():
   consumer_key = "自分のconsumer_key"
   consumer_secret = "自分のconsumer_secret"
   access_token = "自分のaccess_token"
   access_token_secret = "自分のaccess_token_secret"

   auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
   auth.set_access_token(access_token, access_token_secret)

   api = tweepy.API(auth)
   return(api)

いいねした人を取得するために、自分のツイートIDを参照し、そのツイートにいいねしたユーザーのIDを取得する関数を作成します。こちらを参考にしました -> https://qiita.com/ekzemplaro/items/5675139269f0a93507bc

import urllib.request
import urllib.error
import re
import time

def getUserIDList(post_id):

   time.sleep(1)

   try:
       json_data = urllib.request.urlopen(
           url='https://twitter.com/i/activity/favorited_popup?id=' + str(post_id)).read().decode("utf-8")
       found_ids = re.findall(r'data-user-id=\\"+\d+', json_data)
       unique_ids = list(set([re.findall(r'\d+', match)[0] for match in found_ids]))
       return unique_ids
   except urllib.request.HTTPError:
       return False

1秒待たないと取得できないため、time.sleep(1)をつけています。

 最後にmainを書いていきます。まずは先ほどのgetapi()を使ってapi取得し、自分のツイートIDを取得します。

api = getapi()
results = api.user_timeline(screen_name="自分のアカウント名", count=好きな数

tweet_list = []
for tweet in results:
   tweet_list.append(tweet.id)

次に先ほど作成したいいねした人のIDを取得する関数を使用し、自分のツイートをいいねした人のユーザーIDを取得します。

uniqueID_list = []
for uniqueid in tweet_list:
   uniqueID_list += getUserIDList(uniqueid)

最後にフォローすれば完成です。このように書きました。

friendsIds = api.friends_ids()
friendsIds = str(friendsIds)
for uniqueID in uniqueID_list:
   if uniqueID not in friendsIds and uniqueID != '自分のアカウントID':
       try:
           api.create_friendship(uniqueID, True)
           print('%s をフォローしました' % uniqueID)
       except tweepy.error.TweepError:
           print('フォローできませんでした')

最後までお読みいただきありがとうございました。