From 320dbd72053232e71d03d6fcf48acfab53ede917 Mon Sep 17 00:00:00 2001 From: wlt233 <1486185683@qq.com> Date: Fri, 3 Jan 2025 14:17:56 +0800 Subject: [PATCH] feat: parse choice card (v1.5.0) --- twitter.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/twitter.py b/twitter.py index 313def6..72f5cfb 100644 --- a/twitter.py +++ b/twitter.py @@ -142,6 +142,14 @@ def parse_entities(entity): if "display_url" in entity: data["text"] = entity["display_url"] return data +def parse_card(card): + data = {} + for v in card["legacy"]["binding_values"]: + if "choice" in v["key"] or v["key"] in ["end_datetime_utc"]: + value_name = f"{v['value']['type'].lower()}_value" + data[v["key"]] = v['value'].get(value_name, "") + return data + def parse_tweet(tweet): # with open("tweet.json", "w") as f: json.dump(tweet, f) while not "rest_id" in tweet: tweet = tweet["tweet"] @@ -157,7 +165,8 @@ def parse_tweet(tweet): "media": [], "entities": [], "quoted": {}, - "retweeted": {} + "retweeted": {}, + "card": {} } for m in tweet["legacy"]["entities"].get("media", []): @@ -168,6 +177,9 @@ def parse_tweet(tweet): data["entities"].append(parse_entities(m)) data["entities"].sort(key=lambda x: x["indices"][0]) + if "card" in tweet: + data["card"] = parse_card(tweet["card"]) + return data