From 225da9253cf15d679e50df33db545adce89c3578 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 4 Oct 2026 21:24:28 +0200 Subject: [PATCH] feat(backend): add FutsalLiga scraper as secondary data source Implement web scraping fallback for the official FutsalLiga website as a secondary data source between the primary API and the FlashScore fallback. This provides more reliable data retrieval with correct competition information when the primary API fails. Add scrapeFutsalLiga function to extract club details, matches, and standings directly from the league website. Update refresh logic to attempt FutsalLiga scraping before falling back to FlashScore API --- backend/futsalliga.go | 365 +++++++++ backend/main.go | 15 +- data/club.json | 1518 +++++++----------------------------- data/video.json | 82 +- data/videos.json | 82 +- tools/scrape_futsalliga.py | 183 +++++ 6 files changed, 914 insertions(+), 1331 deletions(-) create mode 100644 backend/futsalliga.go create mode 100644 tools/scrape_futsalliga.py 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()