# @Author    : Rocky
# @File      : IPWeatherObject.py
# @Time      : 2023/8/16 8:56
import requests


class IPQuery:
    """
    阿里云IP地址查询
    https://market.aliyun.com/products/57002003/cmapi021970.html?spm=5176.2020520132.recommend-card.dbottom-suggestion.33e17218GYjWDt#sku=yuncode15970000020
    """

    def __init__(self, ip):
        self.appcode = 'd7d63b34b1d54214be446608a57ff0a2'
        self.host = 'https://c2ba.api.huachen.cn'
        self.path = '/ip'

        self.district = None
        self.country_id = None

        param = 'ip=' + ip
        url = self.host + self.path + '?' + param

        # 获取ip的区级和城市信息
        headers = {'Authorization': 'APPCODE ' + self.appcode}
        res = requests.get(url=url, headers=headers)
        if res.status_code == 200:
            # 反序列化响应数据
            res_data = eval(res.content.decode('utf-8'))
            if res_data['ret'] == 200:
                district = res_data['data']['district']
                city = res_data['data']['city'] + '市'
                country_id = res_data['data']['country_id']
                self.district = district if district else city
                self.country_id = country_id


class WeatherInfo:
    def __init__(self, city_id):
        self.appcode = 'd7d63b34b1d54214be446608a57ff0a2'
        self.headers = {'Authorization': 'APPCODE ' + self.appcode,
                        'Content-Type': 'application/x-www-form-urlencoded'}
        self.city_id = city_id

    def get_city_weather(self):
        url = "https://aliv18.data.moji.com/whapi/json/alicityweather/condition"  # 获取实时天气
        data = {'cityId': self.city_id}
        response = requests.post(url, headers=self.headers, data=data, verify=False)
        if response.status_code == 200:
            result = response.json()
            if result['code'] == 0:
                # 返回温湿度
                return result['data']['condition']['temp'], result['data']['condition']['humidity']
        return None, None
