示例#1
0
    def __str__(self):
        result = ["GPD Setting"]
        if self.setting_id in GPDID.types:
            result.append("%s" % GPDID.types[self.setting_id])
        else:
            result.append(hex(self.setting_id))

        if self.content_id > 0 and self.content_id < 6:
            try:
                if GPDID.types[self.setting_id] == 'Region':
                    result.append(GamerTagConstants.Region[self.data])
                elif GPDID.types[self.setting_id] == 'GamerZone':
                    result.append(GamerTagConstants.GamerZone[self.data])
                else:
                    result.append(str(self.data))
            except KeyError:
                result.append(str(self.data))

        if self.content_id == 7:
            result.append(time.ctime(xboxtime.filetime2unixtime(self.data)))
        return " ".join(result)
示例#2
0
    def __init__(self, data, byte_order = '>'):
        self.achievement_id = None
        self.image_id = None
        self.gamer_score = None
        self.flags = None
        self.unlock_time = None
        self.name = None
        self.locked_desc = None
        self.unlocked_desc = None
        self.magic = struct.unpack(byte_order + 'I', data[0:4])[0]
        if self.magic != 28 or len(data) < 28:
            return
        self.achievement_id = struct.unpack(byte_order + 'I', data[4:8])[0]
        self.image_id = struct.unpack(byte_order + 'I', data[8:12])[0]
        self.gamer_score = struct.unpack(byte_order + 'I', data[12:16])[0]
        self.flags = struct.unpack(byte_order + 'I', data[16:20])[0]
        self.unlock_time = xboxtime.filetime2unixtime(struct.unpack(byte_order + 'q', data[20:28])[0])

        end_name = 28 + data[28:].find('\x00\x00')
        self.name = data[28:end_name]
        end_locked_desc = end_name + 2 + data[end_name+2:].find('\x00\x00') #+2 to skip previous null
        self.locked_desc = data[end_name+2:end_locked_desc]
        end_unlocked_desc = end_locked_desc + 2 + data[end_locked_desc+2:].find('\x00\x00')
        self.unlocked_desc = data[end_locked_desc+2:end_unlocked_desc]