Skip to content

B player

PlayerBulkRequest

Bases: BulkRequestModel

class for requesting multiple players at once in parallel

Source code in pyclasher/api/bulk_requests/b_player.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class PlayerBulkRequest(BulkRequestModel):
    _request_model = PlayerRequest

    def __init__(self, tags):
        self._tags = tags
        self._requests = list(self._request_model(tag) for tag in self.tags)
        return

    @property
    def tags(self):
        return self._tags

    @classmethod
    async def from_clan(cls, clan, client_id=None):
        if isinstance(clan, Clan) and clan.member_list is not MISSING:
            members = clan.member_list
        elif isinstance(clan, BaseClan):
            members = await ClanMembersRequest(clan.tag).request(client_id)
        else:
            members = await ClanMembersRequest(clan).request(client_id)
        return cls.from_member_list(members)

    @classmethod
    def from_member_list(cls, member_list):
        return cls((member.tag for member in member_list))

    @property
    def average_attack_wins(self):
        return sum((p.attack_wins for p in self)) / len(self)

    @property
    def average_defense_wins(self):
        return sum((p.defense_wins for p in self)) / len(self)

    @property
    def average_town_hall_level(self):
        return sum((p.town_hall_level for p in self)) / len(self)

    @property
    def average_versus_battle_wins(self):
        return sum((p.versus_battle_wins for p in self)) / len(self)

    @property
    def average_exp_level(self):
        return sum((p.exp_level for p in self)) / len(self)

    @property
    def average_trophies(self):
        return sum((p.trophies for p in self)) / len(self)

    @property
    def average_donations(self):
        return sum((p.donations for p in self)) / len(self)

    @property
    def average_donations_received(self):
        return sum((p.donations_received for p in self)) / len(self)

    @property
    def average_builder_hall_level(self):
        return sum((p.builder_hall_level for p in self)) / len(self)

    @property
    def average_builder_base_trophies(self):
        return sum((p.builder_base_trophies for p in self)) / len(self)

    @property
    def average_best_builder_base_trophies(self):
        return sum((p.best_builder_base_trophies for p in self)) / len(self)

    @property
    def average_war_stars(self):
        return sum((p.war_stars for p in self)) / len(self)

    @property
    def average_clan_capital_contributions(self):
        return sum((p.clan_capital_contributions for p in self)) / len(self)

tags: Iterable property

tags used for the requests

:rtype: Iterable

__getitem__(item)

getter for a player of the bulk request

:param item: (int) the index of the player :type item: int

__init__(tags)

initialisation of the player bulk request

:param tags: Iterable of tags :type tags: Iterable

Source code in pyclasher/api/bulk_requests/b_player.py
13
14
15
16
def __init__(self, tags):
    self._tags = tags
    self._requests = list(self._request_model(tag) for tag in self.tags)
    return

__next__()

returns the next player of the bulk request if an iterator is used

from_clan(clan, client_id=None) async classmethod

class method to create an instance using a clan or a clan tag

:param cls: PlayerBulkRequest :param clan: clan or clan tag :rtype: PlayerBulkRequest

Source code in pyclasher/api/bulk_requests/b_player.py
22
23
24
25
26
27
28
29
30
@classmethod
async def from_clan(cls, clan, client_id=None):
    if isinstance(clan, Clan) and clan.member_list is not MISSING:
        members = clan.member_list
    elif isinstance(clan, BaseClan):
        members = await ClanMembersRequest(clan.tag).request(client_id)
    else:
        members = await ClanMembersRequest(clan).request(client_id)
    return cls.from_member_list(members)

from_member_list(member_list) classmethod

class method to create an instance using a clan member list

:param cls: PlayerBulkRequest :param member_list: a member list :type member_list: ClanMemberList, ClanWarMemberList, ClanWarLeagueClanMemberList, ClanCapitalRaidSeasonMemberList, ClanMembersRequest :rtype: PlayerBulkRequest

Source code in pyclasher/api/bulk_requests/b_player.py
32
33
34
@classmethod
def from_member_list(cls, member_list):
    return cls((member.tag for member in member_list))