Skip to content

Commit 5f7d012

Browse files
committed
Parse regular world transfer status
1 parent 716654c commit 5f7d012

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

tests/tests_bazaar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def test_auction_details_from_content_finished(self):
167167
self.assertEqual(26006721711, auction.experience)
168168
self.assertEqual(41893, auction.gold)
169169
self.assertEqual(540, auction.achievement_points)
170-
self.assertFalse(auction.regular_world_transfer_available)
170+
self.assertIsInstance(auction.regular_world_transfer_available_date, datetime.datetime)
171171
self.assertEqual(110, auction.available_charm_points)
172172
self.assertEqual(5800, auction.spent_charm_points)
173173

tibiapy/bazaar.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -811,8 +811,9 @@ class AuctionDetails(ListedAuction):
811811
The total amount of gold the character has.
812812
achievement_points: :class:`int`
813813
The number of achievement points of the character.
814-
regular_world_transfer: :class:`bool`
815-
Whether the character can use a regular transfer.
814+
regular_world_transfer_available_date: :class:`datetime.datetmie`
815+
The date after regular world transfers will be available to purchase and use.
816+
:obj:`None` indicates it is available immediately.
816817
charm_expansion: :class:`bool`
817818
Whether the character has a charm expansion or not.
818819
available_charm_points: :class:`int`
@@ -875,7 +876,8 @@ def __init__(self, **kwargs):
875876
self.experience: int = kwargs.get("experience", 0)
876877
self.gold: int = kwargs.get("gold", 0)
877878
self.achievement_points: int = kwargs.get("achievement_points", 0)
878-
self.regular_world_transfer_available: bool = kwargs.get("regular_world_transfer_available", False)
879+
self.regular_world_transfer_available_date: datetime.datetime = \
880+
kwargs.get("regular_world_transfer_available_date")
879881
self.charm_expansion: bool = kwargs.get("charm_expansion", False)
880882
self.available_charm_points: int = kwargs.get("available_charm_points", 0)
881883
self.spent_charm_points: int = kwargs.get("spent_charm_points", 0)
@@ -915,7 +917,7 @@ def __init__(self, **kwargs):
915917
"experience",
916918
"gold",
917919
"achievement_points",
918-
"regular_world_transfer_available",
920+
"regular_world_transfer_available_date",
919921
"charm_expansion",
920922
"available_charm_points",
921923
"spent_charm_points",
@@ -942,16 +944,21 @@ def __init__(self, **kwargs):
942944
"bestiary_progress",
943945
)
944946

945-
@property
946-
def skills_map(self) -> Dict[str, 'SkillEntry']:
947-
""":class:`dict` of :class:`str`, :class:`SkillEntry`: A mapping of skills by their name."""
948-
return {skill.name: skill for skill in self.skills}
949-
950947
@property
951948
def completed_bestiary_entries(self):
952949
""":class:`list` of :class:`BestiaryEntry`: Gets a list of completed bestiary entries."""
953950
return [e for e in self.bestiary_progress if e.completed]
954951

952+
@property
953+
def regular_world_transfer_available(self):
954+
""":class:`bool`: Whether regular world transfers are available immediately for this character."""
955+
return self.regular_world_transfer_available_date is None
956+
957+
@property
958+
def skills_map(self) -> Dict[str, 'SkillEntry']:
959+
""":class:`dict` of :class:`str`, :class:`SkillEntry`: A mapping of skills by their name."""
960+
return {skill.name: skill for skill in self.skills}
961+
955962
@classmethod
956963
def from_content(cls, content, auction_id=0):
957964
"""Parses an auction detail page from Tibia.com and extracts its data.
@@ -1222,6 +1229,12 @@ def _parse_general_table(self, table):
12221229
self.gold = parse_integer(additional_stats.get("gold", "0"))
12231230
self.achievement_points = parse_integer(additional_stats.get("achievement_points", "0"))
12241231

1232+
transfer_data = self._parse_data_table(content_containers[3])
1233+
transfer_text = transfer_data.get("regular_world_transfer")
1234+
if "after" in transfer_text:
1235+
date_string = transfer_text.split("after ")[1]
1236+
self.regular_world_transfer_available_date = parse_tibia_datetime(date_string)
1237+
12251238
charms_data = self._parse_data_table(content_containers[4])
12261239
self.charm_expansion = "yes" in charms_data.get("charms_expansion", "")
12271240
self.available_charm_points = parse_integer(charms_data.get("available_charm_points"))

0 commit comments

Comments
 (0)