Refactor, extract pulls and get example pull
[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 ranks = [rank for encounter in encounter_ranks for rank in encounter['ranks']]
57 pulls = [(rank['report']['code'], rank['report']['fightID']) for rank in ranks]
58 query = gql(
59 '''
60 query ($code: String!, $fightIds: [Int]!) {
61 reportData {
62 report (
63 code: $code
64 )
65 {
66 code
67 fights (
68 fightIDs: $fightIds
69 )
70 {
71 hasEcho
72 kill
73 }
74 }
75 }
76 }
77 '''
78 )
79 result = client.execute(query, variable_values={"code": pulls[0][0], "fightIds": pulls[0][1]})