edit: modified code logic

This commit is contained in:
RTAkland
2021-11-16 21:46:48 +08:00
parent 3aa25299b8
commit 0ef9054a89
8 changed files with 29 additions and 163 deletions

View File

@@ -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']

View File

@@ -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

View File

View File

@@ -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']