Your Name 33aca60f56 feat: 更新配置并优化消息发送逻辑
- 修改配置中的接收者名称和发送时间
- 在scheduler.py中添加周末不执行任务的逻辑
- 在sendmsg.py中支持多种图片格式并延长重试间隔
2025-08-18 16:58:14 +08:00

95 lines
2.9 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.

from wxauto import WeChat
from datetime import date, datetime, time as dt_time
import sys
import os
import subprocess
import json
from config import CONFIG
import time
def wait_until_time():
"""等待到配置的发送时间"""
now = datetime.now()
# 从配置文件中读取发送时间
send_time_str = CONFIG['sending_time'] # "17:10"
hour, minute = map(int, send_time_str.split(':'))
target_time = now.replace(hour=hour, minute=minute, second=0, microsecond=0)
# 如果当前时间已经过了今天的发送时间,则设置为明天的发送时间
if now >= target_time:
target_time = target_time.replace(day=target_time.day + 1)
wait_seconds = (target_time - now).total_seconds()
print(f"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"将在 {target_time.strftime('%Y-%m-%d %H:%M:%S')} 执行发送操作")
print(f"等待时间: {wait_seconds/3600:.2f} 小时")
time.sleep(wait_seconds)
def send_daily_message(count):
"""发送每日消息的主函数"""
today = date.today()
formatted_date = today.strftime('%Y-%m-%d')
# 支持多种图片格式jpg, jpeg, png
file_formats = [".jpg", ".jpeg", ".png"]
# 初始化文件路径变量
file_path = None
num = count
if num >= 4:
print("已尝试4次程序将退出")
sys.exit(0) # 直接终止程序
try:
wx = WeChat()
except:
subprocess.run([sys.executable, 'send_openmsg.py'])
if num<4:
time.sleep(1800)
num += 1
send_daily_message(num)
else:
print("已尝试4次程序将退出")
sys.exit(0) # 直接终止程序
msg = CONFIG['message']
who = CONFIG['messages_reciever']
# 依次检查各种格式的文件是否存在
for format in file_formats:
temp_file_name = formatted_date + format
temp_file_path = CONFIG['file_path'] + temp_file_name
if os.path.isfile(temp_file_path):
file_path = temp_file_path
print(f"找到了{format}格式的图片文件!")
break
if file_path:
# 等待到配置的时间再执行发送操作
wait_until_time()
print("开始发送文件和消息...")
wx.SendFiles(filepath=file_path, who=who)
wx.SendMsg(msg=msg, who=who)
print("发送完成!")
return True
else:
print("没找到任何支持格式的图片文件(.jpg, .jpeg, .png)")
subprocess.run([sys.executable, 'send_filemsg.py'])
if num<4:
time.sleep(1800)
num += 1
send_daily_message(num)
else:
print("已尝试4次程序将退出")
sys.exit(0) # 直接终止程序
# 如果直接运行此脚本,执行发送消息功能
if __name__ == "__main__":
count = 0
send_daily_message(count)