Source code for chicken_dinner.models.player

"""Individual player model."""
from chicken_dinner.constants import SHARD_URL
from chicken_dinner.models.season import Season


[docs]class Player(object): """Player model. An object encapsulating metadata about a PUBG player. :param pubg: an instance of the class :class:`chicken_dinner.pubgapi.PUBG` :param str player_id: the player's account id :param dict data: (optional) the data payload from the player response :param str shard: the shard for the seasons response """ def __init__(self, pubg, player_id, data=None, shard=None): self._pubg = pubg self._shard = shard if data is None: #: The API response for this object. self.response = self._pubg._core.player(player_id, shard) else: self.response = {"data": data} @property def shard(self): """The shard for this player.""" return self._shard or self._pubg.shard # # deprecated # @property # def created_at(self): # """When the player was created.""" # return self.data["attributes"]["createdAt"] @property def data(self): """The data payload of the player response.""" return self.response["data"] @property def id(self): """The player account id.""" return self.data["id"] @property def match_ids(self): """A list of the player's most recent match ids (most recent first).""" return [match["id"] for match in self.data["relationships"]["matches"]["data"]] @property def name(self): """The player's in-game name.""" return self.data["attributes"]["name"] @property def patch_version(self): """The last patch version on which the player has played.""" return self.data["attributes"]["patchVersion"] @property def stats(self): """Stats for the player.""" return self.data["attributes"]["stats"] @property def title_id(self): """The title_id for the data.""" return self.data["attributes"]["titleId"] # # deprecated # @property # def updated_at(self): # """When this data was last updated.""" # return self.data["attributes"]["updatedAt"] @property def url(self): """The URL for this player resource.""" try: return self.data["links"]["self"] except IndexError as exc: return SHARD_URL + self.shard + "/players/" + str(self.id)
[docs] @classmethod def from_data(cls, pubg, data, shard=None): """Constructor for a player object with a data payload. :param pubg: an instance of the class :class:`chicken_dinner.pubgapi.PUBG` :param dict data: the data payload from the player response :param str shard: the shard for the seasons response """ return cls(pubg, data["id"], data=data, shard=shard)
[docs] def get_season(self, season_id): """Get a season response for a specific season. :param season_id: a ``season_id`` or :class:`chicken_dinner.models.Season` object from which to get player-season data. Use the string "current" to get the current season. :return: a :class:`chicken_dinner.models.PlayerSeason` instance """ if isinstance(season_id, Season): season_id = season_id.id return self._pubg.player_season(self.id, season_id, self.shard)
[docs] def get_current_season(self): """Get the player-season data for the current season. :return: a :class:`chicken_dinner.models.PlayerSeason` instance for the current season """ return self.get_season("current")