PSV on stdout
[fflogs.git] / main.py
CommitLineData
95f675c7
JC
1#!./fflogs/bin/python
2from gql import Client, gql
3from gql.transport.aiohttp import AIOHTTPTransport
4import requests
5from secrets import *
6
d918c26a
JC
7encounter_aliases = [
8 'cloudRanks',
9 'dogRanks',
10 'thanRanks',
11 'boobaRanks',
12 'gaiaRanks',
13]
14
95f675c7
JC
15res = requests.post(
16 "https://www.fflogs.com/oauth/token",
17 data={"grant_type": "client_credentials"},
18 auth=(client_id, client_secret)
19 )
20token = res.json()['access_token']
21headers = {'Authorization': f"Bearer {token}"}
22
23transport = AIOHTTPTransport(url="https://www.fflogs.com/api/v2/client", headers=headers)
24
25client = Client(transport=transport, fetch_schema_from_transport=True)
26
27query = 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 )
49params = {
50 "name": f"{name}",
d89e6fa6 51 "serverSlug": f"{serverSlug}",
95f675c7
JC
52 "serverRegion": "na",
53 }
54result = client.execute(query, variable_values=params)
d918c26a 55encounter_ranks = [result['characterData']['character'][encounter_alias] for encounter_alias in encounter_aliases]
b4f226ff 56reports = {rank['report']['code'] for encounter in encounter_ranks for rank in encounter['ranks']}
d918c26a
JC
57query = gql(
58 '''
94715042 59 query ($code: String!) {
d918c26a
JC
60 reportData {
61 report (
62 code: $code
63 )
64 {
65 code
94715042 66 rankings
d918c26a
JC
67 }
68 }
69 }
70 '''
71 )
94715042 72for code in reports:
94715042
JC
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']
94715042 78 pull = kill_rank['fightID']
b6bf2852 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="|")