pip install requests pytz
from datetime import datetime, timedelta, timezoneimport os​import requestsimport pytz​​api_tz = pytz.timezone("Europe/London")​# Change this to your timezonelocal_tz = pytz.timezone("Europe/Rome")​​def get_current_datetime_on_api_server():london_time = datetime.now(tz=timezone.utc).astimezone(api_tz)return london_time​​def to_local_datetime(start_date):dt = datetime.strptime(start_date, "%Y-%m-%dT%H:%M:%S")return api_tz.localize(dt).astimezone(local_tz)​​if __name__ == "__main__":# this is a datetime object with the timezone used by our apicurrent_server_time = get_current_datetime_on_api_server()​# obtaining the next day as python date objecttomorrow = current_server_time.date() + timedelta(days=1)​# setting our API key for authheaders = {'User-Agent': 'python_requests',"X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"],}​session = requests.Session()session.headers = headers​# setting our query paramsparams = {"iso_date": tomorrow.isoformat(), # python date object should be transformed to ISO format (YYYY-MM-DD)"federation": "UEFA","market": "classic"}​prediction_endpoint = "https://football-prediction-api.p.rapidapi.com/api/v2/predictions"response = session.get(prediction_endpoint, params=params)​if response.ok:json = response.json()json["data"].sort(key=lambda p: p["start_date"])​for match in json["data"]:# going to print tab separated start_time, home_team vs away team, prediction @ predicted odds.output = "{st}\t{ht} vs {at}\t{p} @ {odd}"​local_start_time = to_local_datetime(match["start_date"])home_team = match["home_team"]away_team = match["away_team"]prediction = match["prediction"]​if "odds" in match:prediction_odds = match["odds"].get(prediction, None)else:# user is not able to see odds as it's subscription plan does not support it.prediction_odds = None​print(output.format(st=local_start_time, ht=home_team, at=away_team, p=prediction, odd=prediction_odds))else:print("Bad response from server, status-code: {}".format(response.status_code))print(response.content)​
npm install moment-timezone axios
const moment = require("moment-timezone");const axios = require("axios");​const API_TZ = "Europe/London";const LOCAL_TZ = "Europe/Rome";​// read the current time in the API timezoneconst now = moment.tz(API_TZ);const tomorrow = now.add(1, "days");​const predictionEndpoint = "https://football-prediction-api.p.rapidapi.com/api/v2/predictions";// setting our API key for auth// this info should be kept out of public git or other versioning softwareconst authHeader = {"X-RapidAPI-Key": process.env.RAPIDAPI_KEY}const params = {iso_date: tomorrow.format("YYYY-MM-DD"), // transforming to ISO format.federation: "UEFA",market: "classic"}​const opts = {method: "GET",headers: authHeader,params: params}​axios.get(predictionEndpoint, opts).then(response => {const json = response.data;​json.data.sort((a, b) => {// sort ascending by start_dateif (a.start_date > b.start_date)return 1;if (a.start_date < b.start_date)return -1;return 0;});​json.data.forEach(match => {const locStartDate = moment.tz(match.start_date, API_TZ).tz(LOCAL_TZ);let winOdds;​if (match.odds && match.prediction in match.odds) {winOdds = (match.odds[match.prediction] !== null ?match.odds[match.prediction].toFixed(2): "");} else {// Not able to see odds as the subscription plan does not support it.// or current match does not have the odds available for this predictionwinOdds = "n/a";}console.log(`${locStartDate}\t${match.home_team} vs ${match.away_team}\t${match.prediction} @ ${winOdds}`)})}).catch(err => {console.log(err.message);});
pom.xml<dependency><groupId>com.mashape.unirest</groupId><artifactId>unirest-java</artifactId><version>1.4.9</version></dependency>
package Example;​import com.mashape.unirest.http.*;import org.json.*;import java.time.*;import java.time.format.DateTimeFormatter;import java.util.*;​​public class Example {​private static String API_TZ = "Europe/London";private static String LOCAL_TZ = "Europe/Rome";private static String predictionEndpoint = "https://football-prediction-api.p.rapidapi.com/api/v2/predictions";​private static String getAuthKey() {return System.getenv("RAPIDAPI_KEY");}​private static ZonedDateTime getApiTimestamp() {return ZonedDateTime.now(ZoneId.of(API_TZ));}​private void getPredictions() throws Exception {String tomorrow = getApiTimestamp().plusDays(1).format(DateTimeFormatter.ISO_LOCAL_DATE);System.out.println("Current API_TZ timestamp: " + getApiTimestamp().toString());System.out.println("Tomorrow is: " + tomorrow);​HttpResponse<JsonNode> response = Unirest.get(predictionEndpoint).header("X-RapidAPI-Key", getAuthKey()).queryString("federation", "UEFA").queryString("market", "classic").queryString("iso_date", tomorrow).asJson();​JSONArray jsonArray = response.getBody().getObject().getJSONArray("data");​if (jsonArray == null) {return;}​List<JSONObject> jsonAsList = new ArrayList<JSONObject>();for (int i = 0; i < jsonArray.length(); i++)jsonAsList.add(jsonArray.getJSONObject(i));​jsonAsList.sort(new Comparator<JSONObject>() {@Overridepublic int compare(JSONObject a, JSONObject b) {String st1 = a.getString("start_date");String st2 = b.getString("start_date");return st1.compareTo(st2);}});​for (JSONObject match : jsonAsList) {​LocalDateTime dt = LocalDateTime.parse(match.getString("start_date"));ZonedDateTime apiDt = ZonedDateTime.of(dt, ZoneId.of(API_TZ));ZonedDateTime localDt = apiDt.withZoneSameInstant(ZoneId.of(LOCAL_TZ));String homeTeam = match.getString("home_team");String awayTeam = match.getString("away_team");String prediction = match.getString("prediction");JSONObject odds = match.optJSONObject("odds");String winOdds = "n/a";​System.out.println("LocalDateTime: " + dt + " vs " + localDt);if (odds != null) {// set default odds to 0 in case not found.double optOdds = odds.optDouble(prediction, 0.0);​// all valid odds are > 1.0, the rest are defaultValue from aboveif (optOdds > 1.0) {winOdds = String.valueOf(optOdds);}}System.out.println(localDt.toString() + "\t" + homeTeam + " vs " + awayTeam + "\t" + prediction + " @ " + winOdds);}}​public static void main(String[] args) {Unirest.setTimeouts(10000, 10000);Example client = new Example();​try {client.getPredictions();} catch (Exception e) {e.printStackTrace();}}}