处理 Giscus—Github Discussion 数据
Previous Page: The exporting of Github Discussion data.
python
Replace the Data with Yours
data=[{},{},{}] # 注意将 null 替换为 None,false 替换为 False
output=""
from datetime import datetime, timedelta, timezone
di=[]
for i in data:
if i["parent_id"] is None:
di.append(i["id"])
d={}
wd=["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
for i in data:
dt_utc1 = datetime.strptime(i["created_at"], "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
dt_beijing1 = dt_utc1.astimezone(timezone(timedelta(hours=8)))
formatted1 = dt_beijing1.strftime("%Y 年 %m 月 %d 日 %H:%M:%S, {}".format(wd[dt_beijing1.weekday()]))
pf=formatted1
dt_utc2 = datetime.strptime(i["updated_at"], "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
dt_beijing2 = dt_utc2.astimezone(timezone(timedelta(hours=8)))
formatted2 = dt_beijing2.strftime("%Y 年 %m 月 %d 日 %H:%M:%S, {}".format(wd[dt_beijing2.weekday()]))
uf=formatted2
if i["parent_id"]:
d[i["parent_id"]] = d.get(i["parent_id"], [])
if (dt_utc2 - dt_utc1).seconds > 5:
str="""> > {}
> >
> > P:{}
> > U:{}""".format(i["body"].replace("\r\n","\n").replace("\n","\n> > "), pf, uf)
else:
str="""> > {}
> >
> > P:{}""".format(i["body"].replace("\r\n","\n").replace("\n","\n> > "), pf)
d[i["parent_id"]].append({i["id"]:str})
for i in data[::-1]:
id = i["id"]
content=i["body"].replace("\r\n","\n").replace("\n","\n> ")
dt_utc1 = datetime.strptime(i["created_at"], "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
dt_beijing1 = dt_utc1.astimezone(timezone(timedelta(hours=8)))
formatted1 = dt_beijing1.strftime("%Y 年 %m 月 %d 日 %H:%M:%S, {}".format(wd[dt_beijing1.weekday()]))
pubf=formatted1
dt_utc2 = datetime.strptime(i["updated_at"], "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
dt_beijing2 = dt_utc2.astimezone(timezone(timedelta(hours=8)))
formatted2 = dt_beijing2.strftime("%Y 年 %m 月 %d 日 %H:%M:%S, {}".format(wd[dt_beijing2.weekday()]))
upf=formatted2
if i["id"] in d.keys():
child="""
> > <br>
"""
ii=[]
for j in d[i["id"]]:
ii.append(list(j.values())[0])
child=child.join(ii)
if (dt_utc2-dt_utc1).seconds>5:
str = """
> {}
{}
>
> P:{}
> U:{}
""".format(content,child,pubf,upf)
else:
str = """
> {}
{}
>
> P:{}
""".format(content,child,pubf)
output+=str
else:
if i["id"] in di:
if (dt_utc2 - dt_utc1).seconds > 5:
str = """
> {}
>
> P:{}
> U:{}
""".format(content,pubf,upf)
else:
str = """
> {}
>
> P:{}
""".format(content,pubf)
output += str
with open("a.txt","w", encoding="utf-8") as a:
a.write(output)
- Total words: 612 -
Read other posts