diff --git a/server.py b/server.py index deec7c3..6415781 100644 --- a/server.py +++ b/server.py @@ -75,6 +75,7 @@ async def tweet_detail(): try: data = await get_detail(tweet_id) data = parse_detail(data) + data = list({ t["rest_id"]: t for t in data }.values()) return jsonify(data) except Exception as e: logger.error(f"Tweet detail api error: {e}") diff --git a/src/twi_parser.py b/src/twi_parser.py index 9dca295..985c3ef 100644 --- a/src/twi_parser.py +++ b/src/twi_parser.py @@ -26,11 +26,19 @@ def parse_entry(entry): elif ("list-conversation" in entry_id or "conversationthread" in entry_id \ and not "tweet" in entry_id): for item in entry["content"]["items"]: + if "promoted" in item["entryId"]: continue data = parse_content(item["item"]) if data: result.append(data) elif "cursor" in entry_id or "bottom" in entry_id: pass elif entry["content"]["__typename"] != 'TimelineTimelineCursor': + if "items" in entry["content"]: + for item in entry["content"]["items"]: + data = parse_content(item["item"]) + if data: result.append(data) + else: + data = parse_content(entry["content"]) + if data: result.append(data) data = parse_content(entry["content"]) if data: result.append(data) return result