You've already forked QWeatherReporter
137 lines
5.8 KiB
Python
137 lines
5.8 KiB
Python
#!/usr/bin/env python3
|
|
# -- coding:utf-8 --
|
|
# @Author: markushammered@gmail.com
|
|
# @Development Tool: PyCharm
|
|
# @Create Time: 2021/12/15
|
|
# @File Name: information.py
|
|
|
|
import requests
|
|
|
|
|
|
class WeatherInfo:
|
|
def __init__(self, key: str, location: int, unit: str, language: str):
|
|
"""
|
|
|
|
:param key: Key
|
|
:param location: City
|
|
:param unit: Unit
|
|
:param language: Language
|
|
"""
|
|
self.dev = 'https://devapi.qweather.com/v7/weather/7d'
|
|
self.free = 'https://devapi.qweather.com/v7/weather/3d'
|
|
self.warning = 'https://devapi.qweather.com/v7/warning/now'
|
|
self.key = key
|
|
self.location = location
|
|
self.unit = unit
|
|
self.language = language
|
|
self.params = {'location': self.location,
|
|
'key': self.key,
|
|
'unit': self.unit,
|
|
'lang': self.language}
|
|
self.session = requests.Session()
|
|
self.session.trust_env = False
|
|
|
|
def dev_version(self):
|
|
"""
|
|
Developer's Qweather version
|
|
:return: dates, day_weathers, night_weathers, highest_temps, lowest_temps,
|
|
icon_list, sunset, sunrise, humidity, wind_speed, wind_scale, wind_dir, ultraviolet_rays, cloud, pressure, vis
|
|
"""
|
|
dev_res = self.session.get(self.dev, params=self.params).json()
|
|
|
|
day_1 = dev_res['daily'][0]
|
|
day_2 = dev_res['daily'][1]
|
|
day_3 = dev_res['daily'][2]
|
|
day_4 = dev_res['daily'][3]
|
|
day_5 = dev_res['daily'][4]
|
|
day_6 = dev_res['daily'][5]
|
|
day_7 = dev_res['daily'][6]
|
|
|
|
dates = [day_1['fxDate'][5:], day_2['fxDate'][5:], day_3['fxDate'][5:], day_4['fxDate'][5:],
|
|
day_5['fxDate'][5:],
|
|
day_6['fxDate'][5:],
|
|
day_7['fxDate'][5:]]
|
|
day_weathers = [day_1['textDay'], day_2['textDay'], day_3['textDay'], day_4['textDay'], day_5['textDay'],
|
|
day_6['textDay'], day_7['textDay']]
|
|
night_weathers = [day_1['textNight'], day_2['textNight'], day_3['textNight'], day_4['textNight'],
|
|
day_5['textNight'], day_6['textNight'], day_7['textNight']]
|
|
highest_temps = [day_1['tempMax'], day_2['tempMax'], day_3['tempMax'], day_4['tempMax'], day_5['tempMax'],
|
|
day_6['tempMax'], day_7['tempMax']]
|
|
lowest_temps = [day_1['tempMin'], day_2['tempMin'], day_3['tempMin'], day_4['tempMin'], day_5['tempMin'],
|
|
day_6['tempMin'], day_7['tempMin']]
|
|
icon_list = [day_1['iconDay'], day_2['iconDay'], day_3['iconDay'], day_4['iconDay'], day_5['iconDay'],
|
|
day_6['iconDay'], day_7['iconDay'], day_1['iconNight'], day_2['iconNight'], day_3['iconNight'],
|
|
day_4['iconNight'], day_5['iconNight'], day_6['iconNight'], day_7['iconNight']]
|
|
|
|
sunset = day_1['sunset']
|
|
sunrise = day_1['sunrise']
|
|
humidity = day_1['humidity']
|
|
wind_speed = day_1['windSpeedDay']
|
|
wind_scale = day_1['windScaleDay']
|
|
wind_dir = day_1['windDirDay']
|
|
ultraviolet_rays = day_1['uvIndex']
|
|
cloud = day_1['cloud']
|
|
pressure = day_1['pressure']
|
|
vis = day_1['vis']
|
|
|
|
return dates, day_weathers, night_weathers, highest_temps, lowest_temps, icon_list, sunset, sunrise, humidity, \
|
|
wind_speed, wind_scale, wind_dir, ultraviolet_rays, cloud, pressure, vis
|
|
|
|
def free_version(self):
|
|
"""
|
|
|
|
:return: return dates, day_weathers, night_weathers, highest_temps, lowest_temps, icon_list, sunset, sunrise,
|
|
humidity, wind_speed, wind_scale, wind_dir, ultraviolet_rays, cloud, pressure, vis
|
|
"""
|
|
|
|
free_res = self.session.get(self.free, params=self.params).json()
|
|
|
|
day_1 = free_res['daily'][0]
|
|
day_2 = free_res['daily'][1]
|
|
day_3 = free_res['daily'][2]
|
|
|
|
dates = [day_1['fxDate'][5:], day_2['fxDate'][5:], day_2['fxDate'][5:]]
|
|
day_weathers = [day_1['textDay'], day_2['textDay'], day_2['textDay']]
|
|
night_weathers = [day_1['textNight'], day_2['textNight'], day_2['textNight']]
|
|
highest_temps = [day_1['tempMax'], day_2['tempMax'], day_3['tempMax']]
|
|
lowest_temps = [day_1['tempMin'], day_2['tempMin'], day_2['tempMin']]
|
|
icon_list = [day_1['iconDay'], day_1['iconDay'], day_3['iconDay'], day_1['iconNight'], day_2['iconNight'],
|
|
day_3['iconNight']]
|
|
|
|
sunset = day_1['sunset']
|
|
sunrise = day_1['sunrise']
|
|
humidity = day_1['humidity']
|
|
wind_speed = day_1['windSpeedDay']
|
|
wind_scale = day_1['windScaleDay']
|
|
wind_dir = day_1['windDirDay']
|
|
ultraviolet_rays = day_1['uvIndex']
|
|
cloud = day_1['cloud']
|
|
pressure = day_1['pressure']
|
|
vis = day_1['vis']
|
|
|
|
return dates, day_weathers, night_weathers, highest_temps, lowest_temps, icon_list, sunset, sunrise, humidity, \
|
|
wind_speed, wind_scale, wind_dir, ultraviolet_rays, cloud, pressure, vis
|
|
|
|
def warning_(self):
|
|
"""
|
|
|
|
:return: release_time, title, status, level, type_, text, start_time, end_time
|
|
"""
|
|
warning_res = self.session.get(self.warning, params=self.params).json()
|
|
release_time = warning_res['warning'][0]['pubTime']
|
|
title = warning_res['warning'][0]['title']
|
|
status = warning_res['warning'][0]['status']
|
|
level = warning_res['warning'][0]['level']
|
|
type_ = warning_res['warning'][0]['typeName']
|
|
text = warning_res['warning'][0]['text']
|
|
start_time = ['warning'][0]['startTime']
|
|
end_time = warning_res['warning'][0]['endTime']
|
|
match start_time, end_time:
|
|
case None, None:
|
|
start_time, end_time = None, None
|
|
case _:
|
|
pass
|
|
|
|
return release_time, title, status, level, type_, text, start_time, end_time
|
|
|