見出し画像

noteアカウントのフォロー片思いチェッカーを作った【note API】

今回は「note APIでフォロー状況をチェックしてみた」です。これ用にウンコみたいなサイトを作りましたので、誰でも触れます!


出来る事を紹介

  • 自分のnoteユーザ(他人でも出来るけど)で、フォローされてるのにフォローしかえしてくれてない人を確認できる

  • 逆にフォローしてるのにフォローし返してくれない人の確認ができる


事前に準備してほしいもの

自分のユーザ名(ニックネームじゃないです)をご確認ください。自分のページに行った時、アドレスバーに表示されるのが自分のユーザ名です。僕の場合はtakahiro_yazuです。日ごろ表示されるニックネームではないのでご注意ください。


利用方法

以下のインターネット黎明期みたいなサイトにアクセスして、ユーザ名を入力するだけです!!!パスワードは入力しませんからアカウント情報が抜かれるということはありません。またSSL通信で暗号化されますので安心してご利用ください。

以下のようにユーザ名を入力して「検索する」を押せば、自分のフォロー状況を確認できます(表示は5秒ぐらいかかります)

上の方に表示されるのは「相手からフォローされてるのに自分がフォローを忘れてる」ユーザのリストです。「確認」を押せば、対象ユーザのページに飛んでフォローしにいけます。お迎えに行ってあげてください。
下の方にずずいと行ってくれると「自分がフォローしてるのに相手からフォローしてくれない」ユーザのリストです。こちらはどうしようもないので木陰から熱い視線を送るなりしましょう。


ということで、片思いチェッカーをどうぞよろしくお願いします。サーバもこのため用に無料で借りたんですが、まあまあ使い勝手よかったです。知れてよかった。また一つ頭がよくなりました。


【参考】コードについて

現物とは若干異なるものの、ほぼほぼAPIのコードです。参考でおいておきます。ご興味のある方はどうぞ。サーバがpip使えなかったんでrequestsはやめて標準モジュールであるurllibを使ってます。

 #import  requests
from urllib import request
import json
import traceback
from datetime import datetime

####################################################
# フォロワー・フォローユーザの差分チェックスクリプト
####################################################

####################################################
# Variable
####################################################
# ユーザ名
user_name = 'ユーザ名'

# API URL
base_url = f'https://note.com/api/v2/creators/{user_name}'
followers_url = f'{base_url}/followers?page='
followings_url = f'{base_url}/followings?page='

####################################################
# Function 
####################################################

# APIからデータを取得する関数
def get_api_data(url):
    r = request.urlopen(url)
    return json.loads(r.read())

# 該当ユーザのフォロワー情報を出力する
def get_userlist(url):
    
    users = []
    page = 1

    while True:
        target_url = f'{url}{page}'
        datas = get_api_data(target_url)
        for i in datas["data"]["follows"]:
            users.append({"urlname":i["urlname"],"name":i["name"]})

        # 最終ページチェック
        if datas["data"]["isLastPage"]:
            break
        else:
            page += 1
    return users

# 二つのフォローリスト(フォロー、フォロワー)を比較して漏れを出力する
def diff_users(list1,list2):
    diff_users = []
    for i1 in list1:
        for i2 in list2:
            if i1["urlname"] == i2["urlname"]:
                break
        else:
            diff_users.append(i1)

    return diff_users

####################################################
# MAIN
####################################################
if __name__ == '__main__':
    try:
        now = datetime.now()
        print('---Start Script---')
        print(f'start :{now}')
        print('------')

        # 該当ユーザのフォロワー情報を取得する
        followers = get_userlist(followers_url)

        # 該当ユーザのフォロー情報を取得する
        followings = get_userlist(followings_url)

        # フォロワーにはいるが、フォローはしていないユーザリスト(フォロー忘れ)
        miss_followings = diff_users(followers,followings)

        # フォローはしているが、フォロワーにはいないユーザリスト(フォローしてくれなくて悲しい)
        miss_followers = diff_users(followings,followers)

        print('')
        print('★★★フォロー忘れのユーザ★★★')
        for i in miss_followings:
            print(f'name: {i["name"]}, urlname: {i["urlname"]}')

        print('')
        print('★★★フォローしてるけどフォローされていないユーザ★★★')
        for i in miss_followers:
            print(f'name: {i["name"]}, urlname: {i["urlname"]}')
        print('')

    except Exception as e:
        print(f'cauth {type(e)}: {e}')
        print(traceback.format_exc())

    finally:
        finish = datetime.now()
        print(' ---Finish---')
        print(f'start :{finish}')


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