class MafiaPlayer(object): """ >>> selensky = MafiaPlayer(777) >>> print selensky.name Роман SeLensky Селенский >>> selensky.player_id 777 >>> print selensky.toJson() {"id": 777, "name": "Роман SeLensky Селенский", "rating": [1200.0, 350.0]} """ def __init__(self, player_id, rating=None): self._player_id = player_id self._fetch_and_init() if rating is None: self._rating = Player() else: self._rating = Player(rating[0], rating[1]) def update_player(self, *args): self._rating.update_player(*args) def getRating(self): return self._rating.getRating() def getRd(self): return self._rating.getRd() def _fetch_and_init(self): response = requests.get(MAFSHOW_PLAYER_PAGE.format(self._player_id)) pq = pyquery.PyQuery(response.content) self._name = pq('.person > h1')[0].text_content().strip().encode('utf-8') @property def rating(self): return (self._rating.getRating(), self._rating.getRd()) @property def name(self): return self._name @property def player_id(self): return self._player_id def toJson(self): return '{{"id": {id}, "name": "{name}", "rating": {rating}}}'.format( id=self.player_id, name=self.name, rating=list(self.rating))