#!/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 core.logger import Logger from core.language import Language from core.settings import change_settings from core import read_config from core.sendmail import Mail from multiprocessing import Process 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 Process(target=check_time).run() 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() Logger.info(f'{language["statement_1"]}') Logger.info(f'{language["statement_2"]}') Logger.info(f'{language["statement_3"]}') Logger.info(f'{language["statement_4"]}')