Skip to content

Instantly share code, notes, and snippets.

@intrd
Last active January 5, 2021 22:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save intrd/7b8cd89c33b82834a257029c2a703ceb to your computer and use it in GitHub Desktop.
Save intrd/7b8cd89c33b82834a257029c2a703ceb to your computer and use it in GitHub Desktop.
Valorant matchmaking - Ranked points and last matches details retriever
{
"Version": 0,
"Subject": "XXXXX...",
"Matches": [
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Bonsai/Bonsai",
"MatchStartTime": 160000000,
"TierAfterUpdate": 6,
"TierBeforeUpdate": 6,
"TierProgressAfterUpdate": 97,
"TierProgressBeforeUpdate": 77,
"RankedRatingEarned": 0,
"CompetitiveMovement": "INCREASE"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Triad/Triad",
"MatchStartTime": 160000000,
"TierAfterUpdate": 6,
"TierBeforeUpdate": 7,
"TierProgressAfterUpdate": 77,
"TierProgressBeforeUpdate": 0,
"RankedRatingEarned": 0,
"CompetitiveMovement": "DEMOTED"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Duality/Duality",
"MatchStartTime": 160000000,
"TierAfterUpdate": 7,
"TierBeforeUpdate": 7,
"TierProgressAfterUpdate": 0,
"TierProgressBeforeUpdate": 6,
"RankedRatingEarned": 0,
"CompetitiveMovement": "DECREASE"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Duality/Duality",
"MatchStartTime": 160000000,
"TierAfterUpdate": 7,
"TierBeforeUpdate": 6,
"TierProgressAfterUpdate": 6,
"TierProgressBeforeUpdate": 90,
"RankedRatingEarned": 0,
"CompetitiveMovement": "PROMOTED"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Duality/Duality",
"MatchStartTime": 160000000,
"TierAfterUpdate": 6,
"TierBeforeUpdate": 6,
"TierProgressAfterUpdate": 90,
"TierProgressBeforeUpdate": 64,
"RankedRatingEarned": 0,
"CompetitiveMovement": "MAJOR_INCREASE"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Bonsai/Bonsai",
"MatchStartTime": 160000000,
"TierAfterUpdate": 6,
"TierBeforeUpdate": 6,
"TierProgressAfterUpdate": 64,
"TierProgressBeforeUpdate": 79,
"RankedRatingEarned": 0,
"CompetitiveMovement": "DECREASE"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Bonsai/Bonsai",
"MatchStartTime": 160000000,
"TierAfterUpdate": 6,
"TierBeforeUpdate": 7,
"TierProgressAfterUpdate": 79,
"TierProgressBeforeUpdate": 12,
"RankedRatingEarned": 0,
"CompetitiveMovement": "DEMOTED"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Ascent/Ascent",
"MatchStartTime": 160000000,
"TierAfterUpdate": 7,
"TierBeforeUpdate": 6,
"TierProgressAfterUpdate": 12,
"TierProgressBeforeUpdate": 83,
"RankedRatingEarned": 0,
"CompetitiveMovement": "PROMOTED"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Port/Port",
"MatchStartTime": 160000000,
"TierAfterUpdate": 6,
"TierBeforeUpdate": 6,
"TierProgressAfterUpdate": 83,
"TierProgressBeforeUpdate": 66,
"RankedRatingEarned": 0,
"CompetitiveMovement": "INCREASE"
},
{
"MatchID": "XXXX...",
"MapID": "/Game/Maps/Triad/Triad",
"MatchStartTime": 160000000,
"TierAfterUpdate": 6,
"TierBeforeUpdate": 7,
"TierProgressAfterUpdate": 66,
"TierProgressBeforeUpdate": 5,
"RankedRatingEarned": 0,
"CompetitiveMovement": "DEMOTED"
}
]
}
## Valorant matchmaking - Ranked points and last matches details retriever
# @author intrd - http://dann.com.br/
# based on RumbleMike/ValorantAPI - https://github.com/RumbleMike/ValorantAPI/
# based on Luc1412/auth_flow.py - https://gist.github.com/Luc1412/1f93257a2a808679ff014f258db6c35b
# based on RumbleMike/ValorantRankedPoints - https://github.com/RumbleMike/ValorantRankedPoints
# Usage: Just fill YOURUSERNAMEHERE and YOURPASSWORDHERE.
import re
import aiohttp
import asyncio
import json
async def run(username, password):
session = aiohttp.ClientSession()
data = {
'client_id': 'play-valorant-web-prod',
'nonce': '1',
'redirect_uri': 'https://beta.playvalorant.com/opt_in',
'response_type': 'token id_token',
}
await session.post('https://auth.riotgames.com/api/v1/authorization', json=data)
data = {
'type': 'auth',
'username': username,
'password': password
}
async with session.put('https://auth.riotgames.com/api/v1/authorization', json=data) as r:
data = await r.json()
pattern = re.compile('access_token=((?:[a-zA-Z]|\d|\.|-|_)*).*id_token=((?:[a-zA-Z]|\d|\.|-|_)*).*expires_in=(\d*)')
data = pattern.findall(data['response']['parameters']['uri'])[0]
access_token = data[0]
id_token = data[1]
expires_in = data[2]
headers = {
'Authorization': f'Bearer {access_token}',
}
async with session.post('https://entitlements.auth.riotgames.com/api/token/v1', headers=headers, json={}) as r:
data = await r.json()
entitlements_token = data['entitlements_token']
async with session.post('https://auth.riotgames.com/userinfo', headers=headers, json={}) as r:
data = await r.json()
user_id = data['sub']
headers['Content-Type'] = "application/json"
headers['X-Riot-Entitlements-JWT'] = entitlements_token
async with session.get(f'https://pd.na.a.pvp.net/mmr/v1/players/'+user_id+'/competitiveupdates?startIndex=0&endIndex=20', headers=headers) as r:
#print(await r.text())
data = json.loads(await r.text())
jq = json.dumps(data, sort_keys=True, indent=4)
print(jq)
await session.close()
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(run('YOURUSERNAMEHERE', 'YOURPASSWORDHERE'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment