Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mxrch
GitHub Repository: mxrch/GHunt
Path: blob/master/ghunt/parsers/playgateway.py
252 views
1
from typing import *
2
3
from ghunt.protos.playgatewaypa.search_player_results_pb2 import PlayerSearchResultsProto
4
from ghunt.protos.playgatewaypa.get_player_response_pb2 import GetPlayerResponseProto
5
from ghunt.objects.apis import Parser
6
7
8
class PlayerSearchResult(Parser):
9
def __init__(self):
10
self.name: str = ""
11
self.id: str = ""
12
self.avatar_url: str = ""
13
14
def _scrape(self, player_result_data):
15
self.name = player_result_data.account.name
16
self.id = player_result_data.account.id
17
self.avatar_url = player_result_data.avatar.url
18
19
class PlayerSearchResults(Parser):
20
def __init__(self):
21
self.results: List[PlayerSearchResult] = []
22
23
def _scrape(self, proto_results: PlayerSearchResultsProto):
24
for player_result_data in proto_results.field1.results.field1.field1.player:
25
player_search_result = PlayerSearchResult()
26
player_search_result._scrape(player_result_data)
27
self.results.append(player_search_result)
28
29
class PlayerProfile(Parser):
30
"""
31
This parsing is not complete at all, we only use it
32
in GHunt to dump total played games & achievements.
33
"""
34
def __init__(self):
35
self.achievements_count: int = 0
36
self.played_games_count: int = 0
37
38
def _scrape(self, proto_results: GetPlayerResponseProto):
39
for section in proto_results.field1.results.section:
40
if section.field3.section_name == "Games":
41
self.played_games_count = int(section.counter.number)
42
elif section.field3.section_name == "Achievements":
43
self.achievements_count = int(section.counter.number)
44