diff --git a/api.md b/api.md new file mode 100644 index 0000000..6b566ad --- /dev/null +++ b/api.md @@ -0,0 +1,120 @@ +Search Clubs +GET /club/search?q=QUERY + +Find clubs on fotbal.cz. Supports football and futsal clubs. + +Example: https://facr.tdvorak.dev/club/search?q=Sparta + +Response shape +{ + "query": "Sparta", + "count": 2, + "results": [ + { + "name": "AC Sparta Praha", + "club_id": "", + "club_type": "football", + "url": "https://www.fotbal.cz/...", + "logo_url": "https://.../logo.png", + "category": "Muži", + "address": "..." + } + ] +} + +Club Info + Matches +GET /club/{type}/{id} - id must be provided in the setup of the club + +{type}: football +{id}: club UUID from fotbal.cz +Example: https://facr.tdvorak.dev/club/football/00000000-0000-0000-0000-000000000000 + +Response shape +{ + "name": "AC Sparta Praha", + "club_id": "00000000-0000-0000-0000-000000000000", + "club_type": "football", + "club_internal_id": "123456", + "url": "https://www.fotbal.cz/...", + "logo_url": "https://is1.fotbal.cz/media/kluby/.../logo.jpg", + "address": "Milady Horákové 98, 160 00 Praha 6", + "category": "Muži A", + "competitions": [ + { + "id": "12345", + "code": "1. LIGA", + "name": "Fortuna Liga", + "team_count": "16", + "matches_link": "https://www.fotbal.cz/...", + "matches": [ + { + "date_time": "12.08.2023 18:00", + "home": "AC Sparta Praha", + "home_id": "00000000-0000-0000-0000-000000000000", + "home_logo_url": "https://.../sparta.png", + "away": "SK Slavia Praha", + "away_id": "11111111-1111-1111-1111-111111111111", + "away_logo_url": "https://.../slavia.png", + "score": "2:1", + "venue": "Stadion Letná", + "match_id": "match12345", + "report_url": "https://www.fotbal.cz/..." + } + ] + } + ] +} + +Club Tables (Standings) +GET /club/{type}/{id}/table - id must be provided in the setup of the club + +Returns standings (overall table) for each competition of the club. + +Example: https://facr.tdvorak.dev/club/football/00000000-0000-0000-0000-000000000000/table + +Response shape +{ + "name": "AC Sparta Praha", + "club_id": "00000000-0000-0000-0000-000000000000", + "club_type": "football", + "club_internal_id": "123456", + "url": "https://www.fotbal.cz/...", + "logo_url": "https://is1.fotbal.cz/media/kluby/.../logo.jpg", + "competitions": [ + { + "id": "12345", + "code": "1. LIGA", + "name": "Fortuna Liga", + "team_count": "16", + "matches_link": "https://www.fotbal.cz/...", + "table": { + "overall": [ + { + "rank": "1", + "team": "AC Sparta Praha", + "team_id": "00000000-0000-0000-0000-000000000000", + "team_logo_url": "https://.../sparta.png", + "played": "10", + "wins": "8", + "draws": "2", + "losses": "0", + "score": "25:5", + "points": "26" + }, + { + "rank": "2", + "team": "SK Slavia Praha", + "team_id": "11111111-1111-1111-1111-111111111111", + "team_logo_url": "https://.../slavia.png", + "played": "10", + "wins": "7", + "draws": "2", + "losses": "1", + "score": "20:8", + "points": "23" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..0aa3d57 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,15 @@ +FROM golang:1.22-alpine AS build +WORKDIR /app +COPY . . +RUN go build -o server ./main.go + +FROM alpine:3.20 +WORKDIR /app +# HTTPS for /img/clean proxy requires CA bundle +RUN apk add --no-cache ca-certificates \ + && update-ca-certificates +# Optional: timezone data for precise Prague time +# RUN apk add --no-cache tzdata +COPY --from=build /app/server /app/server +EXPOSE 8080 +ENTRYPOINT ["/app/server"] diff --git a/backend/main.go b/backend/main.go new file mode 100644 index 0000000..728db29 --- /dev/null +++ b/backend/main.go @@ -0,0 +1,320 @@ +package main + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "log" + "net/http" + "os" + "os/signal" + "path/filepath" + "sync" + "time" +) + +const ( + clubID = "441d3783-06aa-436a-b438-359300ee0371" + clubType = "futsal" + baseURL = "https://facr.tdvorak.dev" +) + +type ClubDetail struct { + Name string `json:"name"` + ClubID string `json:"club_id"` + ClubType string `json:"club_type"` + URL string `json:"url"` + LogoURL string `json:"logo_url"` + Address string `json:"address"` + Category string `json:"category"` + Competitions []struct { + ID string `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + TeamCount string `json:"team_count"` + MatchesLink string `json:"matches_link"` + Matches []struct { + DateTime string `json:"date_time"` + Home string `json:"home"` + HomeID string `json:"home_id"` + HomeLogoURL string `json:"home_logo_url"` + Away string `json:"away"` + AwayID string `json:"away_id"` + AwayLogoURL string `json:"away_logo_url"` + Score string `json:"score"` + Venue string `json:"venue"` + MatchID string `json:"match_id"` + ReportURL string `json:"report_url"` + FacrLink string `json:"facr_link"` + } `json:"matches"` + } `json:"competitions"` +} + +func dataPath() string { + if p := os.Getenv("DATA_PATH"); p != "" { + return p + } + return "/app/data/club.json" +} + +type ClubTable struct { + Name string `json:"name"` + ClubID string `json:"club_id"` + ClubType string `json:"club_type"` + LogoURL string `json:"logo_url"` + Competitions []struct { + ID string `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + TeamCount string `json:"team_count"` + MatchesLink string `json:"matches_link"` + Table struct { + Overall []struct { + Rank string `json:"rank"` + Team string `json:"team"` + TeamID string `json:"team_id"` + TeamLogo string `json:"team_logo_url"` + Played string `json:"played"` + Wins string `json:"wins"` + Draws string `json:"draws"` + Losses string `json:"losses"` + Score string `json:"score"` + Points string `json:"points"` + } `json:"overall"` + } `json:"table"` + } `json:"competitions"` +} + +type Combined struct { + FetchedAt time.Time `json:"fetched_at"` + ClubDetail ClubDetail `json:"club_detail"` + ClubTable ClubTable `json:"club_table"` +} + +type cache struct { + mu sync.RWMutex + data Combined +} + +var c cache + +func main() { + log.SetFlags(log.LstdFlags | log.Lshortfile) + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) + defer stop() + + // initial fetch + if err := refresh(ctx); err != nil { + log.Printf("initial refresh error: %v", err) + } + + // scheduler + go scheduler(ctx) + + mux := http.NewServeMux() + mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { + okCORS(w) + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte("ok")) + }) + mux.HandleFunc("/data/club.json", func(w http.ResponseWriter, r *http.Request) { + okCORS(w) + switch r.Method { + case http.MethodGet: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + c.mu.RLock() + defer c.mu.RUnlock() + _ = json.NewEncoder(w).Encode(c.data) + case http.MethodDelete: + // delete on-disk file and clear in-memory cache + path := dataPath() + _ = os.Remove(path) + c.mu.Lock() + c.data = Combined{} + c.mu.Unlock() + // trigger immediate refresh so next GET has fresh data + if err := refresh(r.Context()); err != nil { + log.Printf("manual refresh after delete failed: %v", err) + } + w.WriteHeader(http.StatusNoContent) + default: + w.WriteHeader(http.StatusMethodNotAllowed) + } + }) + mux.HandleFunc("/data/club.js", func(w http.ResponseWriter, r *http.Request) { + okCORS(w) + w.Header().Set("Content-Type", "application/javascript; charset=utf-8") + c.mu.RLock() + payload, _ := json.Marshal(c.data) + c.mu.RUnlock() + w.Write([]byte("window.FACR_DATA=")) + w.Write(payload) + w.Write([]byte(";")) + }) + + srv := &http.Server{ + Addr: ":8080", + Handler: mux, + } + go func() { + log.Println("backend listening on :8080") + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatalf("server error: %v", err) + } + }() + + <-ctx.Done() + ctxShut, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + _ = srv.Shutdown(ctxShut) +} + +func okCORS(w http.ResponseWriter) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Methods", "GET, DELETE, OPTIONS") + w.Header().Set("Access-Control-Allow-Headers", "Content-Type") +} + +func scheduler(ctx context.Context) { + // default 30m; during match window (±2h around any match today), 2m + for { + var d time.Duration = 30 * time.Minute + if withinMatchWindow() { + d = 2 * time.Minute + } + select { + case <-time.After(d): + if err := refresh(ctx); err != nil { + log.Printf("refresh error: %v", err) + } + case <-ctx.Done(): + return + } + } +} + +func withinMatchWindow() bool { + c.mu.RLock() + defer c.mu.RUnlock() + loc, err := time.LoadLocation("Europe/Prague") + if err != nil { + // Fallback to local/UTC if tzdata is missing to avoid panic + loc = time.Local + } + now := time.Now().In(loc) + for _, comp := range c.data.ClubDetail.Competitions { + for _, m := range comp.Matches { + // date format in API example: "12.08.2023 18:00" or "12.08.2023 18:00" + t, err := time.ParseInLocation("02.01.2006 15:04", m.DateTime, loc) + if err != nil { + continue + } + if absDuration(now.Sub(t)) <= 2*time.Hour { + return true + } + } + } + return false +} + +func absDuration(d time.Duration) time.Duration { + if d < 0 { + return -d + } + return d +} + +func refresh(ctx context.Context) error { + client := &http.Client{Timeout: 30 * time.Second} + urlDetail := fmt.Sprintf("%s/club/%s/%s", baseURL, clubType, clubID) + urlTable := fmt.Sprintf("%s/club/%s/%s/table", baseURL, clubType, clubID) + + var detail ClubDetail + if err := getJSON(ctx, client, urlDetail, &detail); err != nil { + return fmt.Errorf("detail: %w", err) + } + var table ClubTable + if err := getJSON(ctx, client, urlTable, &table); err != nil { + return fmt.Errorf("table: %w", err) + } + + // Override or inject facr_link based on match_id + for i := range detail.Competitions { + for j := range detail.Competitions[i].Matches { + mid := detail.Competitions[i].Matches[j].MatchID + if mid != "" { + detail.Competitions[i].Matches[j].FacrLink = fmt.Sprintf("https://www.fotbal.cz/futsal/zapasy/futsal/%s", mid) + } + // Override logo URLs for our club in match details + if detail.Competitions[i].Matches[j].HomeID == clubID { + detail.Competitions[i].Matches[j].HomeLogoURL = "/img/logo.png" + } + if detail.Competitions[i].Matches[j].AwayID == clubID { + detail.Competitions[i].Matches[j].AwayLogoURL = "/img/logo.png" + } + } + } + + // Override logo URLs for our club in the table standings + for i := range table.Competitions { + for j := range table.Competitions[i].Table.Overall { + if table.Competitions[i].Table.Overall[j].TeamID == clubID { + table.Competitions[i].Table.Overall[j].TeamLogo = "/img/logo.png" + } + } + } + + c.mu.Lock() + c.data = Combined{ + FetchedAt: time.Now(), + ClubDetail: detail, + ClubTable: table, + } + c.mu.Unlock() + + // persist to disk for control/deletion + if err := writeDiskJSON(c.data); err != nil { + log.Printf("warn: write disk json: %v", err) + } + log.Printf("refreshed data: comps=%d", len(detail.Competitions)) + return nil +} + +func getJSON(ctx context.Context, client *http.Client, url string, out any) error { + req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + req.Header.Set("Accept", "application/json") + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != 200 { + b, _ := io.ReadAll(io.LimitReader(resp.Body, 1024)) + return fmt.Errorf("status %d: %s", resp.StatusCode, bytes.TrimSpace(b)) + } + return json.NewDecoder(resp.Body).Decode(out) +} + +func writeDiskJSON(d Combined) error { + path := dataPath() + dir := filepath.Dir(path) + if err := os.MkdirAll(dir, 0755); err != nil { + return fmt.Errorf("mkdir: %w", err) + } + b, err := json.MarshalIndent(d, "", " ") + if err != nil { + return fmt.Errorf("marshal: %w", err) + } + tmp := path + ".tmp" + if err := os.WriteFile(tmp, b, 0644); err != nil { + return fmt.Errorf("write tmp: %w", err) + } + // On Windows, Rename over existing file may fail; remove target first. + _ = os.Remove(path) + if err := os.Rename(tmp, path); err != nil { + return fmt.Errorf("rename: %w", err) + } + return nil +} diff --git a/data/club.json b/data/club.json new file mode 100644 index 0000000..5282ce7 --- /dev/null +++ b/data/club.json @@ -0,0 +1,901 @@ +{ + "fetched_at": "2025-08-26T07:16:18.158090079Z", + "club_detail": { + "name": "FC Bizoni Uherské Hradiště, z.s.", + "club_id": "441d3783-06aa-436a-b438-359300ee0371", + "club_type": "futsal", + "url": "https://www.fotbal.cz/futsal/club/club/441d3783-06aa-436a-b438-359300ee0371", + "logo_url": "https://is1.fotbal.cz/media/kluby/441d3783-06aa-436a-b438-359300ee0371/441d3783-06aa-436a-b438-359300ee0371_crop.jpg", + "address": "", + "category": "Futsal", + "competitions": [ + { + "id": "b7e65b4c-ac12-4a54-b049-db704290af6c", + "code": "O1D", + "name": "Pohár SFČR 2025 Regionální finále", + "team_count": "10", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/b7e65b4c-ac12-4a54-b049-db704290af6c", + "matches": [ + { + "date_time": "16.09.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "FC Tango Hodonín", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/f0cbc19e-35fa-4432-b390-e1dbc9e78508/f0cbc19e-35fa-4432-b390-e1dbc9e78508_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "27a9299e-f18a-4ced-b9f9-a5086e789f34", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=27a9299e-f18a-4ced-b9f9-a5086e789f34\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/27a9299e-f18a-4ced-b9f9-a5086e789f34" + } + ] + }, + { + "id": "42e914ae-0624-4bc1-983e-1f9612c6a1af", + "code": "O1E", + "name": "Super pohár", + "team_count": "2", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/42e914ae-0624-4bc1-983e-1f9612c6a1af", + "matches": [ + { + "date_time": "12.09.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Real Top Frýdek-Místek z.s.", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/15cfc7c4-36b2-413e-a047-7e509c4e0d0e/15cfc7c4-36b2-413e-a047-7e509c4e0d0e_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "ce54004a-2053-4580-88a0-eeada0aabc2a", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=ce54004a-2053-4580-88a0-eeada0aabc2a\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/ce54004a-2053-4580-88a0-eeada0aabc2a" + } + ] + }, + { + "id": "f49e63bd-55d9-4c5e-93f7-8e482262b88f", + "code": "O2V", + "name": "2. Futsal liga - východ", + "team_count": "12", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/f49e63bd-55d9-4c5e-93f7-8e482262b88f", + "matches": [ + { + "date_time": "19.09.2025 00:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "VOLNO - VOLNÝ LOS", + "away_id": "", + "away_logo_url": "https://www.fotbal.cz/dist/img/logo-club-empty.svg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "544274a3-576c-4b63-b1ce-33aa74a3fda9", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=544274a3-576c-4b63-b1ce-33aa74a3fda9\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/544274a3-576c-4b63-b1ce-33aa74a3fda9" + }, + { + "date_time": "26.09.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Real Top Frýdek-Místek z.s.", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/15cfc7c4-36b2-413e-a047-7e509c4e0d0e/15cfc7c4-36b2-413e-a047-7e509c4e0d0e_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "3a9927be-fb7c-4daf-8aae-1d5bb3d9a816", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=3a9927be-fb7c-4daf-8aae-1d5bb3d9a816\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/3a9927be-fb7c-4daf-8aae-1d5bb3d9a816" + }, + { + "date_time": "03.10.2025 20:15", + "home": "AC Hlinsko", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/967aa7a1-a0cd-47c5-a255-5b287bd53e39/967aa7a1-a0cd-47c5-a255-5b287bd53e39_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Hlinsko", + "match_id": "4e8166db-4939-44dd-9e6f-8d227be7b4a9", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=4e8166db-4939-44dd-9e6f-8d227be7b4a9\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/4e8166db-4939-44dd-9e6f-8d227be7b4a9" + }, + { + "date_time": "10.10.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "FC ATRAPS z.s.", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/915c655a-810f-4216-9939-3a7de9ce0af5/915c655a-810f-4216-9939-3a7de9ce0af5_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "1df5ce7b-538e-4618-acae-3f9207206a80", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=1df5ce7b-538e-4618-acae-3f9207206a80\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/1df5ce7b-538e-4618-acae-3f9207206a80" + }, + { + "date_time": "17.10.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "AC Gamaspol Jeseník", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/03dd330b-d469-4a65-99f1-29b7ece7c2ed/03dd330b-d469-4a65-99f1-29b7ece7c2ed_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "440f419a-966e-464e-bd53-3bea60d1c576", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=440f419a-966e-464e-bd53-3bea60d1c576\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/440f419a-966e-464e-bd53-3bea60d1c576" + }, + { + "date_time": "24.10.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "RSKM D.D. Šumperk", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/f637ffcf-54ab-44c5-97ef-247dd7699e0b/f637ffcf-54ab-44c5-97ef-247dd7699e0b_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "6277f8b4-bf53-4336-85a6-1b40ef428609", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=6277f8b4-bf53-4336-85a6-1b40ef428609\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/6277f8b4-bf53-4336-85a6-1b40ef428609" + }, + { + "date_time": "02.11.2025 19:00", + "home": "Žabinští Vlci Brno", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/e6c12edb-3401-4b9b-b2a0-c00d97af580c/e6c12edb-3401-4b9b-b2a0-c00d97af580c_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "MSH Modřice", + "match_id": "5326a157-32bb-4f75-bf55-9d7315e2cd4d", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=5326a157-32bb-4f75-bf55-9d7315e2cd4d\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/5326a157-32bb-4f75-bf55-9d7315e2cd4d" + }, + { + "date_time": "07.11.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Helas Brno B", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "9a82daa1-9592-4d51-8bad-ecdde0893bbf", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=9a82daa1-9592-4d51-8bad-ecdde0893bbf\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/9a82daa1-9592-4d51-8bad-ecdde0893bbf" + }, + { + "date_time": "17.11.2025 20:00", + "home": "FC Tango Hodonín", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/f0cbc19e-35fa-4432-b390-e1dbc9e78508/f0cbc19e-35fa-4432-b390-e1dbc9e78508_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH TEZA Hodonín", + "match_id": "1e4b0cc5-f93b-4ac2-b2e3-012d15cd8f29", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=1e4b0cc5-f93b-4ac2-b2e3-012d15cd8f29\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/1e4b0cc5-f93b-4ac2-b2e3-012d15cd8f29" + }, + { + "date_time": "21.11.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Futsal klub Havlíčkův Brod, z.s.", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "6d7ea6d5-b6f6-4d59-b6f1-2871898a48c3", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=6d7ea6d5-b6f6-4d59-b6f1-2871898a48c3\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/6d7ea6d5-b6f6-4d59-b6f1-2871898a48c3" + }, + { + "date_time": "28.11.2025 20:00", + "home": "FC Baník Ostrava", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/649dcca8-5574-4ce3-bd4a-183364c80c4f/649dcca8-5574-4ce3-bd4a-183364c80c4f_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Sareza Ostrava", + "match_id": "4db9ec74-8b74-4c74-8bab-310c2715e780", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=4db9ec74-8b74-4c74-8bab-310c2715e780\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/4db9ec74-8b74-4c74-8bab-310c2715e780" + }, + { + "date_time": "05.12.2025 00:00", + "home": "VOLNO - VOLNÝ LOS", + "home_id": "", + "home_logo_url": "https://www.fotbal.cz/dist/img/logo-club-empty.svg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "volný los", + "match_id": "632d2cb3-b2bb-44a6-98da-5108e71a5159", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=632d2cb3-b2bb-44a6-98da-5108e71a5159\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/632d2cb3-b2bb-44a6-98da-5108e71a5159" + }, + { + "date_time": "13.12.2025 18:30", + "home": "Real Top Frýdek-Místek z.s.", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/15cfc7c4-36b2-413e-a047-7e509c4e0d0e/15cfc7c4-36b2-413e-a047-7e509c4e0d0e_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "6.ZŠ Frýdek-Místek", + "match_id": "b11b588a-af29-4ee8-802b-edf7194bcebb", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=b11b588a-af29-4ee8-802b-edf7194bcebb\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/b11b588a-af29-4ee8-802b-edf7194bcebb" + }, + { + "date_time": "19.12.2025 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "AC Hlinsko", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/967aa7a1-a0cd-47c5-a255-5b287bd53e39/967aa7a1-a0cd-47c5-a255-5b287bd53e39_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "ea0246ab-9cd5-4910-8634-dcfbfa9af993", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=ea0246ab-9cd5-4910-8634-dcfbfa9af993\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/ea0246ab-9cd5-4910-8634-dcfbfa9af993" + }, + { + "date_time": "04.01.2026 18:30", + "home": "FC ATRAPS z.s.", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/915c655a-810f-4216-9939-3a7de9ce0af5/915c655a-810f-4216-9939-3a7de9ce0af5_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Měnín", + "match_id": "d38d026d-249b-4b5b-9a0d-0e6983f569a0", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=d38d026d-249b-4b5b-9a0d-0e6983f569a0\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/d38d026d-249b-4b5b-9a0d-0e6983f569a0" + }, + { + "date_time": "09.01.2026 20:00", + "home": "AC Gamaspol Jeseník", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/03dd330b-d469-4a65-99f1-29b7ece7c2ed/03dd330b-d469-4a65-99f1-29b7ece7c2ed_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "MSH Jeseník", + "match_id": "11b3ab37-82e7-4571-81ea-f2bd8b75b03a", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=11b3ab37-82e7-4571-81ea-f2bd8b75b03a\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/11b3ab37-82e7-4571-81ea-f2bd8b75b03a" + }, + { + "date_time": "16.01.2026 20:00", + "home": "RSKM D.D. Šumperk", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/f637ffcf-54ab-44c5-97ef-247dd7699e0b/f637ffcf-54ab-44c5-97ef-247dd7699e0b_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Gymnázium Šumperk", + "match_id": "8a0581b4-914f-49b0-9606-bd864aa3e23d", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=8a0581b4-914f-49b0-9606-bd864aa3e23d\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/8a0581b4-914f-49b0-9606-bd864aa3e23d" + }, + { + "date_time": "23.01.2026 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Žabinští Vlci Brno", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/e6c12edb-3401-4b9b-b2a0-c00d97af580c/e6c12edb-3401-4b9b-b2a0-c00d97af580c_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "af2029e2-3d09-4c7a-86fa-cc26da4d8485", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=af2029e2-3d09-4c7a-86fa-cc26da4d8485\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/af2029e2-3d09-4c7a-86fa-cc26da4d8485" + }, + { + "date_time": "01.02.2026 19:30", + "home": "Helas Brno B", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "STAREZ Aréna Vodova 3", + "match_id": "d51c3b89-9887-4ba8-8d6a-c7b3997af69f", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=d51c3b89-9887-4ba8-8d6a-c7b3997af69f\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/d51c3b89-9887-4ba8-8d6a-c7b3997af69f" + }, + { + "date_time": "06.02.2026 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "FC Tango Hodonín", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/f0cbc19e-35fa-4432-b390-e1dbc9e78508/f0cbc19e-35fa-4432-b390-e1dbc9e78508_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "b02dbc7f-3b4f-4663-890c-3d54659a8194", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=b02dbc7f-3b4f-4663-890c-3d54659a8194\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/b02dbc7f-3b4f-4663-890c-3d54659a8194" + }, + { + "date_time": "14.02.2026 20:00", + "home": "Futsal klub Havlíčkův Brod, z.s.", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", + "away": "FC Bizoni Uherské Hradiště, z.s.", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH TJ Jiskra Havlíčkův Brod", + "match_id": "1340a45f-09c2-4962-be90-e9dbb1edba90", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=1340a45f-09c2-4962-be90-e9dbb1edba90\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/1340a45f-09c2-4962-be90-e9dbb1edba90" + }, + { + "date_time": "20.02.2026 20:00", + "home": "FC Bizoni Uherské Hradiště, z.s.", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "FC Baník Ostrava", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/649dcca8-5574-4ce3-bd4a-183364c80c4f/649dcca8-5574-4ce3-bd4a-183364c80c4f_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "0e2c9702-434c-40b5-a285-24bfe8518f05", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=0e2c9702-434c-40b5-a285-24bfe8518f05\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/0e2c9702-434c-40b5-a285-24bfe8518f05" + } + ] + }, + { + "id": "35329bf9-2ded-487a-a69b-9209e6907f3e", + "code": "Q1A", + "name": "Juniorská liga futsalu Východ", + "team_count": "10", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/35329bf9-2ded-487a-a69b-9209e6907f3e", + "matches": [ + { + "date_time": "16.11.2025 13:00", + "home": "1.FC NEJZBACH Vysoké Mýto", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/85a2208e-0752-45e1-bd6a-c1675b3dbe39/85a2208e-0752-45e1-bd6a-c1675b3dbe39_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Chrudim", + "match_id": "9fe83ee0-ff78-49ba-989b-28b2d36d0987", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=9fe83ee0-ff78-49ba-989b-28b2d36d0987\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/9fe83ee0-ff78-49ba-989b-28b2d36d0987" + }, + { + "date_time": "16.11.2025 17:00", + "home": "FK Chrudim", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/8dfafc44-7a36-498f-912b-183c44fa941c/8dfafc44-7a36-498f-912b-183c44fa941c_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Chrudim", + "match_id": "a1be5374-92b4-499b-9063-c21f5886c93b", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=a1be5374-92b4-499b-9063-c21f5886c93b\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/a1be5374-92b4-499b-9063-c21f5886c93b" + }, + { + "date_time": "22.11.2025 12:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Žabinští Vlci Brno", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/e6c12edb-3401-4b9b-b2a0-c00d97af580c/e6c12edb-3401-4b9b-b2a0-c00d97af580c_crop.jpg", + "score": "0:0", + "venue": "SH Buchlovice", + "match_id": "f8c48bc2-d00a-4021-a1ac-38226e9fdad2", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=f8c48bc2-d00a-4021-a1ac-38226e9fdad2\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/f8c48bc2-d00a-4021-a1ac-38226e9fdad2" + }, + { + "date_time": "22.11.2025 17:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "SK Amor Kloboučky Vyškov", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/92465f44-f6be-4e25-b507-bd7d7cce1c4a/92465f44-f6be-4e25-b507-bd7d7cce1c4a_crop.jpg", + "score": "0:0", + "venue": "SH Buchlovice", + "match_id": "a21a17a4-0d49-41b2-811e-5dc0db5e9283", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=a21a17a4-0d49-41b2-811e-5dc0db5e9283\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/a21a17a4-0d49-41b2-811e-5dc0db5e9283" + }, + { + "date_time": "29.11.2025 00:00", + "home": "RSKM D.D. Šumperk", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/f637ffcf-54ab-44c5-97ef-247dd7699e0b/f637ffcf-54ab-44c5-97ef-247dd7699e0b_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Gymnázium Šumperk", + "match_id": "80493975-0787-46f9-be31-c0ee27e91baf", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=80493975-0787-46f9-be31-c0ee27e91baf\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/80493975-0787-46f9-be31-c0ee27e91baf" + }, + { + "date_time": "29.11.2025 00:00", + "home": "Futsal klub Havlíčkův Brod", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH TJ Jiskra Havlíčkův Brod", + "match_id": "be865269-aa3c-4549-a2dc-7dca2854d15c", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=be865269-aa3c-4549-a2dc-7dca2854d15c\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/be865269-aa3c-4549-a2dc-7dca2854d15c" + }, + { + "date_time": "20.12.2025 12:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Helas Brno", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "76612056-8732-4992-8ff1-d8b608ceadf8", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=76612056-8732-4992-8ff1-d8b608ceadf8\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/76612056-8732-4992-8ff1-d8b608ceadf8" + }, + { + "date_time": "20.12.2025 15:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Orel Řečkovice", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/3f409758-25ce-4751-a7f2-65a359f4c04a/3f409758-25ce-4751-a7f2-65a359f4c04a_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "c921ad5c-8178-48da-a5fb-37dd64803ab8", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=c921ad5c-8178-48da-a5fb-37dd64803ab8\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/c921ad5c-8178-48da-a5fb-37dd64803ab8" + }, + { + "date_time": "03.01.2026 12:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "1.FC NEJZBACH Vysoké Mýto", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/85a2208e-0752-45e1-bd6a-c1675b3dbe39/85a2208e-0752-45e1-bd6a-c1675b3dbe39_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "7ae26ab1-0a60-49e4-896f-737b8f54ba92", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=7ae26ab1-0a60-49e4-896f-737b8f54ba92\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/7ae26ab1-0a60-49e4-896f-737b8f54ba92" + }, + { + "date_time": "03.01.2026 15:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "FK Chrudim", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/8dfafc44-7a36-498f-912b-183c44fa941c/8dfafc44-7a36-498f-912b-183c44fa941c_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "678d4758-aa31-49e9-946a-9c7c936d3270", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=678d4758-aa31-49e9-946a-9c7c936d3270\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/678d4758-aa31-49e9-946a-9c7c936d3270" + }, + { + "date_time": "10.01.2026 13:00", + "home": "SK Amor Kloboučky Vyškov", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/92465f44-f6be-4e25-b507-bd7d7cce1c4a/92465f44-f6be-4e25-b507-bd7d7cce1c4a_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "MSH Modřice", + "match_id": "666dd689-6872-4a98-9fac-4398a5f26b6f", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=666dd689-6872-4a98-9fac-4398a5f26b6f\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/666dd689-6872-4a98-9fac-4398a5f26b6f" + }, + { + "date_time": "10.01.2026 17:00", + "home": "Žabinští Vlci Brno", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/e6c12edb-3401-4b9b-b2a0-c00d97af580c/e6c12edb-3401-4b9b-b2a0-c00d97af580c_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "MSH Modřice", + "match_id": "2b5874d2-1fb0-4534-86d0-fac7040bd8b7", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=2b5874d2-1fb0-4534-86d0-fac7040bd8b7\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/2b5874d2-1fb0-4534-86d0-fac7040bd8b7" + }, + { + "date_time": "18.01.2026 12:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Futsal klub Havlíčkův Brod", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "63623986-c61a-40a7-9e86-417241a9c897", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=63623986-c61a-40a7-9e86-417241a9c897\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/63623986-c61a-40a7-9e86-417241a9c897" + }, + { + "date_time": "18.01.2026 17:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "RSKM D.D. Šumperk", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/f637ffcf-54ab-44c5-97ef-247dd7699e0b/f637ffcf-54ab-44c5-97ef-247dd7699e0b_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "fdf6395b-31f4-4b00-adcf-09bbdacff44f", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=fdf6395b-31f4-4b00-adcf-09bbdacff44f\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/fdf6395b-31f4-4b00-adcf-09bbdacff44f" + }, + { + "date_time": "01.02.2026 11:00", + "home": "Helas Brno", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "STAREZ Aréna Vodova", + "match_id": "7b58e071-a0b8-4a8d-adbe-75d335155b5a", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=7b58e071-a0b8-4a8d-adbe-75d335155b5a\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/7b58e071-a0b8-4a8d-adbe-75d335155b5a" + }, + { + "date_time": "01.02.2026 15:00", + "home": "Orel Řečkovice", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/3f409758-25ce-4751-a7f2-65a359f4c04a/3f409758-25ce-4751-a7f2-65a359f4c04a_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "STAREZ Arena Vodova", + "match_id": "d08e16d5-0f1b-4d3b-8ff4-71340e8149fe", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=d08e16d5-0f1b-4d3b-8ff4-71340e8149fe\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/d08e16d5-0f1b-4d3b-8ff4-71340e8149fe" + } + ] + }, + { + "id": "940fcb8c-7f68-4ed5-9806-9617d9185c63", + "code": "R1A", + "name": "Dorostenecká liga futsalu Východ", + "team_count": "10", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/940fcb8c-7f68-4ed5-9806-9617d9185c63", + "matches": [ + { + "date_time": "16.11.2025 11:00", + "home": "1.FC NEJZBACH Vysoké Mýto", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/85a2208e-0752-45e1-bd6a-c1675b3dbe39/85a2208e-0752-45e1-bd6a-c1675b3dbe39_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Chrudim", + "match_id": "85455e10-cbee-49bd-a5af-82d0fbdabc3a", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=85455e10-cbee-49bd-a5af-82d0fbdabc3a\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/85455e10-cbee-49bd-a5af-82d0fbdabc3a" + }, + { + "date_time": "16.11.2025 15:00", + "home": "FK Chrudim", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/8dfafc44-7a36-498f-912b-183c44fa941c/8dfafc44-7a36-498f-912b-183c44fa941c_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Chrudim", + "match_id": "49485aed-98db-47cd-b234-2f61bc5deaea", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=49485aed-98db-47cd-b234-2f61bc5deaea\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/49485aed-98db-47cd-b234-2f61bc5deaea" + }, + { + "date_time": "22.11.2025 10:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Žabinští Vlci Brno", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/e6c12edb-3401-4b9b-b2a0-c00d97af580c/e6c12edb-3401-4b9b-b2a0-c00d97af580c_crop.jpg", + "score": "0:0", + "venue": "SH Buchlovice", + "match_id": "3d143a63-a54c-4dc7-97ed-92ea2b135f00", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=3d143a63-a54c-4dc7-97ed-92ea2b135f00\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/3d143a63-a54c-4dc7-97ed-92ea2b135f00" + }, + { + "date_time": "22.11.2025 15:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "SK Amor Kloboučky Vyškov", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/92465f44-f6be-4e25-b507-bd7d7cce1c4a/92465f44-f6be-4e25-b507-bd7d7cce1c4a_crop.jpg", + "score": "0:0", + "venue": "SH Buchlovice", + "match_id": "0316ab2e-848c-40c9-8c53-a85589a30dee", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=0316ab2e-848c-40c9-8c53-a85589a30dee\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/0316ab2e-848c-40c9-8c53-a85589a30dee" + }, + { + "date_time": "29.11.2025 00:00", + "home": "RSKM D.D. Šumperk", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/f637ffcf-54ab-44c5-97ef-247dd7699e0b/f637ffcf-54ab-44c5-97ef-247dd7699e0b_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH Gymnázium Šumperk", + "match_id": "d3667a24-8194-4220-95bb-b0f3b8a2f3ab", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=d3667a24-8194-4220-95bb-b0f3b8a2f3ab\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/d3667a24-8194-4220-95bb-b0f3b8a2f3ab" + }, + { + "date_time": "29.11.2025 00:00", + "home": "Futsal klub Havlíčkův Brod", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "SH TJ Jiskra Havlíčkův Brod", + "match_id": "e88a6edd-7e4f-4b5d-828c-cf38b976221f", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=e88a6edd-7e4f-4b5d-828c-cf38b976221f\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/e88a6edd-7e4f-4b5d-828c-cf38b976221f" + }, + { + "date_time": "20.12.2025 10:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Helas Brno", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "e5e18208-82ba-4b8e-a494-32aedf70b0e3", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=e5e18208-82ba-4b8e-a494-32aedf70b0e3\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/e5e18208-82ba-4b8e-a494-32aedf70b0e3" + }, + { + "date_time": "20.12.2025 13:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Orel Řečkovice", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/3f409758-25ce-4751-a7f2-65a359f4c04a/3f409758-25ce-4751-a7f2-65a359f4c04a_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "606c9a57-4253-4a92-aadf-659e13d9a9c6", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=606c9a57-4253-4a92-aadf-659e13d9a9c6\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/606c9a57-4253-4a92-aadf-659e13d9a9c6" + }, + { + "date_time": "03.01.2026 10:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "1.FC NEJZBACH Vysoké Mýto", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/85a2208e-0752-45e1-bd6a-c1675b3dbe39/85a2208e-0752-45e1-bd6a-c1675b3dbe39_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "ac73bdeb-add6-4ef9-a6f8-fa34ec13eb01", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=ac73bdeb-add6-4ef9-a6f8-fa34ec13eb01\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/ac73bdeb-add6-4ef9-a6f8-fa34ec13eb01" + }, + { + "date_time": "03.01.2026 13:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "FK Chrudim", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/8dfafc44-7a36-498f-912b-183c44fa941c/8dfafc44-7a36-498f-912b-183c44fa941c_crop.jpg", + "score": "0:0", + "venue": "SH Blučina", + "match_id": "6cd40413-d220-4eec-b1a3-563757fe7e3f", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=6cd40413-d220-4eec-b1a3-563757fe7e3f\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/6cd40413-d220-4eec-b1a3-563757fe7e3f" + }, + { + "date_time": "10.01.2026 11:00", + "home": "SK Amor Kloboučky Vyškov", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/92465f44-f6be-4e25-b507-bd7d7cce1c4a/92465f44-f6be-4e25-b507-bd7d7cce1c4a_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "MSH Modřice", + "match_id": "a2e2ec1b-b110-411b-ad92-29852ae85930", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=a2e2ec1b-b110-411b-ad92-29852ae85930\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/a2e2ec1b-b110-411b-ad92-29852ae85930" + }, + { + "date_time": "10.01.2026 15:00", + "home": "Žabinští Vlci Brno", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/e6c12edb-3401-4b9b-b2a0-c00d97af580c/e6c12edb-3401-4b9b-b2a0-c00d97af580c_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "MSH Modřice", + "match_id": "5d592048-2589-4d30-8dda-5c5f730da90d", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=5d592048-2589-4d30-8dda-5c5f730da90d\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/5d592048-2589-4d30-8dda-5c5f730da90d" + }, + { + "date_time": "18.01.2026 10:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "Futsal klub Havlíčkův Brod", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "b5103837-6b99-4558-8338-3649875e170c", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=b5103837-6b99-4558-8338-3649875e170c\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/b5103837-6b99-4558-8338-3649875e170c" + }, + { + "date_time": "18.01.2026 15:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_logo_url": "/img/logo.png", + "away": "RSKM D.D. Šumperk", + "away_id": "", + "away_logo_url": "https://is1.fotbal.cz/media/kluby/f637ffcf-54ab-44c5-97ef-247dd7699e0b/f637ffcf-54ab-44c5-97ef-247dd7699e0b_crop.jpg", + "score": "0:0", + "venue": "SH Uherské Hradiště", + "match_id": "69b0b6e6-f417-4c1f-a03e-f3279bbe1c58", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=69b0b6e6-f417-4c1f-a03e-f3279bbe1c58\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/69b0b6e6-f417-4c1f-a03e-f3279bbe1c58" + }, + { + "date_time": "01.02.2026 09:00", + "home": "Helas Brno", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "STAREZ Aréna Vodova", + "match_id": "dc359e23-c01f-445f-bad8-8738d3706075", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=dc359e23-c01f-445f-bad8-8738d3706075\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/dc359e23-c01f-445f-bad8-8738d3706075" + }, + { + "date_time": "01.02.2026 13:00", + "home": "Orel Řečkovice", + "home_id": "", + "home_logo_url": "https://is1.fotbal.cz/media/kluby/3f409758-25ce-4751-a7f2-65a359f4c04a/3f409758-25ce-4751-a7f2-65a359f4c04a_crop.jpg", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_logo_url": "/img/logo.png", + "score": "0:0", + "venue": "STAREZ Arena Vodova", + "match_id": "abcf9cbc-b8a4-4e93-aee6-2c68107365d6", + "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=abcf9cbc-b8a4-4e93-aee6-2c68107365d6\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", + "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/abcf9cbc-b8a4-4e93-aee6-2c68107365d6" + } + ] + } + ] + }, + "club_table": { + "name": "FC Bizoni Uherské Hradiště, z.s.", + "club_id": "441d3783-06aa-436a-b438-359300ee0371", + "club_type": "futsal", + "logo_url": "https://is1.fotbal.cz/media/kluby/441d3783-06aa-436a-b438-359300ee0371/441d3783-06aa-436a-b438-359300ee0371_crop.jpg", + "competitions": [ + { + "id": "b7e65b4c-ac12-4a54-b049-db704290af6c", + "code": "O1D", + "name": "Pohár SFČR 2025 Regionální finále", + "team_count": "10", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/b7e65b4c-ac12-4a54-b049-db704290af6c", + "table": { + "overall": null + } + }, + { + "id": "42e914ae-0624-4bc1-983e-1f9612c6a1af", + "code": "O1E", + "name": "Super pohár", + "team_count": "2", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/42e914ae-0624-4bc1-983e-1f9612c6a1af", + "table": { + "overall": null + } + }, + { + "id": "f49e63bd-55d9-4c5e-93f7-8e482262b88f", + "code": "O2V", + "name": "2. Futsal liga - východ", + "team_count": "12", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/f49e63bd-55d9-4c5e-93f7-8e482262b88f", + "table": { + "overall": null + } + }, + { + "id": "35329bf9-2ded-487a-a69b-9209e6907f3e", + "code": "Q1A", + "name": "Juniorská liga futsalu Východ", + "team_count": "10", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/35329bf9-2ded-487a-a69b-9209e6907f3e", + "table": { + "overall": null + } + }, + { + "id": "940fcb8c-7f68-4ed5-9806-9617d9185c63", + "code": "R1A", + "name": "Dorostenecká liga futsalu Východ", + "team_count": "10", + "matches_link": "https://www.fotbal.cz/futsal/futsal/table/940fcb8c-7f68-4ed5-9806-9617d9185c63", + "table": { + "overall": null + } + } + ] + } +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ea31c73 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +services: + backend: + build: ./backend + container_name: bizoni-backend + ports: + - "8080:8080" + volumes: + - ./data:/app/data + restart: unless-stopped + web: + image: nginx:1.27-alpine + container_name: bizoni-web + depends_on: + - backend + ports: + - "8088:80" + volumes: + - ./:/usr/share/nginx/html:ro + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro + restart: unless-stopped diff --git a/index.html b/index.html index 8093040..c881f11 100644 --- a/index.html +++ b/index.html @@ -436,28 +436,7 @@