Skip to content

Commit 49022a0

Browse files
committed
Properly parse the name of recently traded characters
1 parent a5d10c6 commit 49022a0

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

CHANGELOG.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ Changelog
66
Due to this library relying on external content, older versions are not guaranteed to work.
77
Try to always use the latest version.
88

9+
.. v3.2.2:
10+
11+
3.2.2 (2020-08-27)
12+
==================
13+
14+
- Properly parse the name of recently traded characters.
15+
- Added ``traded`` attribute to ``Character`` and ``OtherCharacter``.
16+
917
.. v3.2.1:
1018
1119
3.2.1 (2020-08-25)

tibiapy/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from tibiapy.world import *
1717
from tibiapy.client import *
1818

19-
__version__ = '3.2.1'
19+
__version__ = '3.2.2'
2020

2121
from logging import NullHandler
2222

tibiapy/character.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ class Character(abc.BaseCharacter, abc.Serializable):
134134
----------
135135
name: :class:`str`
136136
The name of the character.
137+
traded: :class:`bool`
138+
If the character was traded in the last 6 months.
137139
deletion_date: :class:`datetime.datetime`, optional
138140
The date when the character will be deleted if it is scheduled for deletion.
139141
former_names: :class:`list` of :class:`str`
@@ -190,6 +192,7 @@ class Character(abc.BaseCharacter, abc.Serializable):
190192
__slots__ = (
191193
"name",
192194
"former_names",
195+
"traded",
193196
"sex",
194197
"title",
195198
"unlocked_titles",
@@ -222,6 +225,7 @@ class Character(abc.BaseCharacter, abc.Serializable):
222225

223226
def __init__(self, name=None, world=None, vocation=None, level=0, sex=None, **kwargs):
224227
self.name: str = name
228+
self.traded: bool = kwargs.get("traded", False)
225229
self.former_names: List[str] = kwargs.get("former_names", [])
226230
self.title: Optional[str] = kwargs.get("title")
227231
self.unlocked_titles = int(kwargs.get("unlocked_titles", 0))
@@ -436,6 +440,10 @@ def _parse_character_information(self, rows):
436440
m = guild_regexp.match(char["guild_membership"])
437441
char["guild_membership"] = GuildMembership(m.group(2), m.group(1))
438442

443+
if "(traded)" in char["name"]:
444+
char["name"] = char["name"].replace("(traded)","").strip()
445+
char["traded"] = True
446+
439447
if "former_names" in char:
440448
former_names = [fn.strip() for fn in char["former_names"].split(",")]
441449
char["former_names"] = former_names
@@ -558,6 +566,10 @@ def _parse_other_characters(self, rows):
558566
name, world, status, *__ = cols
559567
_, *name = name.replace("\xa0", " ").split(" ")
560568
name = " ".join(name)
569+
traded = False
570+
if "(recently traded)" in name:
571+
name = name.replace("(recently traded)", "").strip()
572+
traded = True
561573
main_img = cols_raw[0].find('img')
562574
main = False
563575
if main_img and main_img['title'] == "Main Character":
@@ -566,7 +578,7 @@ def _parse_other_characters(self, rows):
566578
if "CipSoft Member" in status:
567579
position = "CipSoft Member"
568580
self.other_characters.append(OtherCharacter(name, world, "online" in status, "deleted" in status, main,
569-
position))
581+
position, traded))
570582

571583
@classmethod
572584
def _parse_tables(cls, parsed_content):
@@ -779,6 +791,8 @@ class OtherCharacter(abc.BaseCharacter, abc.Serializable):
779791
Whether the character is online or not.
780792
deleted: :class:`bool`
781793
Whether the character is scheduled for deletion or not.
794+
traded: :class:`bool`
795+
Whether the character has been traded recently or not.
782796
main: :class:`bool`
783797
Whether this is the main character or not.
784798
position: :class:`str`
@@ -789,16 +803,18 @@ class OtherCharacter(abc.BaseCharacter, abc.Serializable):
789803
"world",
790804
"online",
791805
"deleted",
806+
"traded",
792807
"main",
793808
"position",
794809
)
795810

796-
def __init__(self, name, world, online=False, deleted=False, main=False, position=None):
811+
def __init__(self, name, world, online=False, deleted=False, main=False, position=None, traded=False):
797812
self.name: str = name
798813
self.world: str = world
799814
self.online: bool = online
800815
self.deleted: bool = deleted
801816
self.main: bool = main
817+
self.traded: bool = traded
802818
self.position: Optional[str] = position
803819

804820
def __repr__(self):

0 commit comments

Comments
 (0)