Skip to content

Commit 4ce0fe4

Browse files
authored
Merge pull request #42 from Galarzaa90/feat-revealed-gems
Add revealed gems to auction details
2 parents 47648e0 + 21ee7b9 commit 4ce0fe4

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

tibiapy/builders/bazaar.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing import List, Optional, TYPE_CHECKING
55

66
from tibiapy.models import Auction, CharacterBazaar
7-
from tibiapy.models.bazaar import AuctionDetails
7+
from tibiapy.models.bazaar import AuctionDetails, RevealedGem
88

99
if TYPE_CHECKING:
1010
import datetime
@@ -210,6 +210,7 @@ def __init__(self):
210210
self._achievements = None
211211
self._bestiary_progress = None
212212
self._bosstiary_progress = None
213+
self._revealed_gems = []
213214

214215
def hit_points(self, hit_points: int) -> Self:
215216
self._hit_points = hit_points
@@ -394,6 +395,10 @@ def bosstiary_progress(self, bosstiary_progress: List[BestiaryEntry]) -> Self:
394395
self._bosstiary_progress = bosstiary_progress
395396
return self
396397

398+
def add_revealed_gem(self, gem: RevealedGem) -> Self:
399+
self._revealed_gems.append(gem)
400+
return self
401+
397402
def build(self):
398403
return AuctionDetails(
399404
hit_points=self._hit_points,
@@ -441,4 +446,5 @@ def build(self):
441446
achievements=self._achievements,
442447
bestiary_progress=self._bestiary_progress,
443448
bosstiary_progress=self._bosstiary_progress,
449+
revealed_gems=self._revealed_gems,
444450
)

tibiapy/models/bazaar.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,13 @@ class SkillEntry(BaseModel):
353353
"""The percentage of progress for the next level."""
354354

355355

356+
class RevealedGem(BaseModel):
357+
gem_type: str
358+
"""The type of gem."""
359+
mods: List[str]
360+
"""The mods or effects the gem has."""
361+
362+
356363
class AuctionDetails(BaseModel):
357364
"""The details of an auction."""
358365

@@ -446,6 +453,8 @@ class AuctionDetails(BaseModel):
446453
"""The bestiary progress of the character."""
447454
bosstiary_progress: List[BestiaryEntry]
448455
"""The bosstiary progress of the character."""
456+
revealed_gems: List[RevealedGem]
457+
"""The gems that have been revealed by the character."""
449458

450459
@property
451460
def completed_bestiary_entries(self) -> List[BestiaryEntry]:

tibiapy/parsers/bazaar.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from tibiapy.models import (AchievementEntry, AjaxPaginator, Auction, AuctionFilters, BestiaryEntry, BlessingEntry,
1414
CharacterBazaar, CharmEntry, FamiliarEntry, Familiars, ItemEntry, ItemSummary, MountEntry,
1515
Mounts, OutfitEntry, OutfitImage, Outfits, SalesArgument, SkillEntry)
16+
from tibiapy.models.bazaar import RevealedGem
1617
from tibiapy.utils import (clean_text, convert_line_breaks, get_rows, parse_form_data, parse_integer, parse_pagination,
1718
parse_tibia_datetime, parse_tibiacom_content, try_enum)
1819

@@ -216,6 +217,9 @@ def from_content(cls, content: str, auction_id: int = 0, skip_details: bool = Fa
216217
if "BosstiaryProgress" in details_tables:
217218
cls._parse_bestiary_table(builder, details_tables["BosstiaryProgress"], True)
218219

220+
if "RevealedGems" in details_tables:
221+
cls._parse_revealed_gems_table(builder, details_tables["RevealedGems"])
222+
219223
auction.details = builder.build()
220224
return auction
221225

@@ -682,6 +686,19 @@ def _parse_displayed_familiar(cls, item_box):
682686

683687
return familiar
684688

689+
@classmethod
690+
def _parse_revealed_gems_table(cls, builder: AuctionDetailsBuilder, table: bs4.Tag):
691+
table_content = table.select_one("table.TableContent")
692+
_, *rows = get_rows(table_content)
693+
for row in rows:
694+
gem_tag = row.select_one("div.Gem")
695+
gem_type = gem_tag["title"]
696+
effects = [t.text for t in row.select("span")]
697+
builder.add_revealed_gem(RevealedGem(
698+
gem_type=gem_type,
699+
mods=effects,
700+
))
701+
685702
@classmethod
686703
def _parse_page_items(cls, content, paginator: AjaxPaginator):
687704
parsed_content = parse_tibiacom_content(content, builder="html5lib")

0 commit comments

Comments
 (0)