diff --git a/QWeather.py b/QWeather.py index a0ef06e..b33f279 100644 --- a/QWeather.py +++ b/QWeather.py @@ -30,8 +30,6 @@ class SendWeatherMail: def __init__(self): with open(CONFIG_NAME, 'r', encoding='utf-8') as config_f: self.config = YAML().load(config_f) - with open('resource/type_warning.json', 'r', encoding='utf-8') as type_f: - self.type_name = json.loads(type_f.read()) self.location = self.config['request-settings']['location'] # 城市ID self.key = self.config['request-settings']['key'] # API密钥 @@ -43,16 +41,9 @@ class SendWeatherMail: self.password = self.config['mail-settings']['password'] # 服务器登录密码 self.server = self.config['mail-settings']['server'] # 邮箱服务器 self.port = self.config['mail-settings']['port'] # 邮箱端口号 - self.icon_style = self.config['client-settings']['icon-style'] # 天气图标 self.enableSSL = self.config['client-settings'] # 是否使用SSL连接到邮箱服务器 self.city_name = self.config['only-view-settings']['city-name'] # 城市名称仅作邮件内容 - self.style_list = ['style1', 'style2', 'style3'] - - # 如果配置文件内填错 默认选择第一套图标(style1) - if self.icon_style not in self.style_list: - self.icon_style = 'style1' - self.dev_url = 'https://devapi.qweather.com/v7/weather/7d' # 开发版本天气信息url self.free_url = 'https://devapi.qweather.com/v7/weather/3d' # 免费版本天气信息url self.warning_url = 'https://devapi.qweather.com/v7/warning/now' # 自然灾害预警信息url @@ -259,17 +250,17 @@ class SendWeatherMail: # 循环将图片attach到html里 image_count = 1 for image_resource in icon_list: - with open(f'./resource/{self.icon_style}/{image_resource}.png', 'rb') as fp: + with open(f'./resource/icons/{image_resource}.png', 'rb') as fp: MyImage = MIMEImage(fp.read()) MyImage.add_header('Content-ID', f'img{image_count}') self.message.attach(MyImage) image_count += 1 - with open('resource/basic-resources/sunrise.png', 'rb') as sr_f: + with open('./resource/basic-resources/sunrise.png', 'rb') as sr_f: sunrise_img = MIMEImage(sr_f.read()) sunrise_img.add_header('Content-ID', 'sunrise') self.message.attach(sunrise_img) - with open('resource/basic-resources/sunset.png', 'rb') as ss_f: + with open('./resource/basic-resources/sunset.png', 'rb') as ss_f: sunset_img = MIMEImage(ss_f.read()) sunset_img.add_header('Content-ID', 'sunset') self.message.attach(sunset_img) @@ -412,7 +403,7 @@ class SendWeatherMail: image_count = 1 for image_source_free in icon_list: - with open(f'./resource/{self.icon_style}/{image_source_free}.png', 'rb') as file: + with open(f'./resource/icons/{image_source_free}.png', 'rb') as file: MyImage = MIMEImage(file.read()) MyImage.add_header('Content-ID', f'img{image_count}') self.message.attach(MyImage) @@ -450,20 +441,19 @@ class SendWeatherMail: 如果不为空则单独发送一封邮件 :return: """ - r = session.get(self.warning_url, headers=self.headers, params=self.params) - data = r.json() + r = session.get(self.warning_url, headers=self.headers, params=self.params).json() - logger.info(f'{language["request_result_warning"]}:{data["code"]}') - if data['warning']: - public_time = data['warning'][0]['pubTime'] - title = data['warning'][0]['title'] - start_time = data['warning'][0]['startTime'] - end_time = data['warning'][0]['endTime'] + logger.info(f'{language["request_result_warning"]}:{r["code"]}') + if r['warning']: + public_time = r['warning'][0]['pubTime'] + title = r['warning'][0]['title'] + start_time = r['warning'][0]['startTime'] + end_time = r['warning'][0]['endTime'] if not start_time: start_time = None elif not end_time: end_time = None - warning_status = data['warning'][0]['status'] + warning_status = r['warning'][0]['status'] if warning_status == 'update': warning_status = {language["new_warning"]} logger.info(f'{language["new_warning"]}') @@ -473,10 +463,9 @@ class SendWeatherMail: elif warning_status == 'cancel': logger.info(f'{language["warning_canceled"]}') - level = data['warning'][0]['level'] - type_ = data['warning'][0]['type'] - type_ = self.type_name[type_] # 将数字type转换为文字 - text = data['warning'][0]['text'] + level = r['warning'][0]['level'] + type_ = r['warning'][0]['typeName'] + text = r['warning'][0]['text'] self.message['Subject'] = language['subject_war'] self.message['Subject'] = f'{title}' mail_html = f""" @@ -491,7 +480,7 @@ class SendWeatherMail:

{title}

{language['release_time']}:{public_time[:10]} {level}{language['early_warning']}

- {language['warning_status']}:{warning_status} {language['warning_type']}:{type_} {language['warning_duration']}:{start_time[:10]}-{end_time[:10]} + {language['warning_status']}:{warning_status} {language['warning_type']}:{type_} {language['warning_duration']}:{start_time[:10]}~{end_time[:10]}
{text}

diff --git a/resource/type_warning.json b/resource/type_warning.json deleted file mode 100644 index 2697cf2..0000000 --- a/resource/type_warning.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "11B01": "台风", - "11B02": "龙卷风", - "11B03": "暴雨", - "11B04": "暴雪", - "11B05": "寒潮", - "11B06": "大风", - "11B07": "沙尘暴", - "11B08": "低温冻害", - "11B09": "高温", - "11B10": "热浪", - "11B11": "干热风", - "11B12": "下击暴流", - "11B13": "雪崩", - "11B14": "雷电", - "11B15": "冰雹", - "11B16": "霜冻", - "11B17": "大雾", - "11B18": "低空风切变", - "11B19": "霾", - "11B20": "雷雨大风", - "11B21": "道路结冰", - "11B22": "干旱", - "11B23": "海上大风", - "11B24": "高温中暑", - "11B25": "森林火险", - "11B26": "草原火险", - "11B27": "冰冻", - "11B28": "空间天气", - "11B29": "重污染", - "11B30": "低温雨雪冰冻", - "11B31": "强对流", - "11B32": "臭氧", - "11B33": "大雪", - "11B34": "寒冷", - "11B35": "连阴雨", - "11B36": "渍涝风险", - "11B37": "地质灾害气象风险", - "11B38": "强降雨", - "11B39": "强降温", - "11B40": "雪灾", - "11B41": "森林(草原)火险", - "11B42": "医疗气象", - "11B43": "雷暴", - "11B44": "停课信号", - "11B45": "停工信号", - "11B46": "海上风险", - "11B47": "春季沙尘天气", - "11B48": "降温", - "11B49": "台风暴雨", - "11B50": "严寒", - "11B51": "沙尘", - "11B52": "海上雷雨大风", - "11B53": "海上大雾", - "11B54": "海上雷电", - "11B55": "海上台风", - "11B56": "低温", - "11B57": "道路冰雪", - "11A01": "洪水", - "11B101": "大风", - "11B102": "强降雪和结冰", - "11B103": "大雾", - "11E101": "海岸风险", - "11B104": "森林火险", - "11B105": "雨", - "11A106": "大雨洪水", - "11B99": "其他" -} \ No newline at end of file