Acceder a la API de Riot

UnLiMiTeD

Buenas gente. ¿Hay por aqui alguien que haya accedido a la API de Riot para hacer algun programilla?. Estoy intentando con ChatGPT hacer una pequeña aplicacion en la que pueda buscar en mi historial de partidas si he coindicido con algun jugador de la partida actual. Ademas pues me gustaria usarlo para buscar otro tipo de comparativas, datos , etc...

La cosa es que no consigo conectar con mi API, ChatGPT me indica este codigo, y de momento no hago mas que recibir errores:

import requests

api_key = 'MI API PRIVADA'
region = 'euw1'  # Cambia esto al servidor que necesites
summoner_name = 'TebitoSan'

url = f'https://{region}.api.riotgames.com/lol/summoner/v4/summoners/by-name/{summoner_name}'
headers = {
    'X-Riot-Token': api_key
}

response = requests.get(url, headers=headers)
data = response.json()

print(data)

La API la saco de mi perfil de Riotdeveloper:

Y siempre recibo el siguiente mensaje de error:

{'status': {'message': 'Bad request - Invalid routing value euw1', 'status_code': 400}}

Si pruebo euw ( sin el 1 ) recibo otro error bastante mas largo, ademas estoy seguro que lo correcto es euw1.

Estoy convencido que por estos lares alguno ha accedido a la api para alguna cosilla, a ver si me podeis echar un cable.

Freak1337

Parece que esas regiones son de la antigua api, ahora el routing en vez de euw1, debería ser europe, prueba y me dices.

1 respuesta
UnLiMiTeD

#2 Mira, eso no lo sabia. Pero por desgracia de momento, el mismo error.

{'status': {'message': 'Bad request - Invalid routing value europe', 'status_code': 400}}

jbtwist92

No he hecho esto nunca asi que no tengo mucha idea para el lol en concreto, pero un error 400 te esta indicando que el json que estás mandando no es válido para esa variable de entrada en ese endpoint.

En concreto este te esta diciendo que el valor tanto euw1 como europe no son valores válidos para ese endpoint.

Mi recomendacion es que busques algun ejemplo de alguien mas usando la API en algun proyecto de codigo abierto o ejemplos en la documentación (si la hay). Las APIs suelen tener documentacion abierta de como se usan

Miyas

En la api ya no aparece el endpoint que usa el nombre de summoner. El endpoint te lo ha dado chat-gpt? El único que encuentro en los docs es el de by-uuid.

https://euw1.api.riotgames.com/lol/summoner/v4/summoners/by-account/{encryptedAccountId}

https://developer.riotgames.com/apis#summoner-v4/GET_getByAccountId

1 respuesta
UnLiMiTeD

#5 La verdad es que ando bastante perdido. Por ejemplo en el enlace que pusiste, no tengo claro que debo poner en "encryptedAccountId" para que me muestre los datos. Pongo mi nombre de invocador y me manda a pastar.

1 respuesta
AkA7

#6 Usa el endpoint /lol/summoner/v4/summoners/me para obtener tu encryptedPUUID/encryptedSummonerId y a así ya tienes el param necesario para esos endpoints.

1 respuesta
UnLiMiTeD

#7 No lo tengo claro.

1 respuesta
AkA7

#8 Prueba usando este /riot/account/v1/accounts/by-riot-id/{gameName}/{tagLine}. Puedes pillar esos dos params de la página de configuración de tu usuario del lol.

2 respuestas
Miyas

Como dice #9, puedes meterte (directamente desde el navegador sin utilizar la web de riot, que va un poco mal) al siguiente url:

https://europe.api.riotgames.com/riot/account/v1/accounts/by-riot-id/TebitoSan/EUW?api_key=[TU_API_KEY]

Ahi te dara una respuesta del tipo:

{"puuid":"tu_id","gameName":"TebitoSan","tagLine":"EUW"}

y el ppuid lo puedes usar luego en la url:

https://euw1.api.riotgames.com/lol/summoner/v4/summoners/by-puuid/[TU_PPUID]?api_key=[TU_API_KEY]

Te saldra una respuesta del tipo:

{"id":"unid","accountId":"otroid","puuid":"elidglobal","profileIconId":cosas,"revisionDate":nosequeesesto,"summonerLevel":tunivel}

Edit:

te dejo un post donde riot explicaba los cambios en la API, por si te interesa.

https://www.riotgames.com/en/DevRel/summoner-names-to-riot-id

1 respuesta
UnLiMiTeD

#9 En teoria lo tengo bien puesto ( nombre de invocador y el tag que es euw ), pero nada macho.

#10 lo mismo, o no me entero bien, o no se que cojones estoy haciendo mal xd

1 respuesta
Miyas

el tagline y el nombre lo tienes al reves, a parte de que en esa url falta el api_key

1 respuesta
AkA7

#11 https://europe.api.riotgames.com/riot/account/v1/accounts/by-riot-id/tebitosan/EUW?api_key=RGAPI-0e4dafbc-4ef9-4ad7-9342-cb7b27196294

UnLiMiTeD

#12 Coño, cierto, lo tenia al reves, ahora ya al fin empiezo a tener un resultado, me dio el puuid

UnLiMiTeD

Vale vale, ahora con el puuid ya empiezo a ver algo. Ahora es ver como puedo acceder al historial de mis partidas xd

1 respuesta
Miyas

Entiendo que es simplemente llamar al endpoint de

/lol/match/v5/matches/by-puuid/{puuid}/ids

y si quieres mas info de alguna por cada ID que te devuelva llamar a

/lol/match/v5/matches/{matchId}

AkA7

#15
Tus ultimas 50 partidas.
https://europe.api.riotgames.com/lol/match/v5/matches/by-puuid/DpmAOgmP3jK0XUvHHsqdOvxEteOLdRRTEtUZ3ZXMq3ZI4lN-RYoNJWTgiIXGA_qyHrNv2zql8YBr-A/ids?start=0&count=50&api_key=TU_API_KEY

Detalle de cada partida. Con cada id del listado anterior.
https://europe.api.riotgames.com/lol/match/v5/matches/ID_PARTIDA?api_key=TU_API_KEY

1 respuesta
Kirbos

Si usas Chatgpt gratuito igual está entrenado con datos de hace un par de años y la api hoy en día sea distinta.

1 respuesta
UnLiMiTeD

#18 Es de pago.

#17 Esto es rarisimo, ahora repito lo mismo que hice para obtener mi PUUID y me vuelve a dar error, wtf

1 respuesta
Miyas

#19 Has puesto la api key como no requerida

1 respuesta
UnLiMiTeD

#20 Si, si da igual lo que ponga, ahi no me deja poner nada, en el desplegable sale solo "Development api key" pero no me deja poner nada, entiendo que la coge automaticamente de mi cuenta al estar logueado en la web.

Vaya, uso esto que en teoria esta todo bien, y recibo el error:

https://europe.api.riotgames.com/riot/account/v1/accounts/by-riot-id/tebitosan/EUW?api_key=RGAPI-0e4dafbc-4ef9-4ad7-9342-cb7b27196294

2 respuestas
Miyas

#21 Si, desde la web de rito la coge de tu cuenta automaticamente, si la pones como Query Param luego en el "Request Url" la verás.

1 respuesta
UnLiMiTeD

#22 Correcto, y...:

1 respuesta
AkA7

#21 Si, la pilla automáticamente de tu sesión, pero es necesaria. Mira a ver en el dashboard de tu usuario que no te haya caducado, que según la foto de tu primer post te quedaban 2 horas y media.

1 respuesta
Miyas

#23 eso me pasa a mi siempre, por eso digo que va regular la pagina. En teoria si le das clic al Request Url te mostrará en una pestaña nueva el resultado bueno.

1 respuesta
UnLiMiTeD

#24 La he reseteado y me ha dado otra que caduca en 24h, pero... sigo sin avanzar, me pasa lo mismo.

#25 entonces como funcionan paginas como op.gg?, si peta tanto el sistema... no entiendo.

Ademas, si mi API key caduca cada 24h, ¿tengo que estar actualizandola constantemente para tener mi PUUID?

Vale, en el TAG puse euw1 , en vez de euw ( que es el tag que me aparece en la aplicacion ) y ya tengo de nuevo el PUUID.

2 respuestas
Miyas

#26 Me refiero a que va mal la web, no la API, porque si accedes al endpoint desde una pestaña en blanco se ve bien el resultado. Estas api keys de 24 horas son de prueba, para obtener una que dure más necesitas registrar el producto

https://developer.riotgames.com/app-type

1 respuesta
AkA7

#26 El PUUID no cambia, lo que caduca es tu API_KEY, que es necesaria para hacer peticiones. Puedes probar a pedir una para proyectos personales. Tiene el mismo límite de peticiones, pero entiendo que la caducidad será mayor.

Para las pruebas, intenta usar POSTMAN por ejemplo. A mi, en la web, alguna vez me ha dado error una petición cuando en POSTMAN funcionaba.

1 respuesta
UnLiMiTeD

#27 #28 Vale, ya tengo una API personal que imagino durara mas xd.

He conseguido el historial de partidas, pero claro... no es lo que esperaba.

"EUW1_6941160654",
"EUW1_6941087154",
"EUW1_6940941089",
"EUW1_6940896011",
"EUW1_6940650612",
"EUW1_6940531903",
"EUW1_6940498289",
"EUW1_6940498637",
"EUW1_6939505664",
"EUW1_6938695057",
"EUW1_6938647481",
"EUW1_6938433698",
"EUW1_6938386188",
"EUW1_6937834696",
"EUW1_6937780677",
"EUW1_6937642940",
"EUW1_6937599070",
"EUW1_6937527825",
"EUW1_6937088176",
"EUW1_6937052805"
]

Yo querria tener el nombre de los jugadores de cada una de esas partidas.

2 respuestas
AkA7

#29 Con esas ids de partidas usa el endpoint del detalle de cada partida que te puse en #17

1 respuesta