baidu-reporter/app/engines/report_engine.py

80 lines
2.2 KiB
Python
Raw Normal View History

2025-03-30 22:49:37 +08:00
import threading
from loguru import logger
from .reporters.pc_reporter import PcReporter
from .reporters.site_reporter import SiteReporter
from .reporters.wap_reporter import WapReporter
class Reporter:
"""举报器,目前有三个渠道,以后可以继续扩展"""
def __init__(self, mode: list[str]):
# 初始化其他的 reporter
self.reporters = {
"pc": PcReporter(),
"wap": WapReporter(),
"site": SiteReporter(),
}
self.worker_thread = None
self.ev = threading.Event()
self.status = 1
self.mode = mode
def start(self):
self.worker_thread = threading.Thread(
target=self.worker, name="REPORTER", daemon=True
)
self.worker_thread.start()
def wait(self):
self.worker_thread.join()
2025-04-03 22:44:22 +08:00
# noinspection DuplicatedCode
2025-03-30 22:49:37 +08:00
def cli_start(self):
for mode in self.mode:
if mode == "pc":
self.reporters["pc"].run()
elif mode == "wap":
self.reporters["wap"].run()
elif mode == "site":
self.reporters["site"].run()
else:
logger.error(f"参数错误: {mode}")
continue
def stop(self):
2025-04-04 17:29:50 +08:00
for mode in self.mode:
if mode == "pc":
self.reporters["pc"].stop()
elif mode == "wap":
self.reporters["wap"].stop()
elif mode == "site":
self.reporters["site"].stop()
else:
logger.error(f"参数错误: {mode}")
continue
2025-03-30 22:49:37 +08:00
self.status = 0
self.ev.set()
2025-04-03 22:44:22 +08:00
# noinspection DuplicatedCode
2025-03-30 22:49:37 +08:00
def worker(self):
while self.status:
for mode in self.mode:
if mode == "pc" and self.status:
2025-03-30 22:49:37 +08:00
self.reporters["pc"].run()
elif mode == "wap" and self.status:
2025-03-30 22:49:37 +08:00
self.reporters["wap"].run()
elif mode == "site" and self.status:
2025-03-30 22:49:37 +08:00
self.reporters["site"].run()
else:
logger.error(f"参数错误: {mode}")
continue
2025-04-04 20:30:12 +08:00
self.ev.wait(10)