import requests
from .User import User


class Gift:
    ID = 0
    count = 0
    roomID = 0
    giftList = {}
    amount = 0
    user = None

    def __init__(self, json=None):
        if json:
            self.parse(json)

    def parse(self, json):
        self.user = User(json)
        if "common" in json and json["common"] is not None:
            if Gift.roomID != int(json["common"]["room_id"]):
                Gift.roomID = int(json["common"]["room_id"])
                self.update()
        if "extra" in json and json["extra"] is not None:
            if "present_info" in json["extra"] and json["extra"]['present_info'] is not None:
                self.ID = int(json["extra"]['present_info']['id'])
                self.count = json["extra"]['present_info']['repeat_count']
            elif "present_end_info" in json["extra"] and json["extra"]['present_end_info'] is not None:
                self.ID = int(json["extra"]['present_end_info']['id'])
                self.count = json["extra"]['present_end_info']['count']
        if self.ID != 0 and self.ID in self.giftList:
            self.amount = self.giftList[self.ID]["Price"] * self.count
        else:
            self.update()

    def update(self):
        p = requests.get("https://i.snssdk.com/videolive/gift/get_gift_list?room_id={roomID}"
                         "&version_code=730&device_platform=android".format(roomID = self.roomID))
        d = p.json()
        if "gift_info" not in d:
            print("错误:礼物更新失败")
        else:
            for i in d["gift_info"]:
                _id = int(i["id"])
                Gift.giftList[_id] = {"Name": i["name"], "Price": i["diamond_count"]}

    def __str__(self):
        if self.ID in self.giftList:
            giftN = self.giftList[self.ID]["Name"]
        else:
            giftN = "未知礼物[{}]".format(self.ID)
        return "{user} 送出的 {count} 个 {name}".format(user= self.user, count= self.count, name= giftN)

    def __unicode__(self):
        return self.__str__()