You've already forked QWeatherReporter
edit: modified code logic
This commit is contained in:
52
QWeather.py
52
QWeather.py
@@ -575,17 +575,18 @@ def read_excel(kw: str):
|
|||||||
return city_list
|
return city_list
|
||||||
|
|
||||||
|
|
||||||
def first_start():
|
def modify_config(status: bool = False):
|
||||||
flag = os.path.isfile('./logs/flag')
|
if os.path.exists('./logs/flag') or not status:
|
||||||
if flag:
|
logger.info(f'[Modify]{language["fill_the_config"]}')
|
||||||
logger.info(language['input_a_city_name'])
|
logger.info(f'[Modify]{language["input_a_city_name"]}')
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
city_name = input('-->')
|
city_name = input('-->')
|
||||||
|
logger.info(f'[Modify]{language["reading_the_file"]}')
|
||||||
searched_city = read_excel(city_name)
|
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:
|
for cities in searched_city:
|
||||||
logger.info(f'{cities[0]}-{cities[1]}-{cities[2]}-{cities[3]}-{cities[4]}')
|
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)
|
time.sleep(0.5)
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
@@ -603,13 +604,14 @@ def first_start():
|
|||||||
data['only-view-settings']['user'] = getpass.getuser()
|
data['only-view-settings']['user'] = getpass.getuser()
|
||||||
with open('./config.yml', 'w', encoding='utf-8') as wf:
|
with open('./config.yml', 'w', encoding='utf-8') as wf:
|
||||||
YAML().dump(data, wf)
|
YAML().dump(data, wf)
|
||||||
logger.info(language['write_successfully'])
|
logger.info(f'[Write]{language["write_successfully"]}')
|
||||||
os.remove('./logs/flag')
|
|
||||||
break
|
break
|
||||||
except (IndexError, ValueError) as e:
|
except (IndexError, ValueError) as e:
|
||||||
logger.info(e)
|
logger.info(e)
|
||||||
logger.error(language['input_type_error'])
|
logger.error(f'[Write]{language["input_type_error"]}')
|
||||||
continue
|
continue
|
||||||
|
finally:
|
||||||
|
os.remove('./logs/flag')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@@ -642,6 +644,10 @@ if __name__ == '__main__':
|
|||||||
logger.addHandler(ConsoleLogger)
|
logger.addHandler(ConsoleLogger)
|
||||||
logger.addHandler(FileLogger)
|
logger.addHandler(FileLogger)
|
||||||
|
|
||||||
|
# 使用本地网络进行请求
|
||||||
|
session = requests.Session()
|
||||||
|
session.trust_env = False
|
||||||
|
|
||||||
# 获取语言配置
|
# 获取语言配置
|
||||||
with open(config_name, 'r', encoding='utf-8') as lang:
|
with open(config_name, 'r', encoding='utf-8') as lang:
|
||||||
config = YAML().load(lang.read())
|
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:
|
with open(f'./resource/lang/{language_sel}.json', 'r', encoding='utf-8') as lang_f:
|
||||||
language = json.loads(lang_f.read())
|
language = json.loads(lang_f.read())
|
||||||
|
|
||||||
first_start()
|
modify_config(True)
|
||||||
|
|
||||||
# 检查配置文件是否填写完成
|
|
||||||
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
|
|
||||||
|
|
||||||
# 获取参数
|
# 获取参数
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
@@ -674,7 +668,8 @@ if __name__ == '__main__':
|
|||||||
help='Some operations for test.',
|
help='Some operations for test.',
|
||||||
choices=['free',
|
choices=['free',
|
||||||
'dev',
|
'dev',
|
||||||
'warning'])
|
'warning',
|
||||||
|
'modify'])
|
||||||
arg_test = parser.parse_args().test
|
arg_test = parser.parse_args().test
|
||||||
if arg_test:
|
if arg_test:
|
||||||
if arg_test == 'dev':
|
if arg_test == 'dev':
|
||||||
@@ -689,6 +684,17 @@ if __name__ == '__main__':
|
|||||||
SendWeatherMail().warning_send_mail()
|
SendWeatherMail().warning_send_mail()
|
||||||
logger.debug(f'{language["debug_done"]}')
|
logger.debug(f'{language["debug_done"]}')
|
||||||
sys.exit(0)
|
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']
|
_times = config['client-settings']['send-times']
|
||||||
_mode = config['request-settings']['mode']
|
_mode = config['request-settings']['mode']
|
||||||
|
|||||||
113
config.yml
113
config.yml
@@ -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
|
|
||||||
|
|
||||||
@@ -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']
|
|
||||||
Reference in New Issue
Block a user