This repository has been archived on 2025-12-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
QWeatherReporter/core/qweather.py
2021-12-18 21:40:48 +08:00

98 lines
2.9 KiB
Python

#!/usr/bin/env python3
# -- coding:utf-8 --
# @Author: markushammered@gmail.com
# @Development Tool: PyCharm
# @Create Time: 2021/12/15
# @File Name: qweather.py
import sys
import time
import argparse
from concurrent.futures import ProcessPoolExecutor
from core.logger import Logger
from core.language import Language
from core.settings import change_settings
from tests import webserver
from core import read_config
from core.sendmail import Mail
def check_time():
"""
if the local time is the time in config, send a mail
:return:
"""
mode = settings[1]['mode']
time_list = settings[2]['send-times']
match mode:
case 'dev':
while True:
local_time = time.strftime("%H:%M", time.localtime())
time.sleep(1)
if local_time in time_list:
Mail().dev_version()
Logger.info(f'{language["mail_succeed"]}')
Logger.info(f'{language["wait_seconds"]}')
time.sleep(60)
case 'free':
while True:
local_time = time.strftime("%H:%M", time.localtime())
time.sleep(1)
if local_time in time_list:
Mail().free_version()
Logger.info(f'{language["mail_succeed"]}')
Logger.info(f'{language["wait_seconds"]}')
time.sleep(60)
def main():
parser = argparse.ArgumentParser()
arg_keywords = ['free', 'dev', 'warning', 'setting']
parser.add_argument('-t',
'--test',
help='Some operations for test.',
choices=arg_keywords)
startup_arg = parser.parse_args().test
match startup_arg:
case 'free':
Mail().free_version()
Logger.debug(f'{language["debug_done"]}')
sys.exit(0)
case 'dev':
Mail().dev_version()
Logger.debug(f'{language["debug_done"]}')
sys.exit(0)
case 'warning':
Mail().warning_()
Logger.debug(f'{language["debug_done"]}')
sys.exit(0)
case 'setting':
change_settings(False)
Logger.debug(f'{language["debug_done"]}')
case _:
pass
processes.submit(check_time)
if settings[2]['webserver']:
processes.submit(webserver.process_request())
time_count = 0
while True:
time_count += 1
time.sleep(1)
if time_count == 600:
Mail().warning_()
time_count = 0
if __name__ != '__main__':
language = Language()
settings = read_config()
processes = ProcessPoolExecutor(max_workers=3)
Logger.info(f'{language["statement_1"]}')
Logger.info(f'{language["statement_2"]}')
Logger.info(f'{language["statement_3"]}')
Logger.info(f'{language["statement_4"]}')