import json
import csv
from datetime import datetime

path_f = "followers.txt"
path_fd = "followers_detail.txt"
output = "followers_info.csv"
f_list = []
fd_list = []
output_list = []

with open(path_f, 'r', encoding='utf-8') as f:
    f_list = [json.loads(line)["data"] for line in f]

with open(path_fd, 'r', encoding='utf-8') as f:
    fd_list = [json.loads(line)["state"]["userDetails"]["userDetails"] for line in f]

f_len = len(f_list)
if(f_len != len(fd_list)):
    print("err: len not matched")
print(f"{f_len} data loaded")

follow_datetime = None
for i, (f, fd) in enumerate(zip(f_list, fd_list)):
    if(f["items"][0]["id"] != fd["user"]["id"]):
        print(f"[{i}] err: id not matched")
        break

    output_list.append({
        "id": fd["user"]["id"],
        "nickname": fd["user"]["nickname"],
        "followeeCount": fd["user"]["followeeCount"],
        "followerCount": fd["user"]["followerCount"],
        "isPremium": fd["user"]["isPremium"],
        "icon": fd["user"]["icons"]["large"],
        "follow_datetime": follow_datetime
    })
    print(f"[{i}] ok")

    cursor = f["summary"]["cursor"]
    follow_datetime = None if cursor == "cursorEnd" else str(datetime.strptime(cursor.split("_")[0], "%Y%m%d%H%M%S"))

with open(output, mode='w', newline='', encoding='utf-8-sig') as f:
    writer = csv.DictWriter(f, fieldnames=output_list[0].keys())
    writer.writeheader()
    writer.writerows(output_list)
Edit

Pub: 11 Nov 2025 13:44 UTC

Views: 8