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