PSV on stdout
[fflogs.git] / main.py
1 #!./fflogs/bin/python
2 from gql import Client, gql
3 from gql.transport.aiohttp import AIOHTTPTransport
4 import requests
5 from secrets import *
6
7 encounter_aliases = [
8 'cloudRanks',
9 'dogRanks',
10 'thanRanks',
11 'boobaRanks',
12 'gaiaRanks',
13 ]
14
15 res = requests.post(
16 "https://www.fflogs.com/oauth/token",
17 data={"grant_type": "client_credentials"},
18 auth=(client_id, client_secret)
19 )
20 token = res.json()['access_token']
21 headers = {'Authorization': f"Bearer {token}"}
22
23 transport = AIOHTTPTransport(url="https://www.fflogs.com/api/v2/client", headers=headers)
24
25 client = Client(transport=transport, fetch_schema_from_transport=True)
26
27 query = gql(
28 '''
29 query ($name: String!, $serverSlug: String!, $serverRegion: String!) {
30 characterData {
31 character (
32 name: $name
33 serverSlug: $serverSlug
34 serverRegion: $serverRegion
35 )
36 {
37 canonicalID
38 name
39 cloudRanks: encounterRankings (encounterID: 73)
40 dogRanks: encounterRankings (encounterID: 74)
41 thanRanks: encounterRankings (encounterID: 75)
42 boobaRanks: encounterRankings (encounterID: 76)
43 gaiaRanks: encounterRankings (encounterID: 77)
44 }
45 }
46 }
47 '''
48 )
49 params = {
50 "name": f"{name}",
51 "serverSlug": f"{serverSlug}",
52 "serverRegion": "na",
53 }
54 result = client.execute(query, variable_values=params)
55 encounter_ranks = [result['characterData']['character'][encounter_alias] for encounter_alias in encounter_aliases]
56 reports = {rank['report']['code'] for encounter in encounter_ranks for rank in encounter['ranks']}
57 query = gql(
58 '''
59 query ($code: String!) {
60 reportData {
61 report (
62 code: $code
63 )
64 {
65 code
66 rankings
67 }
68 }
69 }
70 '''
71 )
72 for code in reports:
73 result = client.execute(query, variable_values={"code": code})
74 for kill_rank in result['reportData']['report']['rankings']['data']:
75 tanks = kill_rank['roles']['tanks']['characters']
76 healers = kill_rank['roles']['healers']['characters']
77 dps = kill_rank['roles']['dps']['characters']
78 pull = kill_rank['fightID']
79 print(code,pull,','.join([str(char['id']) for char in tanks] + [str(char['id']) for char in healers] + [str(char['id']) for char in dps]), sep="|")