I use the API provided by sportradar and treat his jsons to obtain different interesting information.
First, we can call methods i've done to get competitors results. We have to filter them by :
Parameters | Values samples |
---|---|
Category | MotoGP, Moto 2 or Moto 3. |
Session | Practices 1 to 4, Qualifying and Races. |
Racecodes | codes to obtain a concrete Gran Premio as QAT for Grand Prix of Qatar, ARG for Gran Premio de la Republica Argentina.... |
The method getCompetitorAndItsResultsByCategoryRaceCodeYearAndSession calls to the API and return a list of competitors. You can iterate over this list to get information about the result of each competitor as name, gender, nationality, or results about the race
This code sample, which is at Main.java class, returns the following list containing competitors, and I printed the result position.
List<Competitor> competitors =APIGetters.getCompetitorAndItsResultsByCategoryRaceCodeYearAndSession(2019, RaceCode.QAT, Category.MotoGP, Session.Qualifying);
for(Competitor c:competitors) {
System.out.println(c.getName()+ " - " + c.getResult().getPosition())
}
Printed
Vinales, Maverick - 1º
Dovizioso, Andrea - 2º
Marquez, Marc - 3º
Miller, Jack - 4º
Quartararo, Fabio - 5º
Crutchlow, Cal - 6º
Petrucci, Danilo - 7º
Morbidelli, Franco - 8º
Nakagami, Takaaki - 9º
Rins, Alex - 10º
Mir, Joan - 11º
Espargaro, Aleix - 12º
Bagnaia, Francesco - 13º
Rossi, Valentino - 14º
Lorenzo, Jorge - 15º
Espargaro, Pol - 16º
Oliveira, Miguel - 17º
Rabat, Esteve - 18º
Iannone, Andrea - 19º
Abraham, Karel - 20º
Zarco, Johann - 21º
Syahrin Abdullah, Hafizh - 22º
Smith, Bradley - 23º
The method getDetailsOfASeasonGPs calls to the API and return a list of Venues. You can iterate over this list to get information about the information of each Venue (Gran Premio) as city, country, country code, name, curves left, curves right, debut or even the lenght of the circuit
This code sample, which is at Main.java class, returns the following list containing Venues, and I printed the name.
List<Venue> detailedGps = APIGetters.getDetailsOfASeasonGPs(2013, Category.MotoGP);
for(Venue v:detailedGps) {
System.out.println(v.getName());
}
Printed
Losail International Circuit
Circuit of The Americas
Circuit de Jerez
Le Mans Bugatti Circuit
Autodromo Internazionale del Mugello
Circuit de Catalunya
TT Circuit Assen
Sachsenring
Mazda Raceway Laguna Seca
Automotodrom Brno
Silverstone Circuit
Misano World Circuit
Motorland Aragon
Sepang International Circuit
Phillip Island Circuit
Twin Ring Motegi
Circuit de la Comunitat Valenciana Ricardo Tormo
This two methods are depending of more methods that you can found and read inside this proyect. If you are not interested at what these two methods returns, you can use more methods that are coded inside for your own benefit, you only have to take a glance at them.
Anyways, if you dont understand what am I doing inside here you can contact me via gmail (xnegis@gmail.com) or take a glance about the official documentation
Different exceptions could be thrown and here you got them all explained
Exception | Caused by |
---|---|
emptyResponseException | It is caused when the API returns an empty json. It returns it for various reasons as for example a bad request. |
raceCodeUnabaliableException | It is caused when introducing a race code that is not avaliable for that year. For example if you request QAT for year 2020, it may be possible that in 2020 no races were been ran in Qatar ,and so, you get this exception. |
sessionNotFoundException | It is caused when the session that have been introduced as parametter has not been found mixed with the other parameters. Similar to race code unabaliable but for instance, you are requesting Qualifying to race code Qatar and there is not anything API can return. |
yearNotValidException | It is caused when you introduce an invalid. It only admits years between 2012 and actual year |
403 error | This error is not controlled by the application, but it will appear in the case that you overpass the limited querys per second or by the expiration of your api key. |
You will see throughtout all the clases the following instance :
TimeUnit.SECONDS.sleep(1)
This is simply there to not overpass the limit of querys per second. If your key is a trial, it will have this restrinction.
You can put your Api key at the APIGetters.java class.
Last update 11/02/2021. Current version 1.0