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 = []

for p, l in [[path_f, f_list], [path_fd, fd_list]]:
    with open(p, 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if not line:
                continue
            try:
                data = json.loads(line)["data"]
                l.append(data)
            except json.JSONDecodeError as e:
                print(e)

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

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

    if(f["items"][0]["nickname"] != fd["user"]["nickname"]):
        print(f"[{i}] err: nickname not matched")
        break

    if(i == 0):
        follow_datetime = "N/A"

    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 Report
Pub: 30 Apr 2025 05:50 UTC
Views: 25