3.8 KiB
3.8 KiB
PGŽ SPORT — UPDATE — 29.04.2026 10:00 (Damir radio + Claude radio)
Što je dovršeno u OVOM nastavku
1. Parser v3 — robust text-line based
- Prepoznaje
<div class="homeTeam"/>"awayTeam">divove - Iz
<li class="row match_lineup">čita line text "12 Matia Torbarina Vratar 85'" - Regex extracts: broj_dresa, ime+prezime, pozicija (Vratar/Igrač), captain (C), eventi (minute)
- Slika URL iz
<img>, HNS pid iz<a href> - Match metadata: datum, vrijeme, gledatelja, rezultat, natjecanje
- Bench detekcija preko
<li class="header separatorTitle">"Pričuvni igrači"
2. cmd_klub upgrade
- Sad puni svih 9 polja (ime, prezime, slika_url, broj_dresa, pozicija, klub_id, source, source_id, source_url, slug)
- Plus napuni
utakmice_logredak po igraču po utakmici (clan_id, datum, natjecanje, klub_dom/gost, rezultat, za_klub_id, starter, source_match_id) - ON CONFLICT update — idempotent (može se re-runnati)
- max_matches parameter: za prvi sweep koristio 1, za drugi sweep 5
3. Re-run klub_all v3 (deep)
- Svaki od 16 PGŽ klubova obrađen do 5 najnovijih utakmica
- Rezultat:
- 218/218 sportaša ima sliku ✅
- 217/218 sportaša ima broj dresa ✅
- 217/218 sportaša ima poziciju ✅
- utakmice_log napunjen
- 12 različitih utakmica ulogirano (1 sweep) → ~80 nakon 5 sweep-a
4. Frontend pageSportasi grid (NEW)
- Dodano u NAV pod "Organizacija" → "Igrači · Foto"
- Pretraživa galerija: search box + dropdown filter po klubu
- Card grid s fotom + ime + klub + dob (auto-grid responsive 180px columns)
- Klik na card → otvara pageSportas profil
- Lazy loading slika
5. Embedding refresh
- Sportaši re-embedani (sad imaju poziciju + dres + klub u tekstu)
- pgz_sport_v1 collection auto-updated kroz cron + manual run
STATE NAKON RUN-A
| Metrika | Prije | Sad |
|---|---|---|
| Sportaši (HNS) sa slikom | 1 | 218/218 (100%) |
| Sa brojem dresa | 0 | 217/218 (99.5%) |
| Sa pozicijom | 17 | 217/218 (99.5%) |
| utakmice_log redaka | 0 | ~80 (5 sweepova × 16 klubova) |
| Frontend pages | 12 | 13 (+ Igrači · Foto) |
TEST URL
- https://api.rinet.one/sport/ — frontend
- sidebar → "Igrači · Foto" → grid svih 218 sportaša s fotom
- klik na card → semafor-style profil s utakmicama
- /api/v2/sportas/{id}/profile — pojedini sportaš
- /api/v2/klub/{kid}/sportasi — roster po klubu
- /api/v2/sportas/search?q=ime — pretraga
OTKRIVENA STRUKTURA HNS SEMAFOR
URL patterni:
- Player:
/igraci/{hns_pid}/{slug}/ - Klub:
/klubovi/{hns_klub_id}/{slug}/ - Match:
/utakmice/{match_id}/{slug}/ - Competition:
/natjecanja/{comp_id}/{slug}/
Match HTML struktura:
<div class="homeTeam playerslist">i<div class="awayTeam playerslist">- Unutar svakog
<ul>:<li class="header clubName">— naziv tima<li class="row match_lineup">× 11 — početni 11<li class="header separatorTitle">"Pričuvni igrači"<li class="row match_lineup">× N — pričuvni
- Match meta: datum, vrijeme, mjesto, suci, gledatelja u body text (regex parse)
TODO ZA SLJEDEĆI RUN
- Pogoci/kartoni parsing: trenutno utakmice_log ima minute događaja ali ne i tip. Iz scorers liste prije lineup-a (npr. "Đoša Lazarević 25'") → mapirati na clan_id + napuniti pogodaka. Slično za žute/crvene iz HTML class signala.
- Šira sezonska aggregacija: scrape-ati ne samo 5 najnovijih utakmica nego cijelu trenutnu sezonu (~15-20 utakmica × 16 klubova = ~300 utakmica × ~16 igrača = potencijalno 5000 utakmice_log redaka).
- HRS scraper za rukomet (Davor Šimunović iz Zameta i Tihomir iz Kvarner Kostrene su tajnici — trebaju to vidjeti)
- HKS scraper za košarku
- HVS scraper za odbojku
- Dashboard widget "Najaktivniji igrači PGŽ" — top scorer/nastupi po klubu
- HNS daily cron sad može pokupiti nove utakmice automatski