From 15f5f1f6fc809dda3776a7688155f0826d1ba848 Mon Sep 17 00:00:00 2001 From: wlt233 <1486185683@qq.com> Date: Mon, 19 May 2025 16:49:16 +0800 Subject: [PATCH] feat: add retry (v2.0.1) --- twi_api.py | 7 +++++-- twitter.py | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/twi_api.py b/twi_api.py index d76140b..4b30326 100644 --- a/twi_api.py +++ b/twi_api.py @@ -1,8 +1,10 @@ import json +import os import traceback import httpx from loguru import logger +from retry import retry from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as ec @@ -53,7 +55,7 @@ def login(): WebDriverWait(driver, 30).until( ec.presence_of_element_located((By.CSS_SELECTOR, 'div[aria-label="Timeline: List"]'))) - logs = driver.get_log("performance") + logs = driver.get_log("performance") #with open("log.json", "w", encoding="utf-8") as f: json.dump(logs, f, ensure_ascii=False, indent=4) for packet in logs: message = json.loads(packet["message"])["message"] @@ -75,7 +77,7 @@ def login(): driver.quit() - +@retry(tries=3, delay=5) def get_list(list_id): logger.info(f"Check list https://x.com/i/lists/{list_id}") with open("config.json", "r", encoding="utf-8") as f: @@ -96,6 +98,7 @@ def get_list(list_id): ) if resp.status_code != 200: logger.error(f"Error fetching list {list_id}: {resp.status_code} {resp.text}") + os.remove("headers.json") return None logger.info(f"Checked {list_id}") return resp.json() diff --git a/twitter.py b/twitter.py index 9a4bf42..19a4ac5 100644 --- a/twitter.py +++ b/twitter.py @@ -54,9 +54,6 @@ def check_timeline(config): if __name__ == "__main__": - if not os.path.exists("headers.json"): - login() - with open("config.json", 'r') as f: config = json.load(f) check_list = config.get("check_list", []) @@ -66,6 +63,9 @@ if __name__ == "__main__": last_check_time = defaultdict(float) while 1: + if not os.path.exists("headers.json"): + login() + json_data = {} for group_id, group_config in check_list.items(): group_interval = group_config.get("interval", check_interval)