From 854ebc06b022c6c614526f521cebe7c72df0c1b6 Mon Sep 17 00:00:00 2001 From: unintended fraud Date: Wed, 19 Oct 2022 23:38:46 +0200 Subject: [PATCH] fix --- commands/pinned.go | 1 - commands/psg_refresh_fixtures.go | 207 ---------------------- data/football/psg_fixtures_unordered.json | 1 - main.go | 2 +- 4 files changed, 1 insertion(+), 210 deletions(-) delete mode 100644 commands/psg_refresh_fixtures.go delete mode 100644 data/football/psg_fixtures_unordered.json diff --git a/commands/pinned.go b/commands/pinned.go index 4765426..860c0e5 100644 --- a/commands/pinned.go +++ b/commands/pinned.go @@ -30,7 +30,6 @@ func InitPinned(c tempest.Client, serverIDs []tempest.Snowflake) error { channels, err := getChannels(c.Rest, sid.String()) if err != nil { fmt.Println("failed to get the channels for server", sid, err) - // return err } for _, channel := range channels { diff --git a/commands/psg_refresh_fixtures.go b/commands/psg_refresh_fixtures.go deleted file mode 100644 index 3e783ca..0000000 --- a/commands/psg_refresh_fixtures.go +++ /dev/null @@ -1,207 +0,0 @@ -package commands - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "log" - "net/http" - "os" - "sort" - "time" - - tempest "github.com/Amatsagu/Tempest" -) - -type Matches []Match - -func (m Matches) Len() int { - return len(m) -} - -func (m Matches) Less(i int, j int) bool { - return m[i].Fixture.Timestamp < m[j].Fixture.Timestamp -} - -func (m Matches) Swap(i int, j int) { - m[i], m[j] = m[j], m[i] -} - -const PSG_FILE_PATH = "../data/football/psg_fixtures.json" - -const endpoint = "https://v3.football.api-sports.io/fixtures" - -const authorizedUser = "160073741076922369" - -var PsgRefreshFixtures tempest.Command = tempest.Command{ - Name: "psg-refresh-fixtures", - Description: "met à jour les matchs du psg si ça change ou des matchs sont ajoutés (e.g. CL)", - Options: []tempest.Option{}, - SlashCommandHandler: func(itx tempest.CommandInteraction) { - if itx.User.Id.String() != authorizedUser { - itx.SendLinearReply("command cannot be used by you :(", true) - return - } - - client := &http.Client{} - - url := fmt.Sprintf("%s?season=2022&team=85&timezone=Europe/Paris", endpoint) - - req, err := http.NewRequest("GET", url, nil) - if err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to create the request: %s", err.Error()), true) - return - } - - req.Header.Add("x-rapidapi-key", "a22d9050a0d04cfeb988bffe89854617") - req.Header.Add("x-rapidapi-host", "v3.football.api-sports.io") - - res, err := client.Do(req) - if err != nil { - itx.SendLinearReply(fmt.Sprintf("request failed: %s", err.Error()), true) - return - } - defer res.Body.Close() - - body, err := ioutil.ReadAll(res.Body) - if err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to read the response body: %s", err.Error()), true) - return - } - - r := &Response{} - if err = json.Unmarshal(body, r); err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to unmarshal the response: %s", err.Error()), true) - return - } - - matches := Matches(r.Response) - sort.Sort(matches) - - sortedBytes, err := json.Marshal(matches) - if err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to marshal the sorted list: %s", err.Error()), true) - return - } - - f, err := os.Create(PSG_FILE_PATH) - if err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to create the json file: %s", err.Error()), true) - return - } - - if _, err = f.Write(sortedBytes); err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to write the json: %s", err.Error()), true) - return - } - - itx.SendLinearReply("matches refreshed", true) - }, -} - -var PsgNextMatch tempest.Command = tempest.Command{ - Name: "psg-next-match", - Description: "montre le prochain match du PSG", - Options: []tempest.Option{}, - SlashCommandHandler: func(itx tempest.CommandInteraction) { - file, err := ioutil.ReadFile(PSG_FILE_PATH) - if err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to open the json file: %s", err.Error()), true) - return - } - - var list Matches - if err = json.Unmarshal(file, &list); err != nil { - itx.SendLinearReply(fmt.Sprintf("failed to unmarshal the list: %s", err.Error()), true) - return - } - - now := time.Now() - - var nextMatch *Match - - for _, m := range list { - if m.Fixture.Date.Before(now) { - continue - } - - nextMatch = &m - } - - if err := itx.SendReply(tempest.ResponseData{ - Content: formatNextPSGMatchContent(nextMatch), - }, false); err != nil { - log.Printf("failed to send reply with the pinned message: %s",err.Error()) - itx.SendLinearReply(err.Error(), true) - } - }, -} - -func formatNextPSGMatchContent(m *Match) string { - if m == nil { - return "no next match available" - } - - return fmt.Sprintf( - "%s - %s, %s (%s, %s)", - m.Teams.Home.Name, - m.Teams.Away.Name, - m.Fixture.Date.Format("02 Jan 2006, 15:04"), - m.Fixture.Venue.Name, - m.Fixture.Venue.City, - ) -} - - -type Match struct { - Fixture Fixture `json:"fixture"` - League LeagueStruct `json:"league"` - Teams struct { - Home TeamStruct `json:"home"` - Away TeamStruct `json:"away"` - }`json:"teams"` -} - -type Fixture struct { - ID int64 `json:"id"` - Referee string `json:"referee"` - Timezone string `json:"timezone"` - Date time.Time `json:"date"` - Timestamp int64 `json:"timestamp"` - Venue VenueStruct `json:"venue"` -} - -type TeamStruct struct { - ID int64 `json:"id"` - Name string `json:"name"` -} - -type LeagueStruct struct { - ID int64 `json:"id"` - Name string `json:"name"` - Country string `json:"country"` - Round string `json:"round"` -} - -type VenueStruct struct { - ID int64 `json:"id"` - Name string `json:"name"` - City string `json:"city"` -} - -type Response struct { - Get string `json:"get"` - Results int64 `json:"results"` - Paging Paging `json:"paging"` - Response []Match `json:"response"` -} - -type Paging struct { - Current int64 `json:"current"` - Total int64 `json:"total"` -} - -type Payload struct { - Season string `json:"season"` - Team string `json:"team"` -} diff --git a/data/football/psg_fixtures_unordered.json b/data/football/psg_fixtures_unordered.json deleted file mode 100644 index d87a89f..0000000 --- a/data/football/psg_fixtures_unordered.json +++ /dev/null @@ -1 +0,0 @@ -{"get":"fixtures","parameters":{"season":"2022","team":"85"},"errors":[],"results":52,"paging":{"current":1,"total":1},"response":[{"fixture":{"id":861714,"referee":"O. Grinfeeld","timezone":"UTC","date":"2022-07-31T18:00:00+00:00","timestamp":1659290400,"periods":{"first":1659290400,"second":1659294000},"venue":{"id":null,"name":"Bloomfield Stadium","city":"Tel-Aviv"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":526,"name":"Troph\u00e9e des Champions","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/526.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Final"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":83,"name":"Nantes","logo":"https:\/\/media.api-sports.io\/football\/teams\/83.png","winner":false}},"goals":{"home":4,"away":0},"score":{"halftime":{"home":2,"away":0},"fulltime":{"home":4,"away":0},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":869529,"referee":"Y. Araki","timezone":"UTC","date":"2022-07-20T10:30:00+00:00","timestamp":1658313000,"periods":{"first":1658313000,"second":1658316600},"venue":{"id":null,"name":"Japan National Stadium","city":"Tokyo"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":667,"name":"Friendlies Clubs","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/667.png","flag":null,"season":2022,"round":"Club Friendlies 1"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":294,"name":"Kawasaki Frontale","logo":"https:\/\/media.api-sports.io\/football\/teams\/294.png","winner":false}},"goals":{"home":2,"away":1},"score":{"halftime":{"home":1,"away":0},"fulltime":{"home":2,"away":1},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":869536,"referee":"R. Sato","timezone":"UTC","date":"2022-07-23T10:00:00+00:00","timestamp":1658570400,"periods":{"first":1658570400,"second":1658574000},"venue":{"id":980,"name":"Saitama Stadium 2002","city":"Saitama"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":667,"name":"Friendlies Clubs","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/667.png","flag":null,"season":2022,"round":"Club Friendlies 1"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":287,"name":"Urawa","logo":"https:\/\/media.api-sports.io\/football\/teams\/287.png","winner":false}},"goals":{"home":3,"away":0},"score":{"halftime":{"home":2,"away":0},"fulltime":{"home":3,"away":0},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":869541,"referee":"F. Nakamura","timezone":"UTC","date":"2022-07-25T10:00:00+00:00","timestamp":1658743200,"periods":{"first":1658743200,"second":1658746800},"venue":{"id":18623,"name":"Panasonic Stadium Suita","city":"Suita"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":667,"name":"Friendlies Clubs","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/667.png","flag":null,"season":2022,"round":"Club Friendlies 1"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":293,"name":"Gamba Osaka","logo":"https:\/\/media.api-sports.io\/football\/teams\/293.png","winner":false}},"goals":{"home":6,"away":2},"score":{"halftime":{"home":4,"away":1},"fulltime":{"home":6,"away":2},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871472,"referee":"Jeremy Stinat, France","timezone":"UTC","date":"2022-08-06T19:00:00+00:00","timestamp":1659812400,"periods":{"first":1659812400,"second":1659816000},"venue":{"id":644,"name":"Stade Gabriel Montpied","city":"Clermont-Ferrand"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 1"},"teams":{"home":{"id":99,"name":"Clermont Foot","logo":"https:\/\/media.api-sports.io\/football\/teams\/99.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":0,"away":5},"score":{"halftime":{"home":0,"away":3},"fulltime":{"home":0,"away":5},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871486,"referee":"Willy Delajod, France","timezone":"UTC","date":"2022-08-13T19:00:00+00:00","timestamp":1660417200,"periods":{"first":1660417200,"second":1660420800},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 2"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":82,"name":"Montpellier","logo":"https:\/\/media.api-sports.io\/football\/teams\/82.png","winner":false}},"goals":{"home":5,"away":2},"score":{"halftime":{"home":2,"away":0},"fulltime":{"home":5,"away":2},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871493,"referee":"Clement Turpin, France","timezone":"UTC","date":"2022-08-21T18:45:00+00:00","timestamp":1661107500,"periods":{"first":1661107500,"second":1661111100},"venue":{"id":655,"name":"Stade Pierre-Mauroy","city":"Villeneuve d'Ascq"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 3"},"teams":{"home":{"id":79,"name":"Lille","logo":"https:\/\/media.api-sports.io\/football\/teams\/79.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":1,"away":7},"score":{"halftime":{"home":0,"away":4},"fulltime":{"home":1,"away":7},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871505,"referee":"Beno\u00eet Bastien, France","timezone":"UTC","date":"2022-08-28T18:45:00+00:00","timestamp":1661712300,"periods":{"first":1661712300,"second":1661715900},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 4"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":91,"name":"Monaco","logo":"https:\/\/media.api-sports.io\/football\/teams\/91.png","winner":null}},"goals":{"home":1,"away":1},"score":{"halftime":{"home":0,"away":1},"fulltime":{"home":1,"away":1},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871519,"referee":"Hakim Ben el Salem Hadj, France","timezone":"UTC","date":"2022-08-31T19:00:00+00:00","timestamp":1661972400,"periods":{"first":1661972400,"second":1661976000},"venue":{"id":682,"name":"Stadium de Toulouse","city":"Toulouse"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 5"},"teams":{"home":{"id":96,"name":"Toulouse","logo":"https:\/\/media.api-sports.io\/football\/teams\/96.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":0,"away":3},"score":{"halftime":{"home":0,"away":1},"fulltime":{"home":0,"away":3},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871523,"referee":"Pierre Gaillouste, France","timezone":"UTC","date":"2022-09-03T19:00:00+00:00","timestamp":1662231600,"periods":{"first":1662231600,"second":1662235200},"venue":{"id":662,"name":"Stade de la Beaujoire - Louis Fonteneau","city":"Nantes"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 6"},"teams":{"home":{"id":83,"name":"Nantes","logo":"https:\/\/media.api-sports.io\/football\/teams\/83.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":0,"away":3},"score":{"halftime":{"home":0,"away":1},"fulltime":{"home":0,"away":3},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871535,"referee":"Jeremie Pignard, France","timezone":"UTC","date":"2022-09-10T15:00:00+00:00","timestamp":1662822000,"periods":{"first":1662822000,"second":1662825600},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 7"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":106,"name":"Stade Brestois 29","logo":"https:\/\/media.api-sports.io\/football\/teams\/106.png","winner":false}},"goals":{"home":1,"away":0},"score":{"halftime":{"home":1,"away":0},"fulltime":{"home":1,"away":0},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871546,"referee":"Francois Letexier, France","timezone":"UTC","date":"2022-09-18T18:45:00+00:00","timestamp":1663526700,"periods":{"first":1663526700,"second":1663530300},"venue":{"id":666,"name":"Groupama Stadium","city":"D\u00e9cines-Charpieu"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 8"},"teams":{"home":{"id":80,"name":"Lyon","logo":"https:\/\/media.api-sports.io\/football\/teams\/80.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":0,"away":1},"score":{"halftime":{"home":0,"away":1},"fulltime":{"home":0,"away":1},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871555,"referee":"J\u00e9r\u00f4me Brisard, France","timezone":"UTC","date":"2022-10-01T19:00:00+00:00","timestamp":1664650800,"periods":{"first":1664650800,"second":1664654400},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 9"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":84,"name":"Nice","logo":"https:\/\/media.api-sports.io\/football\/teams\/84.png","winner":false}},"goals":{"home":2,"away":1},"score":{"halftime":{"home":1,"away":0},"fulltime":{"home":2,"away":1},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871569,"referee":"Pierre Gaillouste, France","timezone":"UTC","date":"2022-10-08T19:00:00+00:00","timestamp":1665255600,"periods":{"first":1665255600,"second":1665259200},"venue":{"id":674,"name":"Stade Auguste-Delaune II","city":"Reims"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 10"},"teams":{"home":{"id":93,"name":"Reims","logo":"https:\/\/media.api-sports.io\/football\/teams\/93.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":0,"away":0},"score":{"halftime":{"home":0,"away":0},"fulltime":{"home":0,"away":0},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871574,"referee":"Clement Turpin, France","timezone":"UTC","date":"2022-10-16T18:45:00+00:00","timestamp":1665945900,"periods":{"first":1665945900,"second":1665949500},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 11"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":81,"name":"Marseille","logo":"https:\/\/media.api-sports.io\/football\/teams\/81.png","winner":false}},"goals":{"home":1,"away":0},"score":{"halftime":{"home":1,"away":0},"fulltime":{"home":1,"away":0},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871580,"referee":null,"timezone":"UTC","date":"2022-10-21T19:00:00+00:00","timestamp":1666378800,"periods":{"first":null,"second":null},"venue":{"id":632,"name":"Stade Fran\u00e7ois Coty","city":"Ajaccio"},"status":{"long":"Not Started","short":"NS","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 12"},"teams":{"home":{"id":98,"name":"Ajaccio","logo":"https:\/\/media.api-sports.io\/football\/teams\/98.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871595,"referee":null,"timezone":"UTC","date":"2022-10-29T15:00:00+00:00","timestamp":1667055600,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Not Started","short":"NS","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 13"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":110,"name":"Estac Troyes","logo":"https:\/\/media.api-sports.io\/football\/teams\/110.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871603,"referee":null,"timezone":"UTC","date":"2022-11-06T12:00:00+00:00","timestamp":1667736000,"periods":{"first":null,"second":null},"venue":{"id":656,"name":"Stade Yves Allainmat - Le Moustoir","city":"Lorient"},"status":{"long":"Not Started","short":"NS","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 14"},"teams":{"home":{"id":97,"name":"Lorient","logo":"https:\/\/media.api-sports.io\/football\/teams\/97.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871615,"referee":null,"timezone":"UTC","date":"2022-11-13T00:00:00+00:00","timestamp":1668297600,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 15"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":108,"name":"Auxerre","logo":"https:\/\/media.api-sports.io\/football\/teams\/108.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871626,"referee":null,"timezone":"UTC","date":"2022-12-28T00:00:00+00:00","timestamp":1672185600,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 16"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":95,"name":"Strasbourg","logo":"https:\/\/media.api-sports.io\/football\/teams\/95.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871634,"referee":null,"timezone":"UTC","date":"2023-01-01T00:00:00+00:00","timestamp":1672531200,"periods":{"first":null,"second":null},"venue":{"id":654,"name":"Stade Bollaert-Delelis","city":"Lens"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 17"},"teams":{"home":{"id":116,"name":"Lens","logo":"https:\/\/media.api-sports.io\/football\/teams\/116.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871646,"referee":null,"timezone":"UTC","date":"2023-01-11T00:00:00+00:00","timestamp":1673395200,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 18"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":77,"name":"Angers","logo":"https:\/\/media.api-sports.io\/football\/teams\/77.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871657,"referee":null,"timezone":"UTC","date":"2023-01-15T00:00:00+00:00","timestamp":1673740800,"periods":{"first":null,"second":null},"venue":{"id":680,"name":"Roazhon Park","city":"Rennes"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 19"},"teams":{"home":{"id":94,"name":"Rennes","logo":"https:\/\/media.api-sports.io\/football\/teams\/94.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871666,"referee":null,"timezone":"UTC","date":"2023-01-29T00:00:00+00:00","timestamp":1674950400,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 20"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":93,"name":"Reims","logo":"https:\/\/media.api-sports.io\/football\/teams\/93.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871676,"referee":null,"timezone":"UTC","date":"2023-02-01T00:00:00+00:00","timestamp":1675209600,"periods":{"first":null,"second":null},"venue":{"id":660,"name":"Stade de la Mosson","city":"Montpellier"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 21"},"teams":{"home":{"id":82,"name":"Montpellier","logo":"https:\/\/media.api-sports.io\/football\/teams\/82.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871685,"referee":null,"timezone":"UTC","date":"2023-02-05T00:00:00+00:00","timestamp":1675555200,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 22"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":96,"name":"Toulouse","logo":"https:\/\/media.api-sports.io\/football\/teams\/96.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871690,"referee":null,"timezone":"UTC","date":"2023-02-12T00:00:00+00:00","timestamp":1676160000,"periods":{"first":null,"second":null},"venue":{"id":659,"name":"Stade Louis II","city":"Monaco"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 23"},"teams":{"home":{"id":91,"name":"Monaco","logo":"https:\/\/media.api-sports.io\/football\/teams\/91.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871703,"referee":null,"timezone":"UTC","date":"2023-02-19T00:00:00+00:00","timestamp":1676764800,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 24"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":79,"name":"Lille","logo":"https:\/\/media.api-sports.io\/football\/teams\/79.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871718,"referee":null,"timezone":"UTC","date":"2023-02-26T00:00:00+00:00","timestamp":1677369600,"periods":{"first":null,"second":null},"venue":{"id":12678,"name":"Stade Orange V\u00e9lodrome","city":"Marseille"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 25"},"teams":{"home":{"id":81,"name":"Marseille","logo":"https:\/\/media.api-sports.io\/football\/teams\/81.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871723,"referee":null,"timezone":"UTC","date":"2023-03-05T00:00:00+00:00","timestamp":1677974400,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 26"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":83,"name":"Nantes","logo":"https:\/\/media.api-sports.io\/football\/teams\/83.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871739,"referee":null,"timezone":"UTC","date":"2023-03-12T00:00:00+00:00","timestamp":1678579200,"periods":{"first":null,"second":null},"venue":{"id":641,"name":"Stade Francis-Le Bl\u00e9","city":"Brest"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 27"},"teams":{"home":{"id":106,"name":"Stade Brestois 29","logo":"https:\/\/media.api-sports.io\/football\/teams\/106.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871744,"referee":null,"timezone":"UTC","date":"2023-03-19T00:00:00+00:00","timestamp":1679184000,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 28"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":94,"name":"Rennes","logo":"https:\/\/media.api-sports.io\/football\/teams\/94.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871757,"referee":null,"timezone":"UTC","date":"2023-04-02T00:00:00+00:00","timestamp":1680393600,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 29"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":80,"name":"Lyon","logo":"https:\/\/media.api-sports.io\/football\/teams\/80.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871765,"referee":null,"timezone":"UTC","date":"2023-04-09T00:00:00+00:00","timestamp":1680998400,"periods":{"first":null,"second":null},"venue":{"id":663,"name":"Allianz Riviera","city":"Nice"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 30"},"teams":{"home":{"id":84,"name":"Nice","logo":"https:\/\/media.api-sports.io\/football\/teams\/84.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871775,"referee":null,"timezone":"UTC","date":"2023-04-16T00:00:00+00:00","timestamp":1681603200,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 31"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":116,"name":"Lens","logo":"https:\/\/media.api-sports.io\/football\/teams\/116.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871782,"referee":null,"timezone":"UTC","date":"2023-04-23T00:00:00+00:00","timestamp":1682208000,"periods":{"first":null,"second":null},"venue":{"id":634,"name":"Stade Raymond-Kopa","city":"Angers"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 32"},"teams":{"home":{"id":77,"name":"Angers","logo":"https:\/\/media.api-sports.io\/football\/teams\/77.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871794,"referee":null,"timezone":"UTC","date":"2023-04-30T00:00:00+00:00","timestamp":1682812800,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 33"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":97,"name":"Lorient","logo":"https:\/\/media.api-sports.io\/football\/teams\/97.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871809,"referee":null,"timezone":"UTC","date":"2023-05-07T00:00:00+00:00","timestamp":1683417600,"periods":{"first":null,"second":null},"venue":{"id":684,"name":"Stade de l'Aube","city":"Troyes"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 34"},"teams":{"home":{"id":110,"name":"Estac Troyes","logo":"https:\/\/media.api-sports.io\/football\/teams\/110.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871814,"referee":null,"timezone":"UTC","date":"2023-05-14T00:00:00+00:00","timestamp":1684022400,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 35"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":98,"name":"Ajaccio","logo":"https:\/\/media.api-sports.io\/football\/teams\/98.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871821,"referee":null,"timezone":"UTC","date":"2023-05-21T00:00:00+00:00","timestamp":1684627200,"periods":{"first":null,"second":null},"venue":{"id":636,"name":"Stade de l'Abb\u00e9 Deschamps","city":"Auxerre"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 36"},"teams":{"home":{"id":108,"name":"Auxerre","logo":"https:\/\/media.api-sports.io\/football\/teams\/108.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871837,"referee":null,"timezone":"UTC","date":"2023-05-27T00:00:00+00:00","timestamp":1685145600,"periods":{"first":null,"second":null},"venue":{"id":681,"name":"Stade de la Meinau","city":"Strasbourg"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 37"},"teams":{"home":{"id":95,"name":"Strasbourg","logo":"https:\/\/media.api-sports.io\/football\/teams\/95.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":871846,"referee":null,"timezone":"UTC","date":"2023-06-03T00:00:00+00:00","timestamp":1685750400,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Time to be defined","short":"TBD","elapsed":null}},"league":{"id":61,"name":"Ligue 1","country":"France","logo":"https:\/\/media.api-sports.io\/football\/leagues\/61.png","flag":"https:\/\/media.api-sports.io\/flags\/fr.svg","season":2022,"round":"Regular Season - 38"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":99,"name":"Clermont Foot","logo":"https:\/\/media.api-sports.io\/football\/teams\/99.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":889887,"referee":null,"timezone":"UTC","date":"2022-07-15T15:00:00+00:00","timestamp":1657897200,"periods":{"first":1657897200,"second":1657900800},"venue":{"id":null,"name":"Centre d'entra\u00eenement Ooredoo","city":"Saint-Germain-en-Laye"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":667,"name":"Friendlies Clubs","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/667.png","flag":null,"season":2022,"round":"Club Friendlies 1"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":431,"name":"Quevilly","logo":"https:\/\/media.api-sports.io\/football\/teams\/431.png","winner":false}},"goals":{"home":2,"away":0},"score":{"halftime":{"home":1,"away":0},"fulltime":{"home":2,"away":0},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":922825,"referee":null,"timezone":"UTC","date":"2022-07-20T10:30:00+00:00","timestamp":1658313000,"periods":{"first":1658313000,"second":1658316600},"venue":{"id":null,"name":null,"city":null},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":667,"name":"Friendlies Clubs","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/667.png","flag":null,"season":2022,"round":"Club Friendlies 5"},"teams":{"home":{"id":294,"name":"Kawasaki Frontale","logo":"https:\/\/media.api-sports.io\/football\/teams\/294.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":1,"away":2},"score":{"halftime":{"home":0,"away":1},"fulltime":{"home":1,"away":2},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":922902,"referee":null,"timezone":"UTC","date":"2022-07-23T10:00:00+00:00","timestamp":1658570400,"periods":{"first":1658570400,"second":1658574000},"venue":{"id":null,"name":null,"city":null},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":667,"name":"Friendlies Clubs","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/667.png","flag":null,"season":2022,"round":"Club Friendlies 5"},"teams":{"home":{"id":287,"name":"Urawa","logo":"https:\/\/media.api-sports.io\/football\/teams\/287.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":0,"away":3},"score":{"halftime":{"home":0,"away":2},"fulltime":{"home":0,"away":3},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":922991,"referee":null,"timezone":"UTC","date":"2022-07-25T10:00:00+00:00","timestamp":1658743200,"periods":{"first":1658743200,"second":1658746800},"venue":{"id":null,"name":null,"city":null},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":667,"name":"Friendlies Clubs","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/667.png","flag":null,"season":2022,"round":"Club Friendlies 5"},"teams":{"home":{"id":293,"name":"Gamba Osaka","logo":"https:\/\/media.api-sports.io\/football\/teams\/293.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":2,"away":6},"score":{"halftime":{"home":1,"away":4},"fulltime":{"home":2,"away":6},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":946855,"referee":"A. Taylor","timezone":"UTC","date":"2022-09-06T19:00:00+00:00","timestamp":1662490800,"periods":{"first":1662490800,"second":1662494400},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":2,"name":"UEFA Champions League","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/2.png","flag":null,"season":2022,"round":"Group H - 1"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true},"away":{"id":496,"name":"Juventus","logo":"https:\/\/media.api-sports.io\/football\/teams\/496.png","winner":false}},"goals":{"home":2,"away":1},"score":{"halftime":{"home":2,"away":0},"fulltime":{"home":2,"away":1},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":946880,"referee":"D. Siebert","timezone":"UTC","date":"2022-09-14T19:00:00+00:00","timestamp":1663182000,"periods":{"first":1663182000,"second":1663185600},"venue":{"id":868,"name":"Sammy Ofer Stadium","city":"Haifa"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":2,"name":"UEFA Champions League","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/2.png","flag":null,"season":2022,"round":"Group H - 2"},"teams":{"home":{"id":4195,"name":"Maccabi Haifa","logo":"https:\/\/media.api-sports.io\/football\/teams\/4195.png","winner":false},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":true}},"goals":{"home":1,"away":3},"score":{"halftime":{"home":1,"away":1},"fulltime":{"home":1,"away":3},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":946896,"referee":"Jes\u00fas Gil","timezone":"UTC","date":"2022-10-05T19:00:00+00:00","timestamp":1664996400,"periods":{"first":1664996400,"second":1665000000},"venue":{"id":null,"name":"Est\u00e1dio do Sport Lisboa e Benfica","city":"Lisboa"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":2,"name":"UEFA Champions League","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/2.png","flag":null,"season":2022,"round":"Group H - 3"},"teams":{"home":{"id":211,"name":"Benfica","logo":"https:\/\/media.api-sports.io\/football\/teams\/211.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":1,"away":1},"score":{"halftime":{"home":1,"away":1},"fulltime":{"home":1,"away":1},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":946904,"referee":"M. Oliver","timezone":"UTC","date":"2022-10-11T19:00:00+00:00","timestamp":1665514800,"periods":{"first":1665514800,"second":1665518400},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Match Finished","short":"FT","elapsed":90}},"league":{"id":2,"name":"UEFA Champions League","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/2.png","flag":null,"season":2022,"round":"Group H - 4"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":211,"name":"Benfica","logo":"https:\/\/media.api-sports.io\/football\/teams\/211.png","winner":null}},"goals":{"home":1,"away":1},"score":{"halftime":{"home":1,"away":0},"fulltime":{"home":1,"away":1},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":946919,"referee":null,"timezone":"UTC","date":"2022-10-25T19:00:00+00:00","timestamp":1666724400,"periods":{"first":null,"second":null},"venue":{"id":671,"name":"Parc des Princes","city":"Paris"},"status":{"long":"Not Started","short":"NS","elapsed":null}},"league":{"id":2,"name":"UEFA Champions League","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/2.png","flag":null,"season":2022,"round":"Group H - 5"},"teams":{"home":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null},"away":{"id":4195,"name":"Maccabi Haifa","logo":"https:\/\/media.api-sports.io\/football\/teams\/4195.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}},{"fixture":{"id":946943,"referee":null,"timezone":"UTC","date":"2022-11-02T20:00:00+00:00","timestamp":1667419200,"periods":{"first":null,"second":null},"venue":{"id":909,"name":"Allianz Stadium","city":"Torino"},"status":{"long":"Not Started","short":"NS","elapsed":null}},"league":{"id":2,"name":"UEFA Champions League","country":"World","logo":"https:\/\/media.api-sports.io\/football\/leagues\/2.png","flag":null,"season":2022,"round":"Group H - 6"},"teams":{"home":{"id":496,"name":"Juventus","logo":"https:\/\/media.api-sports.io\/football\/teams\/496.png","winner":null},"away":{"id":85,"name":"Paris Saint Germain","logo":"https:\/\/media.api-sports.io\/football\/teams\/85.png","winner":null}},"goals":{"home":null,"away":null},"score":{"halftime":{"home":null,"away":null},"fulltime":{"home":null,"away":null},"extratime":{"home":null,"away":null},"penalty":{"home":null,"away":null}}}]} diff --git a/main.go b/main.go index aea3bd3..0aff18a 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,7 @@ import ( tempest "github.com/Amatsagu/Tempest" ) -func main_old() { +func main() { env := getEnvVariables() client := tempest.CreateClient(tempest.ClientOptions{