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)