From 8019920dfb899d6d703717e272b8405dc59811a3 Mon Sep 17 00:00:00 2001 From: wlt233 <1486185683@qq.com> Date: Thu, 2 Jan 2025 13:34:51 +0800 Subject: [PATCH] feat: tweet filter (v1.1.0) --- config_template.json | 6 +++++- twitter.py | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/config_template.json b/config_template.json index ede85e3..471b03f 100644 --- a/config_template.json +++ b/config_template.json @@ -6,7 +6,11 @@ "check_interval": 42, "check_list": { "1145141919": { - "url": "https://x.com/i/lists/1873731145141919810" + "url": "https://x.com/i/lists/1873731145141919810", + "filter": [ + "only_image", + "only_origin" + ] } } } \ No newline at end of file diff --git a/twitter.py b/twitter.py index 7181345..3743cb0 100644 --- a/twitter.py +++ b/twitter.py @@ -163,10 +163,21 @@ def check_new_tweets(tweets, url): LATEST_TWEET_ID_DICT[url] = tweets[0]["rest_id"] return [] -def check_timeline(driver, url): - data = get_timeline(driver, url) +def filter_tweets(tweets, filter_list): + + if "only_image" in filter_list: + tweets = [t for t in tweets if t["media"]] + + if "only_origin" in filter_list: + tweets = [t for t in tweets if (not t["quoted"]) and (not t["retweeted"])] + + return tweets + +def check_timeline(driver, config): + data = get_timeline(driver, config["url"]) tweets = parse_timeline(data) - return check_new_tweets(tweets, url) + new_tweets = check_new_tweets(tweets, config["url"]) + return filter_tweets(new_tweets, config["filter"]) @@ -181,7 +192,7 @@ def main(config): json_data = {} check_list = config.get("check_list", []) for group_id, group_config in check_list.items(): - new_tweets = check_timeline(driver, group_config["url"]) + new_tweets = check_timeline(driver, group_config) if new_tweets: json_data[group_id] = new_tweets