From b9c837ff113a6eb714daa8aa15b5650410d48da1 Mon Sep 17 00:00:00 2001 From: Franklin-F Date: Thu, 19 Jun 2025 22:02:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E6=94=AF=E6=8C=81=EF=BC=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=AE=B0=E5=BD=95=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=97=B6=E4=BC=A0=E9=80=92=E6=9C=BA=E5=99=A8ID=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96IP=E8=8E=B7=E5=8F=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB.py | 7 ++++--- report.py | 38 ++++++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/DB.py b/DB.py index 4c30ac7..eabfb25 100644 --- a/DB.py +++ b/DB.py @@ -397,7 +397,7 @@ class DBVidcon: @mysql_retry() def update_fight_record_status(self, id: int, report_id: int, new_status: int, errinfo: str = "", report_time: int = 0, - subsequent_status: int = 1, ): + subsequent_status: int = 1, mid=0): sql = """ UPDATE sh_dm_fight_records @@ -407,12 +407,13 @@ class DBVidcon: updata_time = %s, report_id = %s, subsequent_status = %s, - report_time= %s + report_time= %s, + mid = %s WHERE id = %s """ now_ts = int(time.time()) - self.cursor.execute(sql, (new_status, errinfo, now_ts, report_id, subsequent_status, report_time, id)) + self.cursor.execute(sql, (new_status, errinfo, now_ts, report_id, subsequent_status, report_time, mid, id)) @mysql_retry() def update_subsequent_status_by_id(self, ssid: int, new_status: int, info: str = ""): diff --git a/report.py b/report.py index 054dd35..fb657e7 100644 --- a/report.py +++ b/report.py @@ -1,14 +1,14 @@ import argparse import time from DB import DBVidcon, DBSA -from dump_keyword_title import parse_args from report_video import DailymotionClient -import logger - +from logger import logger +import requests MACHINE_ID = None IsSubsequent = False + def parse_args() -> argparse.Namespace: global MACHINE_ID, IsSubsequent @@ -40,13 +40,25 @@ def parse_args() -> argparse.Namespace: raise ValueError("请指定机器编号") return args + parse_args() + +def get_public_ip(): + try: + response = requests.get("https://api.ipify.org?format=json", timeout=5) + return response.json().get("ip") + except requests.RequestException as e: + print("获取失败:", e) + return None + + +ip = get_public_ip() +logger.info(f"当前机器IP: {ip}, 机器编号: {MACHINE_ID}, 是否后续处理: {IsSubsequent}") db = DBVidcon() account = db.get_account_info(MACHINE_ID) - d = DailymotionClient(email=account['account'], password=account['password']) k = { @@ -58,10 +70,9 @@ k = { last_main_run = 0 last_subsequent_run = 0 -MAIN_INTERVAL = 60 * 5 # 每 5 分钟执行一次 +MAIN_INTERVAL = 60 * 5 # 每 5 分钟执行一次 SUBSEQUENT_INTERVAL = 60 * 60 # 每 60 分钟执行一次 - while True: now = int(time.time()) @@ -70,38 +81,37 @@ while True: last_main_run = now lis = db.item_report() if len(lis) > 0: - for _,li in lis: + for _, li in lis: print(li) logger.logger.info(f"name:{li['name_title']},link:{li['link']} ") try: info, report_id, status, report_ts = d.process_ticket(li['name_title'], li['link']) subsequent_status = k.get(status, 1) db.update_fight_record_status( - li['id'], report_id, 2, f"http://123.58.197.91:5000/image/{info}", - report_ts, subsequent_status + li['id'], report_id, 2, f"http://{ip}:5000/image/{info}", + report_ts, subsequent_status, MACHINE_ID ) db.flush() except Exception as e: logger.logger.error(f"ID:{li['id']}, e:{e}") - db.update_fight_record_status(li['id'], 0, 3, str(e)) + db.update_fight_record_status(li['id'], 0, 3, str(e), mid=MACHINE_ID) time.sleep(60) # 出错延迟 - if now - last_subsequent_run >= SUBSEQUENT_INTERVAL and IsSubsequent: last_subsequent_run = now subsequent_list = db.get_subsequent_report_video() if len(subsequent_list) > 0: - for li in subsequent_list: + for li in subsequent_list: rs_id = li['id'] r_id = li['report_id'] logger.logger.info(f"subsequent id:{rs_id},report_id:{r_id} ") # try: subsequent_status, info = d.report_follow_up(r_id) db.update_subsequent_status_by_id( - rs_id, subsequent_status, f"http://123.58.197.91:5000/image/{info}" + rs_id, subsequent_status, f"http://{ip}:5000/image/{info}" ) # except Exception as e: # logger.logger.error(f"ID:{rs_id}, e:{e}") # db.update_subsequent_status_by_id(rs_id, 1, str(e)) time.sleep(5) # 避免频繁请求 - time.sleep(5) \ No newline at end of file + time.sleep(5)