いいねしてくれた人をフォローする
タイトルの通りです。自分のツイートをいいねしてくれた人をフォローするプログラムの解説です。
前提: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('フォローできませんでした')
最後までお読みいただきありがとうございました。