diff --git a/backend/futsalliga.go b/backend/futsalliga.go new file mode 100644 index 0000000..0de9c03 --- /dev/null +++ b/backend/futsalliga.go @@ -0,0 +1,365 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "os" + "regexp" + "strconv" + "strings" + "time" +) + +// ---- futsalliga.cz scraper ---- +// Secondary data source used when the primary FAČR API is unavailable. +// Scrapes the official 2. Futsal liga - východ site (eSports/eSportsmedia CMS) +// and produces the same Combined JSON shape the frontend expects. + +const ( + flBase = "https://2fl-v.futsalliga.cz" + flClubLogo = "/img/logo.png" +) + +func flSeason() string { + if s := os.Getenv("FL_SEASON"); s != "" { + return s + } + return "2027" // 2026/2027 +} + +func flTeamID() string { + if s := os.Getenv("FL_TEAM_ID"); s != "" { + return s + } + return "60" // FC Bizoni Uherské Hradiště +} + +var ( + flH2Re = regexp.MustCompile(`(?s)

]*>.*?

`) + flDateRe = regexp.MustCompile(`(\d{1,2})\.\s*(\d{1,2})\.\s*(\d{4})`) + flRowRe = regexp.MustCompile(`(?s)]*>\s*
\s*([0-9:]+)\s*
`) + flTeamRe = regexp.MustCompile(`(?s)
(.*?)
`) + flImgRe = regexp.MustCompile(`(?:data-src|src)="(https?://[^"]+)"`) + flScoreRe = regexp.MustCompile(`(?s)match-results[^>]*>\s*([^<]*?)\s*`) + flScoreNumRe = regexp.MustCompile(`(\d+)\s*:\s*(\d+)`) + flVenueRe = regexp.MustCompile(`(?s)
\s*([^<]*?)\s*
`) + flTagRe = regexp.MustCompile(`<[^>]+>`) + flWsRe = regexp.MustCompile(`\s+`) + flTableRe = regexp.MustCompile(`(?s)]*standingsTable[^>]*>(.*?)`) + flTrRe = regexp.MustCompile(`(?s)(.*?)`) + flTdRe = regexp.MustCompile(`(?s)]*>(.*?)`) +) + +// wire structs mirroring the FAČR API JSON shape; marshaled then unmarshaled +// into ClubDetail/ClubTable (which use anonymous nested structs) +type flWireMatch 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"` +} + +type flWireCompetition struct { + ID string `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + TeamCount string `json:"team_count"` + MatchesLink string `json:"matches_link"` + Matches []flWireMatch `json:"matches"` +} + +type flWireDetail 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 []flWireCompetition `json:"competitions"` +} + +type flWireRow 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"` +} + +type flWireTableComp 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 []flWireRow `json:"overall"` + } `json:"table"` +} + +type flWireTable struct { + Name string `json:"name"` + ClubID string `json:"club_id"` + ClubType string `json:"club_type"` + LogoURL string `json:"logo_url"` + Competitions []flWireTableComp `json:"competitions"` +} + +func flClean(s string) string { + return strings.TrimSpace(flWsRe.ReplaceAllString(flTagRe.ReplaceAllString(s, ""), " ")) +} + +func flIsBizoni(name string) bool { + return strings.Contains(strings.ToLower(name), "bizoni") +} + +func flTeamLogo(content string) string { + if m := flImgRe.FindStringSubmatch(content); m != nil { + return m[1] + } + return "" +} + +func fetchText(ctx context.Context, client *http.Client, u string) (string, error) { + req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil) + if err != nil { + return "", err + } + req.Header.Set("User-Agent", "Mozilla/5.0 (bizoni-site-scraper)") + req.Header.Set("Accept", "text/html") + resp, err := client.Do(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("GET %s: %s", u, resp.Status) + } + b, err := io.ReadAll(resp.Body) + if err != nil { + return "", err + } + return string(b), nil +} + +// flParseMatches parses the team-filtered match list page. +// The page groups matches under

date headers ("neděle 4. 10. 2026"); +// each row starts with a time anchor to /match/. +func flParseMatches(doc string) []flWireMatch { + var matches []flWireMatch + teamID := flTeamID() + headers := flH2Re.FindAllStringIndex(doc, -1) + for i, loc := range headers { + headText := flTagRe.ReplaceAllString(doc[loc[0]:loc[1]], "") + dm := flDateRe.FindStringSubmatch(headText) + if dm == nil { + continue + } + day, _ := strconv.Atoi(dm[1]) + mon, _ := strconv.Atoi(dm[2]) + yr, _ := strconv.Atoi(dm[3]) + secEnd := len(doc) + if i+1 < len(headers) { + secEnd = headers[i+1][0] + } + section := doc[loc[1]:secEnd] + rows := flRowRe.FindAllStringSubmatchIndex(section, -1) + for j, rloc := range rows { + matchID := section[rloc[2]:rloc[3]] + kickoff := section[rloc[4]:rloc[5]] + segEnd := len(section) + if j+1 < len(rows) { + segEnd = rows[j+1][0] + } + seg := section[rloc[1]:segEnd] + + teams := flTeamRe.FindAllStringSubmatch(seg, -1) + if len(teams) < 2 { + continue + } + home := flClean(teams[0][1]) + away := flClean(teams[1][1]) + homeLogo := flTeamLogo(teams[0][1]) + awayLogo := flTeamLogo(teams[1][1]) + if flIsBizoni(home) { + homeLogo = flClubLogo + } + if flIsBizoni(away) { + awayLogo = flClubLogo + } + + score := "" + if sm := flScoreRe.FindStringSubmatch(seg); sm != nil { + if sc := flScoreNumRe.FindStringSubmatch(sm[1]); sc != nil { + score = sc[1] + ":" + sc[2] + } + } + + venue := "" + if vm := flVenueRe.FindStringSubmatch(seg); vm != nil { + venue = flClean(vm[1]) + } + + m := flWireMatch{ + DateTime: fmt.Sprintf("%02d.%02d.%04d %s", day, mon, yr, kickoff), + Home: home, + HomeLogoURL: homeLogo, + Away: away, + AwayLogoURL: awayLogo, + Score: score, + Venue: venue, + MatchID: matchID, + ReportURL: fmt.Sprintf("%s/match/%s", flBase, matchID), + FacrLink: fmt.Sprintf("%s/match/%s", flBase, matchID), + } + if flIsBizoni(home) { + m.HomeID = teamID + } + if flIsBizoni(away) { + m.AwayID = teamID + } + matches = append(matches, m) + } + } + return matches +} + +// flParseStandings parses the standings table (rank, team, Z, V, R, P, skóre, body). +func flParseStandings(doc string) []flWireRow { + var rows []flWireRow + tm := flTableRe.FindStringSubmatch(doc) + if tm == nil { + return rows + } + for _, tr := range flTrRe.FindAllStringSubmatch(tm[1], -1) { + cells := flTdRe.FindAllStringSubmatch(tr[1], -1) + if len(cells) < 8 { + continue + } + team := flClean(cells[1][1]) + row := flWireRow{ + Rank: flClean(cells[0][1]), + Team: team, + Played: flClean(cells[2][1]), + Wins: flClean(cells[3][1]), + Draws: flClean(cells[4][1]), + Losses: flClean(cells[5][1]), + Score: flClean(cells[6][1]), + Points: flClean(cells[7][1]), + } + if flIsBizoni(team) { + row.TeamID = flTeamID() + row.TeamLogo = flClubLogo + } else { + row.TeamLogo = flTeamLogo(cells[1][1]) + } + rows = append(rows, row) + } + return rows +} + +func flCompName() string { + y, err := strconv.Atoi(flSeason()) + if err != nil || y <= 0 { + return "2. Futsal liga - východ" + } + return fmt.Sprintf("2. Futsal liga - východ %d/%d", y-1, y) +} + +// scrapeFutsalLiga fetches Bizoni matches + league standings from +// 2fl-v.futsalliga.cz and returns a Combined payload equivalent to what the +// FAČR/flashscore APIs produce. +func scrapeFutsalLiga(ctx context.Context, client *http.Client) (Combined, error) { + season := flSeason() + teamID := flTeamID() + + mDoc, err := fetchText(ctx, client, fmt.Sprintf("%s/matches/%s?team=%s", flBase, season, teamID)) + if err != nil { + return Combined{}, fmt.Errorf("futsalliga matches: %w", err) + } + sDoc, err := fetchText(ctx, client, fmt.Sprintf("%s/standings/%s", flBase, season)) + if err != nil { + return Combined{}, fmt.Errorf("futsalliga standings: %w", err) + } + + matches := flParseMatches(mDoc) + if len(matches) == 0 { + return Combined{}, fmt.Errorf("futsalliga: parsed 0 matches") + } + tableRows := flParseStandings(sDoc) + + clubName := "FC Bizoni Uherské Hradiště" + matchesLink := fmt.Sprintf("%s/matches/%s?team=%s", flBase, season, teamID) + teamCount := strconv.Itoa(len(tableRows)) + + wd := flWireDetail{ + Name: clubName, + ClubID: teamID, + ClubType: "futsal", + URL: fmt.Sprintf("%s/team/%s", flBase, teamID), + LogoURL: flClubLogo, + Category: "Futsal", + Competitions: []flWireCompetition{{ + ID: season, + Code: "2FL-V", + Name: flCompName(), + TeamCount: teamCount, + MatchesLink: matchesLink, + Matches: matches, + }}, + } + wt := flWireTable{ + Name: clubName, + ClubID: teamID, + ClubType: "futsal", + LogoURL: flClubLogo, + } + wt.Competitions = append(wt.Competitions, flWireTableComp{ + ID: season, + Code: "2FL-V", + Name: flCompName(), + TeamCount: teamCount, + MatchesLink: matchesLink, + }) + wt.Competitions[0].Table.Overall = tableRows + + var detail ClubDetail + var table ClubTable + db, err := json.Marshal(wd) + if err != nil { + return Combined{}, fmt.Errorf("futsalliga marshal detail: %w", err) + } + if err := json.Unmarshal(db, &detail); err != nil { + return Combined{}, fmt.Errorf("futsalliga unmarshal detail: %w", err) + } + tb, err := json.Marshal(wt) + if err != nil { + return Combined{}, fmt.Errorf("futsalliga marshal table: %w", err) + } + if err := json.Unmarshal(tb, &table); err != nil { + return Combined{}, fmt.Errorf("futsalliga unmarshal table: %w", err) + } + + return Combined{ + FetchedAt: time.Now(), + ClubDetail: detail, + ClubTable: table, + }, nil +} diff --git a/backend/main.go b/backend/main.go index a85b9b1..611a8ee 100644 --- a/backend/main.go +++ b/backend/main.go @@ -1660,7 +1660,20 @@ func refresh(ctx context.Context) error { // Try primary API first if err := getJSON(ctx, client, urlDetail, &detail); err != nil { - log.Printf("primary api detail failed (%v), trying fallback", err) + log.Printf("primary api detail failed (%v), trying futsalliga scrape", err) + // Second source: scrape the official league site (current data, correct competition) + if comb, serr := scrapeFutsalLiga(ctx, client); serr == nil { + c.mu.Lock() + c.data = comb + c.mu.Unlock() + if werr := writeDiskJSON(c.data); werr != nil { + log.Printf("warn: write disk json: %v", werr) + } + log.Printf("refreshed data: comps=%d source=%s", len(comb.ClubDetail.Competitions), "futsalliga") + return nil + } else { + log.Printf("futsalliga scrape failed (%v), trying flashscore fallback", serr) + } urlDetail = fmt.Sprintf("%s/club/%s/%s?slug=%s", fallbackBaseURL, clubType, fallbackClubID, fallbackSlug) urlTable = fmt.Sprintf("%s/club/%s/%s/table?slug=%s", fallbackBaseURL, clubType, fallbackClubID, fallbackSlug) if err := getJSON(ctx, client, urlDetail, &detail); err != nil { diff --git a/data/club.json b/data/club.json index b2e63c8..e5b466a 100644 --- a/data/club.json +++ b/data/club.json @@ -1,1399 +1,421 @@ { - "fetched_at": "2025-09-27T15:19:19.788229925Z", + "fetched_at": "2026-10-04T19:13:57.029269+00:00", "club_detail": { - "name": "FC Bizoni Uherské Hradiště, z.s.", - "club_id": "441d3783-06aa-436a-b438-359300ee0371", + "name": "FC Bizoni Uherské Hradiště", + "club_id": "60", "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", + "url": "https://2fl-v.futsalliga.cz/team/60", + "logo_url": "/img/logo.png", "address": "", "category": "Futsal", "competitions": [ { - "id": "1b5fe99c-dad6-48b1-9300-36acd08bcc58", - "code": "O1C", - "name": "Pohár SFČR 2025 Celostátní část", - "team_count": "8", - "matches_link": "https://www.fotbal.cz/futsal/futsal/table/1b5fe99c-dad6-48b1-9300-36acd08bcc58", + "id": "2027", + "code": "2FL-V", + "name": "2. Futsal liga - východ 2026/2027", + "team_count": "6", + "matches_link": "https://2fl-v.futsalliga.cz/matches/2027?team=60", "matches": [ { - "date_time": "06.10.2025 00:00", - "home": "G.T. Trojanovice", - "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/f15063e3-76e9-43a3-aad0-eef99adcfd46/f15063e3-76e9-43a3-aad0-eef99adcfd46_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 Frenštát p. R.", - "match_id": "1def4afe-0f82-4017-b173-38902955cbac", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=1def4afe-0f82-4017-b173-38902955cbac\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/1def4afe-0f82-4017-b173-38902955cbac" - } - ] - }, - { - "id": "b7e65b4c-ac12-4a54-b049-db704290af6c", - "code": "O1D", - "name": "Pohár SFČR 2025 Regionální finále", - "team_count": "12", - "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": "7:4", - "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": "7:2", - "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": "5:5", - "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", + "date_time": "04.10.2026 19: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", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/tango-hodonin.png", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "60", "away_logo_url": "/img/logo.png", - "score": "0:0", + "score": "5:8", "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" + "match_id": "1360", + "report_url": "https://2fl-v.futsalliga.cz/match/1360", + "facr_link": "https://2fl-v.futsalliga.cz/match/1360" }, { - "date_time": "21.11.2025 20:00", - "home": "FC Bizoni Uherské Hradiště, z.s.", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "date_time": "09.10.2026 20:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "60", "home_logo_url": "/img/logo.png", - "away": "Futsal klub Havlíčkův Brod, z.s.", + "away": "FC Atraps Brno", "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", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/FC Atraps Brno.png", + "score": "", "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" + "match_id": "1362", + "report_url": "https://2fl-v.futsalliga.cz/match/1362", + "facr_link": "https://2fl-v.futsalliga.cz/match/1362" }, { - "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", + "date_time": "16.10.2026 20:30", "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", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/sumperk.png", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "60", "away_logo_url": "/img/logo.png", - "score": "0:0", + "score": "", "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" + "match_id": "1369", + "report_url": "https://2fl-v.futsalliga.cz/match/1369", + "facr_link": "https://2fl-v.futsalliga.cz/match/1369" }, { - "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", + "date_time": "23.10.2026 20:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "60", "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", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/banik_ostravfa.png", + "score": "", "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": [ + "match_id": "1374", + "report_url": "https://2fl-v.futsalliga.cz/match/1374", + "facr_link": "https://2fl-v.futsalliga.cz/match/1374" + }, { - "date_time": "16.11.2025 13:00", - "home": "1.FC NEJZBACH Vysoké Mýto", + "date_time": "01.11.2026 19:00", + "home": "G.T. Trojanovice", "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/85a2208e-0752-45e1-bd6a-c1675b3dbe39/85a2208e-0752-45e1-bd6a-c1675b3dbe39_crop.jpg", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/GT_Trojanovice.png", "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_id": "60", "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" + "score": "", + "venue": "SH Frenštát p. R.", + "match_id": "1382", + "report_url": "https://2fl-v.futsalliga.cz/match/1382", + "facr_link": "https://2fl-v.futsalliga.cz/match/1382" }, { - "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", + "date_time": "06.11.2026 20: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 Vyškov", - "away_id": "", - "away_logo_url": "https://is1.fotbal.cz/media/kluby/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1_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_id": "60", "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" + "away_logo_url": "https://futsalliga.esports.cz/files/logos/Orel_reckovice.png", + "score": "", + "venue": "SH Uherské Hradiště", + "match_id": "1386", + "report_url": "https://2fl-v.futsalliga.cz/match/1386", + "facr_link": "https://2fl-v.futsalliga.cz/match/1386" }, { - "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 Vyškov", - "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1_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", + "date_time": "13.11.2026 20: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", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/abinuti_Vlci_Brno.png", "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_id": "60", "away_logo_url": "/img/logo.png", - "score": "0:0", + "score": "", "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" + "match_id": "1392", + "report_url": "https://2fl-v.futsalliga.cz/match/1392", + "facr_link": "https://2fl-v.futsalliga.cz/match/1392" }, { - "date_time": "18.01.2026 12:00", + "date_time": "22.11.2026 19:00", + "home": "Real Top Frýdek-Místek", + "home_id": "", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/frydek_mistek.png", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "60", + "away_logo_url": "/img/logo.png", + "score": "", + "venue": "6.ZŠ Frýdek-Místek", + "match_id": "1402", + "report_url": "https://2fl-v.futsalliga.cz/match/1402", + "facr_link": "https://2fl-v.futsalliga.cz/match/1402" + }, + { + "date_time": "27.11.2026 20:00", "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_id": "60", "home_logo_url": "/img/logo.png", - "away": "Futsal klub Havlíčkův Brod", + "away": "AC Gamaspol Jeseník", "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", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/jesenik.png", + "score": "", "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" + "match_id": "1403", + "report_url": "https://2fl-v.futsalliga.cz/match/1403", + "facr_link": "https://2fl-v.futsalliga.cz/match/1403" }, { - "date_time": "18.01.2026 17:00", + "date_time": "04.12.2026 20:00", + "home": "AC Hlinsko", + "home_id": "", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/hlinsko.png", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "60", + "away_logo_url": "/img/logo.png", + "score": "", + "venue": "SH Hlinsko", + "match_id": "1410", + "report_url": "https://2fl-v.futsalliga.cz/match/1410", + "facr_link": "https://2fl-v.futsalliga.cz/match/1410" + }, + { + "date_time": "11.12.2026 20:00", "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_id": "60", + "home_logo_url": "/img/logo.png", + "away": "1. FC Nejzbach Vysoké Mýto", + "away_id": "", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/Nejzbach.png", + "score": "", + "venue": "SH Uherské Hradiště", + "match_id": "1416", + "report_url": "https://2fl-v.futsalliga.cz/match/1416", + "facr_link": "https://2fl-v.futsalliga.cz/match/1416" + }, + { + "date_time": "18.12.2026 20:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "60", + "home_logo_url": "/img/logo.png", + "away": "FC Tango Hodonín", + "away_id": "", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/tango-hodonin.png", + "score": "", + "venue": "SH Uherské Hradiště", + "match_id": "1422", + "report_url": "https://2fl-v.futsalliga.cz/match/1422", + "facr_link": "https://2fl-v.futsalliga.cz/match/1422" + }, + { + "date_time": "10.01.2027 18:30", + "home": "FC Atraps Brno", + "home_id": "", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/FC Atraps Brno.png", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "60", + "away_logo_url": "/img/logo.png", + "score": "", + "venue": "SH Měnín", + "match_id": "1427", + "report_url": "https://2fl-v.futsalliga.cz/match/1427", + "facr_link": "https://2fl-v.futsalliga.cz/match/1427" + }, + { + "date_time": "15.01.2027 20:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "60", "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", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/sumperk.png", + "score": "", "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" + "match_id": "1435", + "report_url": "https://2fl-v.futsalliga.cz/match/1435", + "facr_link": "https://2fl-v.futsalliga.cz/match/1435" }, { - "date_time": "01.02.2026 11:00", - "home": "Helas Brno", + "date_time": "24.01.2027 17:00", + "home": "FC Baník Ostrava", "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/banik_ostravfa.png", "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_id": "60", "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" + "score": "", + "venue": "SH SPŠEI Ostrava, Sokolská", + "match_id": "1443", + "report_url": "https://2fl-v.futsalliga.cz/match/1443", + "facr_link": "https://2fl-v.futsalliga.cz/match/1443" }, { - "date_time": "01.02.2026 15:00", + "date_time": "29.01.2027 20:00", + "home": "FC Bizoni Uherské Hradiště", + "home_id": "60", + "home_logo_url": "/img/logo.png", + "away": "G.T. Trojanovice", + "away_id": "", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/GT_Trojanovice.png", + "score": "", + "venue": "SH Uherské Hradiště", + "match_id": "1448", + "report_url": "https://2fl-v.futsalliga.cz/match/1448", + "facr_link": "https://2fl-v.futsalliga.cz/match/1448" + }, + { + "date_time": "07.02.2027 19:30", "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", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/Orel_reckovice.png", "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_id": "60", "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" + "score": "", + "venue": "STAREZ Aréna Vodova 3", + "match_id": "1456", + "report_url": "https://2fl-v.futsalliga.cz/match/1456", + "facr_link": "https://2fl-v.futsalliga.cz/match/1456" }, { - "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", + "date_time": "12.02.2027 20:00", "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_id": "60", "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 Vyškov", - "away_id": "", - "away_logo_url": "https://is1.fotbal.cz/media/kluby/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1_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 Vyškov", - "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1/0bd228c7-4c9c-4cdc-96d1-105b60a5fff1_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", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/abinuti_Vlci_Brno.png", + "score": "", "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" + "match_id": "1461", + "report_url": "https://2fl-v.futsalliga.cz/match/1461", + "facr_link": "https://2fl-v.futsalliga.cz/match/1461" }, { - "date_time": "18.01.2026 15:00", + "date_time": "19.02.2027 20: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" - } - ] - }, - { - "id": "fe867f19-15f7-41bb-b58d-dfc2a56f18eb", - "code": "U1A", - "name": "2. Liga Ženy - Východ", - "team_count": "7", - "matches_link": "https://www.fotbal.cz/futsal/futsal/table/fe867f19-15f7-41bb-b58d-dfc2a56f18eb", - "matches": [ - { - "date_time": "15.11.2025 09:00", - "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_id": "60", "home_logo_url": "/img/logo.png", "away": "Real Top Frýdek-Místek", "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", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/frydek_mistek.png", + "score": "", "venue": "SH Uherské Hradiště", - "match_id": "d177f982-b9ba-4a40-8103-51b8d726b47e", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=d177f982-b9ba-4a40-8103-51b8d726b47e\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/d177f982-b9ba-4a40-8103-51b8d726b47e" + "match_id": "1463", + "report_url": "https://2fl-v.futsalliga.cz/match/1463", + "facr_link": "https://2fl-v.futsalliga.cz/match/1463" }, { - "date_time": "15.11.2025 09:00", + "date_time": "26.02.2027 20:00", + "home": "AC Gamaspol Jeseník", + "home_id": "", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/jesenik.png", + "away": "FC Bizoni Uherské Hradiště", + "away_id": "60", + "away_logo_url": "/img/logo.png", + "score": "", + "venue": "MSH Jeseník", + "match_id": "1473", + "report_url": "https://2fl-v.futsalliga.cz/match/1473", + "facr_link": "https://2fl-v.futsalliga.cz/match/1473" + }, + { + "date_time": "05.03.2027 20:00", "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", + "home_id": "60", "home_logo_url": "/img/logo.png", - "away": "Uherský Brod", + "away": "AC Hlinsko", "away_id": "", - "away_logo_url": "https://is1.fotbal.cz/media/kluby/d01a3dae-20cb-4d1c-9e7f-f26bbaf1822a/d01a3dae-20cb-4d1c-9e7f-f26bbaf1822a_crop.jpg", - "score": "0:0", + "away_logo_url": "https://futsalliga.esports.cz/files/logos/hlinsko.png", + "score": "", "venue": "SH Uherské Hradiště", - "match_id": "2091e206-1e33-4343-95c6-55948f584cc3", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=2091e206-1e33-4343-95c6-55948f584cc3\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/2091e206-1e33-4343-95c6-55948f584cc3" + "match_id": "1476", + "report_url": "https://2fl-v.futsalliga.cz/match/1476", + "facr_link": "https://2fl-v.futsalliga.cz/match/1476" }, { - "date_time": "15.11.2025 09:00", - "home": "Rakovec Kotvrdovice", + "date_time": "12.03.2027 20:00", + "home": "1. FC Nejzbach Vysoké Mýto", "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/7dd88c66-16cd-44e8-801a-eca5bc5a2ced/7dd88c66-16cd-44e8-801a-eca5bc5a2ced_crop.jpg", + "home_logo_url": "https://futsalliga.esports.cz/files/logos/Nejzbach.png", "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", + "away_id": "60", "away_logo_url": "/img/logo.png", - "score": "0:0", - "venue": "SH Uherské Hradiště", - "match_id": "8dedefdb-eebb-47b7-8a9f-4e5119add725", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=8dedefdb-eebb-47b7-8a9f-4e5119add725\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/8dedefdb-eebb-47b7-8a9f-4e5119add725" - }, - { - "date_time": "30.11.2025 09:00", - "home": "Futsalová škola Třebíč", - "home_id": "", - "home_logo_url": "/dist/img/logo-club-empty.svg", - "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", - "away_logo_url": "/img/logo.png", - "score": "0:0", - "venue": "SH Spartak Třebíč", - "match_id": "d11b7591-d94e-4004-8b29-6690050e035a", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=d11b7591-d94e-4004-8b29-6690050e035a\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/d11b7591-d94e-4004-8b29-6690050e035a" - }, - { - "date_time": "30.11.2025 09:00", - "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", - "home_logo_url": "/img/logo.png", - "away": "FK Nové Sady Olomouc", - "away_id": "", - "away_logo_url": "/dist/img/logo-club-empty.svg", - "score": "0:0", - "venue": "SH Uherské Hradiště", - "match_id": "45ab18e5-4bf5-43dd-a60a-369e8fad49ba", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=45ab18e5-4bf5-43dd-a60a-369e8fad49ba\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/45ab18e5-4bf5-43dd-a60a-369e8fad49ba" - }, - { - "date_time": "10.01.2026 09:00", - "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", - "home_logo_url": "/img/logo.png", - "away": "Real Top Frýdek-Místek", - "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": "a9fc849c-d2b7-4735-b078-faf6b366336f", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=a9fc849c-d2b7-4735-b078-faf6b366336f\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/a9fc849c-d2b7-4735-b078-faf6b366336f" - }, - { - "date_time": "10.01.2026 09:00", - "home": "Futsal Club Šumperk", - "home_id": "", - "home_logo_url": "/dist/img/logo-club-empty.svg", - "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", - "away_logo_url": "/img/logo.png", - "score": "0:0", - "venue": "SH Postřelmov", - "match_id": "cc0df440-888b-4740-b13c-132db46339b3", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=cc0df440-888b-4740-b13c-132db46339b3\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/cc0df440-888b-4740-b13c-132db46339b3" - }, - { - "date_time": "10.01.2026 09:00", - "home": "Uherský Brod", - "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/d01a3dae-20cb-4d1c-9e7f-f26bbaf1822a/d01a3dae-20cb-4d1c-9e7f-f26bbaf1822a_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 Uherský Brod", - "match_id": "499d00b2-07a5-46ad-8229-ddea508183a5", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=499d00b2-07a5-46ad-8229-ddea508183a5\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/499d00b2-07a5-46ad-8229-ddea508183a5" - }, - { - "date_time": "25.01.2026 09:00", - "home": "Futsalová škola Třebíč", - "home_id": "", - "home_logo_url": "/dist/img/logo-club-empty.svg", - "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", - "away_logo_url": "/img/logo.png", - "score": "0:0", - "venue": "SH Spartak Třebíč", - "match_id": "ffc5dc91-ee41-43f8-8c58-4e4f2c1888d8", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=ffc5dc91-ee41-43f8-8c58-4e4f2c1888d8\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/ffc5dc91-ee41-43f8-8c58-4e4f2c1888d8" - }, - { - "date_time": "25.01.2026 09:00", - "home": "Rakovec Kotvrdovice", - "home_id": "", - "home_logo_url": "https://is1.fotbal.cz/media/kluby/7dd88c66-16cd-44e8-801a-eca5bc5a2ced/7dd88c66-16cd-44e8-801a-eca5bc5a2ced_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 Jedovnice", - "match_id": "73b05917-2fe7-4122-9bc1-a068c871e751", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=73b05917-2fe7-4122-9bc1-a068c871e751\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/73b05917-2fe7-4122-9bc1-a068c871e751" - }, - { - "date_time": "08.02.2026 00:00", - "home": "FC Bizoni Uherské Hradiště", - "home_id": "441d3783-06aa-436a-b438-359300ee0371", - "home_logo_url": "/img/logo.png", - "away": "FK Nové Sady Olomouc", - "away_id": "", - "away_logo_url": "/dist/img/logo-club-empty.svg", - "score": "0:0", - "venue": "SH Uherské Hradiště", - "match_id": "acb90b6f-8178-4999-bf96-01c975327149", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=acb90b6f-8178-4999-bf96-01c975327149\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/acb90b6f-8178-4999-bf96-01c975327149" - }, - { - "date_time": "08.02.2026 00:00", - "home": "Futsal Club Šumperk", - "home_id": "", - "home_logo_url": "/dist/img/logo-club-empty.svg", - "away": "FC Bizoni Uherské Hradiště", - "away_id": "441d3783-06aa-436a-b438-359300ee0371", - "away_logo_url": "/img/logo.png", - "score": "0:0", - "venue": "SH Postřelmov", - "match_id": "85a3256e-9827-4bb4-8ad6-dda7b08522c7", - "report_url": "https://is.fotbal.cz/public/zapasy/zapis-o-utkani-report.aspx%3Fzapas=85a3256e-9827-4bb4-8ad6-dda7b08522c7\u0026zapis=1\u0026noprint=1\u0026btnprint=1\u0026.htm", - "facr_link": "https://www.fotbal.cz/futsal/zapasy/futsal/85a3256e-9827-4bb4-8ad6-dda7b08522c7" + "score": "", + "venue": "SH DM Vysoké Mýto", + "match_id": "1483", + "report_url": "https://2fl-v.futsalliga.cz/match/1483", + "facr_link": "https://2fl-v.futsalliga.cz/match/1483" } ] } ] }, "club_table": { - "name": "FC Bizoni Uherské Hradiště, z.s.", - "club_id": "441d3783-06aa-436a-b438-359300ee0371", + "name": "FC Bizoni Uherské Hradiště", + "club_id": "60", "club_type": "futsal", - "logo_url": "https://is1.fotbal.cz/media/kluby/441d3783-06aa-436a-b438-359300ee0371/441d3783-06aa-436a-b438-359300ee0371_crop.jpg", + "logo_url": "/img/logo.png", "competitions": [ { - "id": "1b5fe99c-dad6-48b1-9300-36acd08bcc58", - "code": "O1C", - "name": "Pohár SFČR 2025 Celostátní část", - "team_count": "8", - "matches_link": "https://www.fotbal.cz/futsal/futsal/table/1b5fe99c-dad6-48b1-9300-36acd08bcc58", - "table": { - "overall": null - } - }, - { - "id": "b7e65b4c-ac12-4a54-b049-db704290af6c", - "code": "O1D", - "name": "Pohár SFČR 2025 Regionální finále", - "team_count": "12", - "matches_link": "https://www.fotbal.cz/futsal/futsal/table/b7e65b4c-ac12-4a54-b049-db704290af6c", + "id": "2027", + "code": "2FL-V", + "name": "2. Futsal liga - východ 2026/2027", + "team_count": "6", + "matches_link": "https://2fl-v.futsalliga.cz/matches/2027?team=60", "table": { "overall": [ { "rank": "1", - "team": "FK Chrudim, z.s.", + "team": "1. FC Nejzbach Vysoké Mýto", "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/8dfafc44-7a36-498f-912b-183c44fa941c/8dfafc44-7a36-498f-912b-183c44fa941c_crop.jpg", + "team_logo_url": "https://futsalliga.esports.cz/files/logos/Nejzbach.png", "played": "1", "wins": "1", "draws": "0", "losses": "0", - "score": "11:3", + "score": "14:2", "points": "3" }, { "rank": "2", - "team": "FTZS Liberec, futsal club", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/8fed780e-3475-40a3-b6b4-7ee74da3a619/8fed780e-3475-40a3-b6b4-7ee74da3a619_crop.jpg", - "played": "1", - "wins": "1", - "draws": "0", - "losses": "0", - "score": "7:0", - "points": "3" - }, - { - "rank": "3", - "team": "SK Slavia Praha", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/e41612a4-4108-4920-99a7-8c60ab226af4/e41612a4-4108-4920-99a7-8c60ab226af4_crop.jpg", - "played": "1", - "wins": "1", - "draws": "0", - "losses": "0", - "score": "5:1", - "points": "3" - }, - { - "rank": "4", - "team": "FC Bizoni Uherské Hradiště, z.s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/441d3783-06aa-436a-b438-359300ee0371/441d3783-06aa-436a-b438-359300ee0371_crop.jpg", - "played": "1", - "wins": "1", - "draws": "0", - "losses": "0", - "score": "7:4", - "points": "3" - }, - { - "rank": "5", - "team": "G.T. Trojanovice", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/f15063e3-76e9-43a3-aad0-eef99adcfd46/f15063e3-76e9-43a3-aad0-eef99adcfd46_crop.jpg", - "played": "1", - "wins": "1", - "draws": "0", - "losses": "0", - "score": "7:5", - "points": "3" - }, - { - "rank": "6", - "team": "International FC Kadaň", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/8b42b50c-f13d-4e82-bad9-bb133cce3106/8b42b50c-f13d-4e82-bad9-bb133cce3106_crop.jpg", - "played": "1", - "wins": "1", - "draws": "0", - "losses": "0", - "score": "4:4", - "points": "2" - }, - { - "rank": "7", - "team": "Fut Fet Karlovy Vary", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/6f81c53e-a0e7-4762-bd77-9a507a4e9c22/6f81c53e-a0e7-4762-bd77-9a507a4e9c22_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "4:4", - "points": "1" - }, - { - "rank": "8", - "team": "1.FC Chachaři Ostrava 2007, z. s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/433f7847-77e4-4297-bd1a-3e864a7a2134/433f7847-77e4-4297-bd1a-3e864a7a2134_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "5:7", - "points": "0" - }, - { - "rank": "9", - "team": "FC Tango Hodonín", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/f0cbc19e-35fa-4432-b390-e1dbc9e78508/f0cbc19e-35fa-4432-b390-e1dbc9e78508_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "4:7", - "points": "0" - }, - { - "rank": "10", - "team": "SK OLYMPIK Mělník", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/b8040033-f674-4299-b8c0-ec6dbf2ca731/b8040033-f674-4299-b8c0-ec6dbf2ca731_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "1:5", - "points": "0" - }, - { - "rank": "11", - "team": "SK Rapid Ústí nad Labem, z. s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/d3c14f49-d0fd-44b3-9568-eed6209a6d59/d3c14f49-d0fd-44b3-9568-eed6209a6d59_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "0:7", - "points": "0" - }, - { - "rank": "12", - "team": "Futsal klub Havlíčkův Brod, z.s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "3:11", - "points": "0" - } - ] - } - }, - { - "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": [ - { - "rank": "1", - "team": "FC Bizoni Uherské Hradiště, z.s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/441d3783-06aa-436a-b438-359300ee0371/441d3783-06aa-436a-b438-359300ee0371_crop.jpg", - "played": "1", - "wins": "1", - "draws": "0", - "losses": "0", - "score": "7:2", - "points": "3" - }, - { - "rank": "2", - "team": "Real Top Frýdek-Místek z.s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/15cfc7c4-36b2-413e-a047-7e509c4e0d0e/15cfc7c4-36b2-413e-a047-7e509c4e0d0e_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "2:7", - "points": "0" - } - ] - } - }, - { - "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": [ - { - "rank": "1", - "team": "Real Top Frýdek-Místek z.s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/15cfc7c4-36b2-413e-a047-7e509c4e0d0e/15cfc7c4-36b2-413e-a047-7e509c4e0d0e_crop.jpg", - "played": "2", - "wins": "1", - "draws": "1", - "losses": "0", - "score": "10:8", - "points": "4" - }, - { - "rank": "2", - "team": "Žabinští Vlci Brno", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/e6c12edb-3401-4b9b-b2a0-c00d97af580c/e6c12edb-3401-4b9b-b2a0-c00d97af580c_crop.jpg", - "played": "1", - "wins": "1", - "draws": "0", - "losses": "0", - "score": "8:3", - "points": "3" - }, - { - "rank": "3", "team": "AC Hlinsko", "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/967aa7a1-a0cd-47c5-a255-5b287bd53e39/967aa7a1-a0cd-47c5-a255-5b287bd53e39_crop.jpg", - "played": "2", + "team_logo_url": "https://futsalliga.esports.cz/files/logos/hlinsko.png", + "played": "1", "wins": "1", "draws": "0", - "losses": "1", - "score": "8:8", + "losses": "0", + "score": "4:2", + "points": "3" + }, + { + "rank": "3", + "team": "RSKM D.D. Šumperk", + "team_id": "", + "team_logo_url": "https://futsalliga.esports.cz/files/logos/sumperk.png", + "played": "1", + "wins": "1", + "draws": "0", + "losses": "0", + "score": "3:2", "points": "3" }, { "rank": "4", - "team": "FC Baník Ostrava", + "team": "Orel Řečkovice", "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/649dcca8-5574-4ce3-bd4a-183364c80c4f/649dcca8-5574-4ce3-bd4a-183364c80c4f_crop.jpg", - "played": "2", - "wins": "1", + "team_logo_url": "https://futsalliga.esports.cz/files/logos/Orel_reckovice.png", + "played": "1", + "wins": "0", "draws": "0", "losses": "1", - "score": "7:8", - "points": "3" + "score": "2:3", + "points": "0" }, { "rank": "5", - "team": "FC Bizoni Uherské Hradiště, z.s.", + "team": "Real Top Frýdek-Místek", "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/441d3783-06aa-436a-b438-359300ee0371/441d3783-06aa-436a-b438-359300ee0371_crop.jpg", + "team_logo_url": "https://futsalliga.esports.cz/files/logos/frydek_mistek.png", "played": "1", "wins": "0", - "draws": "1", - "losses": "0", - "score": "5:5", - "points": "1" + "draws": "0", + "losses": "1", + "score": "2:4", + "points": "0" }, { "rank": "6", - "team": "Helas Brno B", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/29a3465b-4ac9-48bb-a482-8b4938b44f46/29a3465b-4ac9-48bb-a482-8b4938b44f46_crop.jpg", - "played": "1", - "wins": "0", - "draws": "1", - "losses": "0", - "score": "1:1", - "points": "1" - }, - { - "rank": "7", "team": "AC Gamaspol Jeseník", "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/03dd330b-d469-4a65-99f1-29b7ece7c2ed/03dd330b-d469-4a65-99f1-29b7ece7c2ed_crop.jpg", - "played": "1", - "wins": "0", - "draws": "1", - "losses": "0", - "score": "1:1", - "points": "1" - }, - { - "rank": "8", - "team": "Futsal klub Havlíčkův Brod, z.s.", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/80bfa33e-fd81-442d-bea7-bd4d3089203d/80bfa33e-fd81-442d-bea7-bd4d3089203d_crop.jpg", + "team_logo_url": "https://futsalliga.esports.cz/files/logos/jesenik.png", "played": "1", "wins": "0", "draws": "0", "losses": "1", - "score": "4:5", - "points": "0" - }, - { - "rank": "9", - "team": "RSKM D.D. Šumperk", - "team_id": "", - "team_logo_url": "https://is1.fotbal.cz/media/kluby/f637ffcf-54ab-44c5-97ef-247dd7699e0b/f637ffcf-54ab-44c5-97ef-247dd7699e0b_crop.jpg", - "played": "1", - "wins": "0", - "draws": "0", - "losses": "1", - "score": "3:8", + "score": "2:14", "points": "0" } ] } - }, - { - "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 - } - }, - { - "id": "fe867f19-15f7-41bb-b58d-dfc2a56f18eb", - "code": "U1A", - "name": "2. Liga Ženy - Východ", - "team_count": "7", - "matches_link": "https://www.fotbal.cz/futsal/futsal/table/fe867f19-15f7-41bb-b58d-dfc2a56f18eb", - "table": { - "overall": null - } } ] } diff --git a/data/video.json b/data/video.json index 88a0087..8713a7a 100644 --- a/data/video.json +++ b/data/video.json @@ -1,56 +1,56 @@ { - "fetched_at": "2025-09-27T15:19:20.398328338Z", + "fetched_at": "2026-10-04T21:20:12.1582953+02:00", "channel": "@FCBizoniUH", "items": [ { - "video_id": "h_-TS6oVvKA", - "title": "Bizoni UH-RT F.Místek 5:5/1:3/-2.kolo 2.liga UH 26.9.25", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/h_-TS6oVvKA/maxresdefault.jpg", - "views_text": "41 views", - "views": 41, - "published_text": "9 hours ago", - "published_date": "2025-09-27" + "video_id": "9pIX0nLZj7E", + "title": "Bizoni UH-Žabin.Vlci Brno 6:3/4:0/-semifinále SFČR-UH 11.6.26", + "length": "5:27", + "thumbnail_url": "https://img.youtube.com/vi/9pIX0nLZj7E/maxresdefault.jpg", + "views_text": "171", + "views": 171, + "published_text": "3mo ago", + "published_date": "" }, { - "video_id": "ozH8xE7V458", - "title": "Bizoni UH-Tango Hodonín 7:4/2:3/-regionální finále poháru SFČR-16.9.25-UH", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/ozH8xE7V458/maxresdefault.jpg", - "views_text": "276 views", - "views": 276, - "published_text": "10 days ago", - "published_date": "2025-09-17" + "video_id": "qu5UuNFfhdY", + "title": "SK Slavia Praha B - FC Bizoni Uherské Hradiště", + "length": "4:18", + "thumbnail_url": "https://img.youtube.com/vi/qu5UuNFfhdY/maxresdefault.jpg", + "views_text": "375", + "views": 375, + "published_text": "6mo ago", + "published_date": "" }, { - "video_id": "nrj6_1IoYoo", - "title": "Bizoni UH-Fr.Místek 7:2/4:1/-Superpohár-12.9.25 v Uh.Hradišti", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/nrj6_1IoYoo/maxresdefault.jpg", - "views_text": "214 views", - "views": 214, - "published_text": "2 weeks ago", - "published_date": "2025-09-13" + "video_id": "XHgpogBABLM", + "title": "Bizoni UH-Slavia\"B\" 2:3/2:0/-futsal SUPERPOHÁR v UH 28.2.26", + "length": "4:02", + "thumbnail_url": "https://img.youtube.com/vi/XHgpogBABLM/maxresdefault.jpg", + "views_text": "320", + "views": 320, + "published_text": "7mo ago", + "published_date": "" }, { - "video_id": "pSGwSJvdd14", - "title": "Bizoni UH vs Žabinští Vlci Brno 6:4 | Semifinále poháru SFČR UH", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/pSGwSJvdd14/maxresdefault.jpg", - "views_text": "98 views", - "views": 98, - "published_text": "3 months ago", - "published_date": "2025-06-27" + "video_id": "gl3azpVKZ4k", + "title": "Bizoni UH-Baník Ostrava 17:8/10:4/-22.kolo futsal ligy východ-20.2.26 v UH", + "length": "10:55", + "thumbnail_url": "https://img.youtube.com/vi/gl3azpVKZ4k/maxresdefault.jpg", + "views_text": "381", + "views": 381, + "published_text": "7mo ago", + "published_date": "" }, { - "video_id": "AbGKYfOmtlw", - "title": "FC Bizoni UH 14-1 Hombres Brno | HIGHLIGHTS", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/AbGKYfOmtlw/maxresdefault.jpg", - "views_text": "218 views", - "views": 218, - "published_text": "6 months ago", - "published_date": "2025-03-27" + "video_id": "EC5WCbnhDFA", + "title": "Bizoni UH-Tango Hodonín 3:2/2:2/-20.kolo 2.ligy východ-6.2.26 v UH", + "length": "7:28", + "thumbnail_url": "https://img.youtube.com/vi/EC5WCbnhDFA/maxresdefault.jpg", + "views_text": "476", + "views": 476, + "published_text": "7mo ago", + "published_date": "" } ] } \ No newline at end of file diff --git a/data/videos.json b/data/videos.json index 88a0087..8713a7a 100644 --- a/data/videos.json +++ b/data/videos.json @@ -1,56 +1,56 @@ { - "fetched_at": "2025-09-27T15:19:20.398328338Z", + "fetched_at": "2026-10-04T21:20:12.1582953+02:00", "channel": "@FCBizoniUH", "items": [ { - "video_id": "h_-TS6oVvKA", - "title": "Bizoni UH-RT F.Místek 5:5/1:3/-2.kolo 2.liga UH 26.9.25", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/h_-TS6oVvKA/maxresdefault.jpg", - "views_text": "41 views", - "views": 41, - "published_text": "9 hours ago", - "published_date": "2025-09-27" + "video_id": "9pIX0nLZj7E", + "title": "Bizoni UH-Žabin.Vlci Brno 6:3/4:0/-semifinále SFČR-UH 11.6.26", + "length": "5:27", + "thumbnail_url": "https://img.youtube.com/vi/9pIX0nLZj7E/maxresdefault.jpg", + "views_text": "171", + "views": 171, + "published_text": "3mo ago", + "published_date": "" }, { - "video_id": "ozH8xE7V458", - "title": "Bizoni UH-Tango Hodonín 7:4/2:3/-regionální finále poháru SFČR-16.9.25-UH", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/ozH8xE7V458/maxresdefault.jpg", - "views_text": "276 views", - "views": 276, - "published_text": "10 days ago", - "published_date": "2025-09-17" + "video_id": "qu5UuNFfhdY", + "title": "SK Slavia Praha B - FC Bizoni Uherské Hradiště", + "length": "4:18", + "thumbnail_url": "https://img.youtube.com/vi/qu5UuNFfhdY/maxresdefault.jpg", + "views_text": "375", + "views": 375, + "published_text": "6mo ago", + "published_date": "" }, { - "video_id": "nrj6_1IoYoo", - "title": "Bizoni UH-Fr.Místek 7:2/4:1/-Superpohár-12.9.25 v Uh.Hradišti", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/nrj6_1IoYoo/maxresdefault.jpg", - "views_text": "214 views", - "views": 214, - "published_text": "2 weeks ago", - "published_date": "2025-09-13" + "video_id": "XHgpogBABLM", + "title": "Bizoni UH-Slavia\"B\" 2:3/2:0/-futsal SUPERPOHÁR v UH 28.2.26", + "length": "4:02", + "thumbnail_url": "https://img.youtube.com/vi/XHgpogBABLM/maxresdefault.jpg", + "views_text": "320", + "views": 320, + "published_text": "7mo ago", + "published_date": "" }, { - "video_id": "pSGwSJvdd14", - "title": "Bizoni UH vs Žabinští Vlci Brno 6:4 | Semifinále poháru SFČR UH", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/pSGwSJvdd14/maxresdefault.jpg", - "views_text": "98 views", - "views": 98, - "published_text": "3 months ago", - "published_date": "2025-06-27" + "video_id": "gl3azpVKZ4k", + "title": "Bizoni UH-Baník Ostrava 17:8/10:4/-22.kolo futsal ligy východ-20.2.26 v UH", + "length": "10:55", + "thumbnail_url": "https://img.youtube.com/vi/gl3azpVKZ4k/maxresdefault.jpg", + "views_text": "381", + "views": 381, + "published_text": "7mo ago", + "published_date": "" }, { - "video_id": "AbGKYfOmtlw", - "title": "FC Bizoni UH 14-1 Hombres Brno | HIGHLIGHTS", - "length": "", - "thumbnail_url": "https://img.youtube.com/vi/AbGKYfOmtlw/maxresdefault.jpg", - "views_text": "218 views", - "views": 218, - "published_text": "6 months ago", - "published_date": "2025-03-27" + "video_id": "EC5WCbnhDFA", + "title": "Bizoni UH-Tango Hodonín 3:2/2:2/-20.kolo 2.ligy východ-6.2.26 v UH", + "length": "7:28", + "thumbnail_url": "https://img.youtube.com/vi/EC5WCbnhDFA/maxresdefault.jpg", + "views_text": "476", + "views": 476, + "published_text": "7mo ago", + "published_date": "" } ] } \ No newline at end of file diff --git a/tools/scrape_futsalliga.py b/tools/scrape_futsalliga.py new file mode 100644 index 0000000..10b0cac --- /dev/null +++ b/tools/scrape_futsalliga.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python3 +"""Scrape FC Bizoni UH data from 2fl-v.futsalliga.cz into the club.json shape +the site frontend expects (same as facr.tdvorak.dev API output). + +Usage: python tools/scrape_futsalliga.py [--out data/club.json] +""" +import json +import re +import sys +import urllib.request +from datetime import datetime, timezone + +sys.stdout.reconfigure(encoding="utf-8", errors="replace") + +BASE = "https://2fl-v.futsalliga.cz" +SEASON = "2027" # 2026/2027 +TEAM_ID = "60" # FC Bizoni Uherske Hradiste +CLUB_NAME = "FC Bizoni Uherské Hradiště" +COMP_NAME = "2. Futsal liga - východ 2026/2027" +CLUB_LOGO = "/img/logo.png" + +UA = {"User-Agent": "Mozilla/5.0 (bizoni-site-scraper)"} + + +def fetch(url): + req = urllib.request.Request(url, headers=UA) + with urllib.request.urlopen(req, timeout=30) as r: + return r.read().decode("utf-8", "replace") + + +def strip_tags(s): + return re.sub(r"<[^>]+>", "", s) + + +def clean(s): + return re.sub(r"\s+", " ", strip_tags(s)).strip() + + +def team_logo(content): + m = re.search(r'(?:data-src|src)="(https?://[^"]+)"', content) + return m.group(1) if m else "" + + +def is_bizoni(name): + return "bizoni" in name.lower() + + +def parse_matches(html_text): + # Each date group:

...weekday D. M. YYYY

followed by match rows + h2re = re.compile(r'

]*>.*?

', re.S) + headers = list(h2re.finditer(html_text)) + matches = [] + for i, h in enumerate(headers): + date_m = re.search(r"(\d{1,2})\.\s*(\d{1,2})\.\s*(\d{4})", strip_tags(h.group(0))) + if not date_m: + continue + d, mo, y = int(date_m.group(1)), int(date_m.group(2)), int(date_m.group(3)) + section = html_text[h.end():headers[i + 1].start() if i + 1 < len(headers) else len(html_text)] + # each match row starts with the time anchor + rowre = re.compile( + r'
]*>\s*
\s*([0-9:]+)\s*
', + re.S, + ) + rows = list(rowre.finditer(section)) + for j, row in enumerate(rows): + seg = section[row.end():rows[j + 1].start() if j + 1 < len(rows) else len(section)] + match_id, time_str = row.group(1), row.group(2) + teams = re.findall(r'
(.*?)
', seg, re.S) + if len(teams) < 2: + continue + home, away = clean(teams[0]), clean(teams[1]) + home_logo, away_logo = team_logo(teams[0]), team_logo(teams[1]) + score = "" + sm = re.search(r'match-results[^>]*>\s*([^<]*?)\s*', seg, re.S) + if sm: + sc = re.search(r"(\d+)\s*:\s*(\d+)", sm.group(1)) + if sc: + score = f"{sc.group(1)}:{sc.group(2)}" + vm = re.search(r'
\s*([^<]*?)\s*
', seg, re.S) + venue = vm.group(1).strip() if vm else "" + if is_bizoni(home): + home_logo = CLUB_LOGO + if is_bizoni(away): + away_logo = CLUB_LOGO + matches.append({ + "date_time": f"{d:02d}.{mo:02d}.{y:04d} {time_str}", + "home": home, + "home_id": TEAM_ID if is_bizoni(home) else "", + "home_logo_url": home_logo, + "away": away, + "away_id": TEAM_ID if is_bizoni(away) else "", + "away_logo_url": away_logo, + "score": score, + "venue": venue, + "match_id": match_id, + "report_url": f"{BASE}/match/{match_id}", + "facr_link": f"{BASE}/match/{match_id}", + }) + return matches + + +def parse_standings(html_text): + tm = re.search(r']*standingsTable[^>]*>(.*?)', html_text, re.S) + if not tm: + return [] + rows = [] + for tr in re.findall(r"(.*?)", tm.group(1), re.S): + cells = re.findall(r"]*>(.*?)", tr, re.S) + if len(cells) < 8: + continue + team = clean(cells[1]) + rows.append({ + "rank": clean(cells[0]), + "team": team, + "team_id": TEAM_ID if is_bizoni(team) else "", + "team_logo_url": CLUB_LOGO if is_bizoni(team) else team_logo(cells[1]), + "played": clean(cells[2]), + "wins": clean(cells[3]), + "draws": clean(cells[4]), + "losses": clean(cells[5]), + "score": clean(cells[6]), + "points": clean(cells[7]), + }) + return rows + + +def main(): + out = sys.argv[sys.argv.index("--out") + 1] if "--out" in sys.argv else None + matches_html = fetch(f"{BASE}/matches/{SEASON}?team={TEAM_ID}") + standings_html = fetch(f"{BASE}/standings/{SEASON}") + matches = parse_matches(matches_html) + table = parse_standings(standings_html) + comp = { + "id": SEASON, + "code": "2FL-V", + "name": COMP_NAME, + "team_count": str(len(table)), + "matches_link": f"{BASE}/matches/{SEASON}?team={TEAM_ID}", + "matches": matches, + } + detail = { + "name": CLUB_NAME, + "club_id": TEAM_ID, + "club_type": "futsal", + "url": f"{BASE}/team/{TEAM_ID}", + "logo_url": CLUB_LOGO, + "address": "", + "category": "Futsal", + "competitions": [comp], + } + table_obj = { + "name": CLUB_NAME, + "club_id": TEAM_ID, + "club_type": "futsal", + "logo_url": CLUB_LOGO, + "competitions": [{ + "id": SEASON, + "code": "2FL-V", + "name": COMP_NAME, + "team_count": str(len(table)), + "matches_link": comp["matches_link"], + "table": {"overall": table}, + }], + } + combined = { + "fetched_at": datetime.now(timezone.utc).isoformat(), + "club_detail": detail, + "club_table": table_obj, + } + print(f"matches={len(matches)} standings_rows={len(table)}") + for m in matches[:4]: + print(f" {m['date_time']} {m['home']} {m['score'] or '-:-'} {m['away']} @ {m['venue']}") + print(" ...") + for m in matches[-2:]: + print(f" {m['date_time']} {m['home']} {m['score'] or '-:-'} {m['away']} @ {m['venue']}") + if out: + with open(out, "w", encoding="utf-8") as f: + json.dump(combined, f, ensure_ascii=False, indent=2) + print(f"wrote {out}") + + +if __name__ == "__main__": + main()