feat: 添加机器编号支持,更新数据库记录状态时传递机器ID,并优化IP获取逻辑

This commit is contained in:
晓丰 2025-06-19 22:02:47 +08:00
parent 8be9db943f
commit b9c837ff11
2 changed files with 28 additions and 17 deletions

7
DB.py
View File

@ -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 = ""):

View File

@ -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)
time.sleep(5)