PyBot/Core.py
2024-12-04 09:14:50 +08:00

147 lines
4.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import signal
from datetime import datetime
import sys
import time
import yaml
import requests
from SendBot import SendToFeishu
from media.common import run
from media.freebuf import freebuf_main
from media.xianzhi import xianzhi_main
from GotoSend_4hou import Src_4hou
from GotoSend_anquanke import Src_anquanke
from GotoSend_doonsec import Src_doonsec
# 加载参数
def get_params():
with open('./config.yaml', 'r', encoding="utf-8") as file:
config = yaml.safe_load(file)
sleep_time = int(f"{config['sleep_time']}")
s_hour = int(f"{config['s_hour']}")
e_hour = int(f"{config['e_hour']}")
c_hour = int(f"{config['c_hour']}")
return sleep_time, s_hour, e_hour, c_hour
sleep_time, s_hour, e_hour, c_hour = get_params()
def crab_job():
print("正在启动各爬虫并获取资源中...")
run()
xianzhi_main()
freebuf_main()
def send_job():
Src_4hou(s_hour, e_hour)
Src_anquanke(s_hour, e_hour)
Src_doonsec(s_hour, e_hour)
def signal_handler(sig, frame):
print("接收到退出信号,程序即将退出...")
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler) # Ctrl+C
signal.signal(signal.SIGTERM, signal_handler) # kill命令
def main_loop():
while True:
try:
# 获取当前时间
now = datetime.now()
# 检查是否为特定时间点
if now.hour == c_hour and now.minute == 5:
crab_job()
send_job()
print("执行完毕,等待下一次执行...")
else:
pass
# print("正在等待执行...")
# print("等待间隔:", int(sleep_time))
time.sleep(sleep_time) # 每隔35秒执行一次
except Exception as e:
print(f"发生错误: {e} ,程序已暂停")
# SendToFeishu(f"发生错误: {e} ,程序已退出", "报错信息")
exit()
# 探测rss源状态
def check_rss_status(url):
try:
response = requests.get(url, timeout=10)
if response.status_code == 200 and len(response.content) > 0:
return True
else:
return f"状态码: {response.status_code}, 内容长度: {len(response.content)}"
except requests.RequestException as e:
return f"请求异常: {str(e)}"
def test_rss_source():
rss_info = ""
url_1 = check_rss_status("https://forum.butian.net/Rss")
if url_1 == True:
rss_info += "奇安信 源正常\n"
else:
rss_info += f"奇安信 源异常: {url_1}\n"
url_2 = check_rss_status("https://wechat.doonsec.com/bayes_rss.xml")
if url_2 == True:
rss_info += "洞见 源正常\n"
else:
rss_info += f"洞见 源异常: {url_2}\n"
url_3 = check_rss_status("https://www.huawei.com/cn/rss-feeds/psirt/rss")
if url_3 == True:
rss_info += "华为 源正常\n"
else:
rss_info += f"华为 源异常: {url_3}\n"
url_4 = check_rss_status("https://www.sec_wiki.com/news/rss")
if url_4 == True:
rss_info += "安全维基 源正常\n"
else:
rss_info += f"安全维基 源异常: {url_4}\n"
url_5 = check_rss_status("https://api.anquanke.com/data/v1/rss")
if url_5 == True:
rss_info += "安全客 源正常\n"
else:
rss_info += f"安全客 源异常: {url_5}\n"
url_6 = check_rss_status("https://www.4hou.com/feed")
if url_6 == True:
rss_info += "嘶吼 源正常\n"
else:
rss_info += f"嘶吼 源异常: {url_6}\n"
url_7 = check_rss_status("https://paper.seebug.org/rss/")
if url_7 == True:
rss_info += "Seebug社区 源正常\n"
else:
rss_info += f"Seebug社区 源异常: {url_7}\n"
url_8 = check_rss_status("https://www.freebuf.com/feed")
if url_8 == True:
rss_info += "FreeBuf社区 源正常\n"
else:
rss_info += f"FreeBuf社区 源异常: {url_8}\n"
url_9 = check_rss_status("https://xz.aliyun.com/feed")
if url_9 == True:
rss_info += "先知社区 源正常\n"
else:
rss_info += f"先知社区 源异常: {url_9}\n"
return rss_info
if __name__ == "__main__":
print("程序正在运行当中。")
rss_info = test_rss_source()
start_info = ""
start_info += "程序已启动,当前时间为:" + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "\n"
start_info += "程序作者MasonLiu \t 开源地址:[GM-gitea](https://git.masonliu.com/MasonLiu/PyBot)" + "\n"
start_info += "时间配置:前一天 " + str(s_hour) + " 点到当天 " + str(e_hour) + " 点,每" + str(sleep_time) + "秒执行一次" + ";每日11点开始推送。" + "\n"
SendToFeishu(start_info, "程序信息")
# print(start_info)
SendToFeishu(rss_info, "RSS源状态")
# print(rss_info)
main_loop()