@@ -16,7 +16,7 @@ def __str__(self):
1616 return f'{ self .name } (#{ self .tag } )'
1717
1818 async def from_data (self ):
19- pass
19+ raise NotImplemented
2020
2121 async def update (self ):
2222
@@ -28,12 +28,11 @@ async def update(self):
2828
2929 return self
3030
31-
32- class Clan (Base ):
33- '''Represents a clan'''
34-
35- def from_data (self , data ):
36- pass
31+ class ClanChest :
32+ def __init__ (self , data ):
33+ self .crowns = data .get ('clanChestCrowns' )
34+ self .percent = data .get ('clanChestCrownsPercent' )
35+ self .required = data .get ('clanChestCrownsRequired' )
3736
3837class Arena :
3938 def __init__ (self , data ):
@@ -42,31 +41,131 @@ def __init__(self, data):
4241 self .number = data .get ('arenaID' )
4342 self .trophies = data .get ('trophyLimit' )
4443
44+ @property
45+ def image_url (self ):
46+ return f"http://api.cr-api.com{ self .raw_data .get ('imageURL' )} "
47+
4548 def __str__ (self ):
4649 return self .data .get ('arena' )
4750
51+ class Shop :
52+ def __init__ (self , data ):
53+ self .legendary = data .get ('legendary' )
54+ self .epic = data .get ('epic' )
55+ self .arena = data .get ('arena' )
56+
57+ class Cycle :
58+ def __init__ (self , data ):
59+ self .position = data .get ('position' )
60+ self .super_magical = data .get ('superMagicalPos' )
61+ self .legendary = data .get ('legendaryPos' )
62+ self .epic = data .get ('epicPos' )
63+
64+ class Card :
65+ def __init__ (self , data ):
66+ self .name = data .get ('name' )
67+ self .rarity = data .get ('rarity' )
68+ self .level = data .get ('level' )
69+ self .count = data .get ('count' )
70+ self .to_upgrade = data .get ('requiredForUpgrade' )
71+ self .id = data .get ('card_id' )
72+ self .elixir = data .get ('elixir' )
73+ self .type = data .get ('type' )
74+ self .arena = data .get ('arena' )
75+ self .description = data .get ('description' )
76+ self .decklink = data .get ('decklink' )
77+
78+ def __repr__ (self ):
79+ return f'<Card id={ self .id } >'
80+
81+ class Member :
82+ def __init__ (self , client , data ):
83+ self .client = client
84+ self .name = data .get ('name' )
85+ self .arena = Arena (data .get ('arena' ))
86+ self .role = data .get ('role' )
87+ self .role_name = data .get ('roleName' )
88+ self .level = data .get ('expLevel' )
89+ self .trophies = data .get ('trophies' )
90+ self .donations = data .get ('donations' )
91+ self .rank = data .get ('currentRank' )
92+ self .crowns = data .get ('clanChestCrowns' )
93+ self .tag = data .get ('tag' )
94+
95+ def __repr__ (self ):
96+ return f'<Member tag={ self .tag } >'
97+
98+ def get_profile (self ):
99+ return self .client .get_profile (self .tag )
100+
101+ class Clan (Base ):
102+ '''Represents a clan'''
103+
104+ def from_data (self , data ):
105+ self .name = data .get ('name' )
106+ self .score = data .get ('score' )
107+ self .required_trophies = data .get ('required_trophies' )
108+ self .donations = data .get ('donations' )
109+ self .rank = data .get ('currentRank' )
110+ self .description = data .get ('description' )
111+ self .type = data .get ('type' )
112+ self .type_name = data .get ('typeName' )
113+ self .region = data .get ('region' ).get ('name' )
114+ self .clan_chest = ClanChest (data .get ('clanChest' ))
115+ self .members = [Member (self .client , m ) for m in data .get ('members' )]
116+
117+ @property
118+ def badge_url (self ):
119+ url = self .raw_data .get ('badge' ).get ('url' )
120+ return f"http://api.cr-api.com{ url } "
121+
122+ def __repr__ (self ):
123+ return f'<Clan tag={ self .tag } >'
124+
48125class Profile (Base ):
49126 '''Represents a player profile.
50127 Includes a clan maybe? (requires a seperate request tho)
51128 '''
52129 def from_data (self , data ):
53130 self .name = data .get ('name' )
54131 exp = data .get ('experience' )
132+ stats = data .get ('stats' )
133+ games = data .get ('games' )
134+ clan = data .get ('clan' )
55135 self .level = exp .get ('level' )
56136 self .experience = (exp .get ('xp' ), exp .get ('xpRequiredForLevelUp' ))
57137 self .name_changed = data .get ('nameChanged' )
58138 self .global_rank = data .get ('globalRank' )
59139 self .current_trophies = data .get ('trophies' )
60- self .highest_trophies = data . get ( ' stats' ) .get ('challengeCardsWon' )
140+ self .highest_trophies = stats .get ('challengeCardsWon' )
61141 self .legend_trophies = data .get ('legendaryTrophies' )
142+ self .tournament_cards_won = stats .get ('tournamentCardsWon' )
143+ self .challenge_cards_won = stats .get ('challengeCardsWon' )
144+ self .favourite_card = stats .get ('favoriteCard' ).title ()
145+ self .total_donations = stats .get ('totalDonations' )
146+ self .max_wins = stats .get ('challengeMaxWins' )
147+ self .games_played = games .get ('total' )
148+ self .wins = games .get ('wins' )
149+ self .losses = games .get ('losses' )
150+ self .draws = games .get ('draws' )
62151 self .arena = Arena (data .get ('arena' ))
63- self .clan_tag = data .get ('clan' ).get ('tag' )
64- self .clan_name = data .get ('clan' ).get ('name' )
65- self .clan_role = data .get ('clan' ).get ('role' )
152+ self .clan_tag = clan .get ('tag' )
153+ self .clan_name = clan .get ('name' )
154+ self .clan_role = clan .get ('role' )
155+ self .shop_offers = Shop (data .get ('shopOffers' ))
156+ self .chest_cycle = Cycle (data .get ('chestCycle' ))
157+ self .deck = [Card (c ) for c in data .get ('currentDeck' )]
158+
159+ @property
160+ def clan_badge_url (self ):
161+ url = self .raw_data .get ('clan' ).get ('badge' ).get ('url' )
162+ if not url :
163+ return None
164+ else :
165+ return f"http://api.cr-api.com{ url } "
166+
167+ def __repr__ (self ):
168+ return f'<Profile tag={ self .tag } >'
66169
67170 def get_clan (self ):
68171 return self .client .get_clan (self .clan_tag )
69-
70-
71-
72-
0 commit comments