diff --git a/QWeather.py b/QWeather.py index c7f131b..775a09e 100644 --- a/QWeather.py +++ b/QWeather.py @@ -575,17 +575,18 @@ def read_excel(kw: str): return city_list -def first_start(): - flag = os.path.isfile('./logs/flag') - if flag: - logger.info(language['input_a_city_name']) +def modify_config(status: bool = False): + if os.path.exists('./logs/flag') or not status: + logger.info(f'[Modify]{language["fill_the_config"]}') + logger.info(f'[Modify]{language["input_a_city_name"]}') time.sleep(0.5) city_name = input('-->') + logger.info(f'[Modify]{language["reading_the_file"]}') searched_city = read_excel(city_name) - logger.info(f'{language["user_input"]} [{city_name}]') + logger.info(f'[Modify]{language["user_input"]}:[{city_name}]') for cities in searched_city: logger.info(f'{cities[0]}-{cities[1]}-{cities[2]}-{cities[3]}-{cities[4]}') - logger.info(language['select_a_index']) + logger.info(f'[Modify]{language["select_a_index"]}') time.sleep(0.5) while True: try: @@ -603,13 +604,14 @@ def first_start(): data['only-view-settings']['user'] = getpass.getuser() with open('./config.yml', 'w', encoding='utf-8') as wf: YAML().dump(data, wf) - logger.info(language['write_successfully']) - os.remove('./logs/flag') + logger.info(f'[Write]{language["write_successfully"]}') break except (IndexError, ValueError) as e: logger.info(e) - logger.error(language['input_type_error']) + logger.error(f'[Write]{language["input_type_error"]}') continue + finally: + os.remove('./logs/flag') if __name__ == '__main__': @@ -642,6 +644,10 @@ if __name__ == '__main__': logger.addHandler(ConsoleLogger) logger.addHandler(FileLogger) + # 使用本地网络进行请求 + session = requests.Session() + session.trust_env = False + # 获取语言配置 with open(config_name, 'r', encoding='utf-8') as lang: config = YAML().load(lang.read()) @@ -653,19 +659,7 @@ if __name__ == '__main__': with open(f'./resource/lang/{language_sel}.json', 'r', encoding='utf-8') as lang_f: language = json.loads(lang_f.read()) - first_start() - - # 检查配置文件是否填写完成 - check_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"]}\n') - - # 使用本地网络进行请求 - session = requests.Session() - session.trust_env = False + modify_config(True) # 获取参数 parser = argparse.ArgumentParser() @@ -674,7 +668,8 @@ if __name__ == '__main__': help='Some operations for test.', choices=['free', 'dev', - 'warning']) + 'warning', + 'modify']) arg_test = parser.parse_args().test if arg_test: if arg_test == 'dev': @@ -689,6 +684,17 @@ if __name__ == '__main__': SendWeatherMail().warning_send_mail() logger.debug(f'{language["debug_done"]}') sys.exit(0) + elif arg_test == 'modify': + modify_config(False) + logger.info(f'{language["debug_done"]}') + + # 检查配置文件是否填写完成 + check_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"]}\n') _times = config['client-settings']['send-times'] _mode = config['request-settings']['mode'] diff --git a/config.yml b/config.yml deleted file mode 100644 index fcbcebb..0000000 --- a/config.yml +++ /dev/null @@ -1,113 +0,0 @@ -# !!! 注意 !!! # -# 填写数据时请在冒号后加一个空格. 例如: -# example:"" [no] -# example: "" [yes] - -# 邮箱类设置 -mail-settings: - - # [必填/只能一个] 邮件代发邮箱 - sender: - - - # [必填/只能一个] 代发邮箱登录密码 - # 具体申请方法自行搜索 - password: - - - # [必填/只能一个] 代发邮箱服务器 - # 如example@yeah.net 服务器则为: smtp.yeah.net - # qq邮箱: smtp.qq.com - # 163邮箱: smtp.163.com - server: - - - # [必填/只能一个] 服务器端口 - # 连接方式使用SSL连接 - # 默认: 465 - port: 465 - - -# API请求设置 -request-settings: - - # [必填/只能一个] API密钥 - # 注册账号前往: https://id.qweather.com/#/register?redirect=https%3A%2F%2Fconsole.qweather.com - # 申请key前往: https://dev.qweather.com/docs/start/get-key/ - # 变更用户类型前往: https://dev.qweather.com/help/account/#account-type - key: - - - # [必填/只能一个] 地区ID代码 - # 请勿擅自修改 更改地区ID请在./logs 目录文件下新建 `flag`文件(不带后缀名) - location: - - - # [必填/只能一个] 发送模式 - # 可选: "free", "dev" - # 默认: free - # free代表只能获取3天的天气并且不会附带一条生活建议 - # dev代表可以获取7天的天气并且附带一条生活建议 - # 注: 两种模式都支持获取自然灾害预警 - mode: free - - - # [选填/只能一个] 度量单位 - # 可选: "m", "i" - # 默认: m - # m代表公制单位 例如"今天温度为27 ℃", "能见度为10 km" - # i代表英制单位 例如"今天温度27 ℉", "能见度为10 mile" - # 了解更多请前往: https://dev.qweather.com/docs/start/unit/ - unit: m - - - # [选填/只能一个] 返回数据语言 - # 可选: *请前往 https://dev.qweather.com/docs/start/language/ 查看* - # 默认: zh - lang: zh - - # [必填/可多个] 邮件接收者 不管有几个必须是列表 - # 填写示例: - # receiver: - # -example@example.com - # -example@example.com - # -example@example.com - receiver: - - example@example.com - - example@example.com - - example@example.com - - -# 客户端设置 -client-settings: - - # [必填/只能一个] 图标风格 - # 默认: "style1" - # 可选: "style1" , "style2" , "style3" - # 注: style1为简约无色图标 style2为简约有色图标 style3为彩色图标 - icon-style: style1 - - - # [必填/可多个] 发送邮件时间 不管有几个必须是列表 - # 默认: ['08:00', '12:00', '18:00'] - # 具体填写见 *receiver* 示例 - send-times: - - 08:00 - - 12:00 - - 18:00 - - # [必填/只能一个] 本地语言选项 此项影响控制台输出的语言和邮件html的部分语言 - # 默认: zh_cn - # 可选: "zh_cn" "en_us" - # 不填或填错默认 "zh_cn" - language: zh_cn - -# [标识/不填] 仅作用户读取标识 -only-view-settings: - # 城市名 - city-name: 黄岩-浙江省-台州 - # 修改时间 - time: Mon Nov 15 2021 22:24:01 - # 修改用户 - user: Tapso - diff --git a/module/__init__.py b/lib/__init__.py similarity index 100% rename from module/__init__.py rename to lib/__init__.py diff --git a/module/API_24hour_weathers.py b/lib/get_24_hour_weather.py similarity index 100% rename from module/API_24hour_weathers.py rename to lib/get_24_hour_weather.py diff --git a/module/API_Indices.py b/lib/get_indices.py similarity index 100% rename from module/API_Indices.py rename to lib/get_indices.py diff --git a/module/API_real_time_air_quality.py b/lib/get_real_time_air_quality.py similarity index 100% rename from module/API_real_time_air_quality.py rename to lib/get_real_time_air_quality.py diff --git a/logs/flag b/logs/flag deleted file mode 100644 index e69de29..0000000 diff --git a/module/API_get_warning_list.py b/module/API_get_warning_list.py deleted file mode 100644 index 766079e..0000000 --- a/module/API_get_warning_list.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# @Author: markushammered@gmail.com -# @Development Tool: PyCharm -# @Create Time: 2021/9/29 -# @File Name: API_get_warning_list.py: - -""" -开发版key使用此API可以快速返回正在预警的城市id -Only Dev-mode -""" - -import requests -import json -from ruamel.yaml import YAML - - -def get_warning_list(_range='cn'): - yaml = YAML() - with open('./config.yml', 'r', encoding='utf-8') as f: - config = yaml.load(f.read()) - key = config['request-settings']['key'] - session = requests.Session() - session.trust_env = False - r = session.get(f'https://devapi.qweather.com/v7/warning/list?range={_range}&key={key}') - _data = json.loads(r.text) - return _data['code'], _data['warningLocList'][0]['locationId']