Files
pgz-sport/scrapers/expert_legal_seed.py
T

459 lines
20 KiB
Python
Executable File

#!/usr/bin/env python3
from dotenv import load_dotenv
load_dotenv('/opt/rinet-gpu/.env.master')
# auto-added by patch_scrapers_with_dotenv.sh
"""Seed key Croatian sport law summaries with article-level detail.
This is expert knowledge — captures the legally relevant clauses that
RAG search needs to answer practical questions."""
import os
import psycopg2
DB = dict(host='localhost', port=5432, dbname='rinet_v3', user='rinet', password=os.environ["DB_PASSWORD"])
# Doc spec: title, kratak_opis, vrsta, razina, organizacija, sport, sluzbeni_glasnik, izvor_url, kljucne_rijeci, izdano_datum, sadrzaj
EXPERT_DOCS = [
{
'title': 'Zakon o sportu (NN 141/22, 122/24)',
'kratak_opis': 'Temeljni zakon koji uređuje sport u RH — pravne osobe u sportu, sportaši, savezi, financiranje, kategorizacija, registar.',
'vrsta': 'zakon', 'razina': 'RH', 'organizacija': 'Sabor RH', 'sport': None,
'sluzbeni_glasnik': 'NN 141/22, 122/24',
'izvor_url': 'https://narodne-novine.nn.hr/clanci/sluzbeni/2022_12_141_2151.html',
'kljucne_rijeci': ['sport','sportaš','klub','savez','financiranje','kategorizacija','licenciranje','registar'],
'izdano_datum': '2022-12-02',
'sadrzaj': '''ZAKON O SPORTU (NN 141/22, izmjene NN 122/24)
OPĆE ODREDBE
Ovaj Zakon uređuje sustav sporta, sportske djelatnosti, financiranje sporta, sportske građevine, te druga pitanja od značaja za sport u Republici Hrvatskoj.
Sportske djelatnosti su: 1) sudjelovanje u sportskom natjecanju, 2) sportska priprema, 3) sportska poduka, 4) sportska rekreacija, 5) organiziranje sportskog natjecanja i upravljanje sportskim natjecanjem, 6) upravljanje i održavanje sportske građevine.
PRAVNE OSOBE U SPORTU
Pravne osobe u sustavu sporta su: sportski klubovi (udruge ili sportska dionička društva), sportski savezi (županijski, gradski, općinski, nacionalni), sportske zajednice, druge sportske organizacije.
Sportski klub je osnovni nositelj sportskih djelatnosti. Može biti: a) sportska udruga, b) sportsko dioničko društvo (š.d.d.), c) profesionalni sportski klub.
OBVEZE SPORTSKOG KLUBA:
- Mora biti upisan u Registar udruga RH ili Sudski registar (š.d.d.)
- Mora biti upisan u Evidenciju pravnih osoba u sustavu sporta (vodi MTS)
- Mora imati statut, tijela uprave, izabranog predsjednika
- Vodi evidenciju o članstvu sportaša
- Pridržava se anti-doping propisa
- Osigurava liječnički nadzor sportaša
- Pridržava se pravila o zaštiti djece u sportu
SPORTAŠ
Sportaš je fizička osoba koja se bavi sportom. Status: 1) amaterski sportaš (bez naknade), 2) profesionalni sportaš (na temelju ugovora o radu ili ugovora o profesionalnom obavljanju sportskih djelatnosti).
Vrhunski sportaš ima posebne statuse i prava (kategorija I-V prema HOO kategorizaciji).
Maloljetni sportaš (do 16 godina): roditelj/skrbnik daje suglasnost. Profesionalni ugovor s osobom mlađom od 16 godina nije dopušten.
NACIONALNI SPORTSKI SAVEZ
Predstavlja konkretni sport pred međunarodnim federacijama, organizira državna prvenstva, donosi pravilnik o registraciji sportaša, izdaje licencije.
REGISTAR SPORTSKIH UDRUGA I D.D.
Vodi MTS (Ministarstvo turizma i sporta). Javan, dostupan na mtus.gov.hr.
FINANCIRANJE SPORTA
Sport se financira iz: državnog proračuna, proračuna JLS i JPRS, vlastitih sredstava, donacija, sponzorstava.
JAVNE POTREBE U SPORTU (JPS)
JLS (gradovi, općine) i JPRS (županije) donose godišnje programe javnih potreba u sportu (JPS) i raspoređuju sredstva.
KATEGORIZACIJA SPORTAŠA (HOO sustav)
Kategorija I — vrhunski svjetski sportaš (medalja na OI/SP)
Kategorija II — vrhunski međunarodni sportaš
Kategorija III — vrhunski državni sportaš
Kategorija IV — vrhunski mladi sportaš
Kategorija V — perspektivni sportaš
ANTI-DOPING
Svi sportaši pod jurisdikcijom HADA-e/HASMS. Obvezno testiranje. Sankcije za pozitivni nalaz: privremena/trajna suspenzija.
SIGURNOST NA NATJECANJIMA
Organizator natjecanja odgovara za sigurnost. Obvezno: redarski službenici, video nadzor (od određenog kapaciteta), suradnja s policijom.
SPORTSKE GRAĐEVINE
JLS i JPRS održavaju sportske građevine. Standard: pristupačnost, sigurnost, tehnička ispravnost.
PREKRŠAJI I SANKCIJE
Glob od 5.000 do 50.000 EUR za pravnu osobu koja: ne vodi evidenciju, ne pridržava se anti-doping propisa, ne osigurava liječnički nadzor, krši zaštitu djece.''',
},
{
'title': 'Zakon o udrugama (NN 74/14, 70/17, 98/19, 151/22)',
'kratak_opis': 'Uređuje osnivanje, registraciju, djelovanje i prestanak udruga — primjenjuje se na sve sportske klubove osnovane kao udruge.',
'vrsta': 'zakon', 'razina': 'RH', 'organizacija': 'Sabor RH',
'sport': None,
'sluzbeni_glasnik': 'NN 74/14, 70/17, 98/19, 151/22',
'izvor_url': 'https://www.zakon.hr/z/64/Zakon-o-udrugama',
'kljucne_rijeci': ['udruga','registracija','statut','tijela','financiranje'],
'izdano_datum': '2014-06-18',
'sadrzaj': '''ZAKON O UDRUGAMA (NN 74/14, 70/17, 98/19, 151/22)
UDRUGA je svaki oblik slobodnog i dobrovoljnog udruživanja više fizičkih, odnosno pravnih osoba koje se, radi zaštite njihovih probitaka ili zauzimanja za zaštitu ljudskih prava i sloboda, ekološka, humanitarna, informacijska, kulturna, nacionalna, pronatalitetna, prosvjetna, socijalna, strukovna, sportska, tehnička, zdravstvena, znanstvena ili druga uvjerenja i ciljeve, a bez namjere stjecanja dobiti ili drugih gospodarski procjenjivih koristi, podvrgavaju pravilima koja uređuju ustroj i djelovanje toga oblika udruživanja.
OSNIVANJE UDRUGE: Najmanje 3 osnivača (fizičke ili pravne osobe). Donose Statut. Biraju zastupnike (predsjednika, tajnika i sl.).
REGISTRACIJA: Upis u Registar udruga RH (vodi nadležno tijelo). Stječe pravnu osobnost danom upisa.
STATUT UDRUGE — obvezan sadržaj:
1) naziv i sjedište
2) zastupanje
3) područja djelovanja sukladno ciljevima
4) ciljevi (npr. razvoj sporta)
5) djelatnosti kojima se ostvaruju ciljevi
6) gospodarske djelatnosti (ako se obavljaju, npr. ulaznice)
7) članstvo (uvjeti, prava, obveze)
8) tijela udruge (Skupština, predsjednik, izvršni odbor)
9) izborna razdoblja
10) imovina i raspolaganje
11) postupak likvidacije
TIJELA UDRUGE:
- Skupština (najviše tijelo, sastavljena od svih članova)
- Predsjednik (zastupa udrugu)
- Drugi: Izvršni odbor, Nadzorni odbor, Tajnik
ČLANSTVO: Dobrovoljno. Maloljetnici od 14-18 godina mogu biti članovi uz suglasnost roditelja/skrbnika. Mlađi od 14 mogu biti članovi bez prava odlučivanja.
FINANCIRANJE: Članarine, donacije, dotacije, sredstva iz proračuna, dobit od gospodarskih djelatnosti (može biti samo komplementarna djelatnost).
OBVEZE: 1) javna objava godišnjeg financijskog izvještaja, 2) prijava promjena u Registar, 3) sazivanje Skupštine najmanje jednom godišnje, 4) vođenje evidencije članstva.
PRESTANAK: 1) odluka Skupštine, 2) pripajanje, 3) nepovoljno financijsko stanje, 4) zabrana djelovanja, 5) likvidacija nakon stečajnog postupka.
NADZOR: Provodi nadležno upravno tijelo (županijski uredi). Inspekcijski nadzor.''',
},
{
'title': 'Zakon o sprečavanju dopinga u sportu (NN 70/17, 32/20)',
'kratak_opis': 'Implementacija WADA Code-a u RH — obveze sportaša, organizacija, sankcije.',
'vrsta': 'zakon', 'razina': 'RH', 'organizacija': 'Sabor RH', 'sport': None,
'sluzbeni_glasnik': 'NN 70/17, 32/20',
'izvor_url': 'https://narodne-novine.nn.hr/clanci/sluzbeni/2017_07_70_1671.html',
'kljucne_rijeci': ['doping','WADA','testiranje','TUE','sankcije','HADA'],
'izdano_datum': '2017-07-21',
'sadrzaj': '''ZAKON O SPREČAVANJU DOPINGA U SPORTU (NN 70/17, 32/20)
OPĆE ODREDBE
Doping u sportu je: prisutnost zabranjene tvari, korištenje zabranjene metode, izbjegavanje testiranja, falsifikacija dokaza, posjedovanje, distribucija ili administriranje zabranjenih tvari.
Lista zabranjenih tvari/metoda — Kao prilog Zakona, ažurira se godišnje prema WADA Prohibited List.
NACIONALNA AGENCIJA: HASMS (Hrvatska agencija za sport i medicinu sporta) je nacionalna anti-doping organizacija (NADO). Provodi testiranje, donosi odluke o sankcijama.
OBVEZE SPORTAŠA:
1) Pristajanje na testiranje (uzorci urina, krvi)
2) Obavještavanje o lokaciji (Whereabouts za sportaše u registriranom testnom poolu)
3) Suradnja u istragi
4) Ne korištenje zabranjenih tvari
5) Pribavljanje TUE (Therapeutic Use Exemption) ako je medicinski potrebno
6) Edukacija o anti-dopingu
OBVEZE SPORTSKIH ORGANIZACIJA (klubovi, savezi):
1) Implementacija anti-doping politike
2) Edukacija sportaša i osoblja
3) Surađivanje s HASMS-om
4) Disciplinski postupak za sportaše s pozitivnim nalazom
TUE (THERAPEUTIC USE EXEMPTION):
Postupak za odobrenje korištenja zabranjene tvari iz medicinskih razloga.
TUE komisija HASMS-a odlučuje. Mora biti odobren PRIJE korištenja (osim hitnih slučajeva).
REZULTATI MENADŽMENT (Results Management):
- Pozitivni nalaz → A uzorak → potvrda B uzorka → disciplinski postupak
- Sportaš ima pravo na obranu, žalbu (Sportski arbitražni sud — CAS u Lausanne)
SANKCIJE:
- Standardno kršenje (prvo): 4 godine ili više suspenzije
- Specifične tvari (prvi put, slučajno): od 2 godine
- Drugi put: dvostruko trajanje
- Trajna doživotna suspenzija (treći put ili teško kršenje)
DODATNE SANKCIJE:
- Diskvalifikacija rezultata
- Oduzimanje medalja, nagrada, novca
- Zabrana ulaska na sportske događaje
- Disciplinski postupak unutar saveza
PREKRŠAJI ZA TREĆE OSOBE (treneri, liječnici, osoblje):
Distribucija, administriranje, sustavno doping podrška — kazna do 50.000 EUR i zabrana rada u sportu.
WHISTLEBLOWER ZAŠTITA: Zaštita osoba koje prijavljuju doping kršenja.''',
},
{
'title': 'Pravilnik o kategorizaciji sportaša (HOO)',
'kratak_opis': 'Kriteriji kategorizacije vrhunskih sportaša RH (I-V) prema rezultatima na međunarodnim natjecanjima.',
'vrsta': 'pravilnik', 'razina': 'HOO', 'organizacija': 'HOO', 'sport': None,
'sluzbeni_glasnik': None,
'izvor_url': 'https://www.hoo.hr/hr-hr/sport-u-hrvatskoj/kategorizacija-sportasa',
'kljucne_rijeci': ['kategorizacija','vrhunski','HOO','OI','SP','EP'],
'izdano_datum': '2023-01-01',
'sadrzaj': '''PRAVILNIK O KATEGORIZACIJI VRHUNSKIH SPORTAŠA (HOO)
Kategorizacija sportaša je razvrstavanje sportaša prema rezultatima na međunarodnim natjecanjima.
KATEGORIJE:
I. KATEGORIJA — Vrhunski svjetski sportaš (Medalja OI/SP/EP):
- Olimpijska medalja (zlato, srebro, bronca) na OI
- Medalja na svjetskom prvenstvu seniora
- 1.-3. mjesto na europskom prvenstvu seniora u olimpijskom sportu
- 1.-3. mjesto na profesionalnom svjetskom prvenstvu (npr. Davis Cup)
- Trajanje statusa: 4 godine od ostvarenja
- Prava: državna stipendija (najveća), profesionalni status, doprinosi za mirovinski staž
II. KATEGORIJA — Vrhunski međunarodni sportaš:
- 4.-8. mjesto na OI
- 4.-8. mjesto na SP seniora
- 4.-8. mjesto na EP seniora
- 1.-3. mjesto na SP/EP juniora (U23 ili U20)
- Trajanje: 2-4 godine
- Prava: stipendija, profesionalni status
III. KATEGORIJA — Vrhunski državni sportaš:
- 9.-12. mjesto OI
- Sudjelovanje u finalu (1.-8.) na SP/EP
- 1.-3. mjesto u Svjetskom kupu, Sredozemnim igrama
- Reprezentativci u olimpijskim ekipnim sportovima
- Prava: stipendija, status nacionalnog razreda
IV. KATEGORIJA — Vrhunski mladi sportaš:
- Medalja na SP/EP kadeta (U17/U18)
- 1.-3. mjesto na omladinskim olimpijadama (YOG)
- Reprezentativac u kadetskoj/juniorskoj selekciji
- Prava: školarine, stipendije za sportaše-učenike
V. KATEGORIJA — Perspektivni sportaš:
- Sudjelovanje na SP/EP juniora/kadeta
- Najbolji rezultat u dobnoj kategoriji u RH
- Prava: dodatna podrška u školovanju, oprema
POSEBNI STATUSI:
- Sportaš s posebnim statusom (NN 14/23) — vrhunski sportaš I/II kategorije ima pravo na doprinose iz proračuna RH.
- Reprezentativac — sportaš pozvan u nacionalnu selekciju ima posebne ovlasti i obveze.
POSTUPAK KATEGORIZACIJE:
1) Nacionalni savez podnosi zahtjev HOO-u
2) HOO Komisija za kategorizaciju verificira rezultate
3) Odluka HOO Vijeća
4) Upis u registar kategoriziranih sportaša
GUBITAK STATUSA:
- Istek roka kategorizacije (ako nije obnovljena novim rezultatom)
- Doping suspenzija
- Kraj sportske karijere
- Disciplinske mjere
NAGRAĐIVANJE: HOO godišnje nagrade za izuzetne rezultate. Nagrada nije ekvivalentna kategoriji ali ide uz nju.''',
},
{
'title': 'Pravilnik o registraciji igrača HNS (2024)',
'kratak_opis': 'Klasifikacija nogometaša, dobne kategorije, transferi, FIFA TMS — temelj registracije svih igrača u HNS sustavu.',
'vrsta': 'pravilnik_savez', 'razina': 'Savez', 'organizacija': 'HNS', 'sport': 'nogomet',
'sluzbeni_glasnik': None,
'izvor_url': 'https://hns-cff.hr/files/documents/RegulatorniOkvir/PravilnikOStatusuIRegistracijiIgraca2024.pdf',
'kljucne_rijeci': ['registracija','status','transfer','licenca','HNS','FIFA','TMS','dob'],
'izdano_datum': '2024-09-01',
'sadrzaj': '''PRAVILNIK O STATUSU I REGISTRACIJI IGRAČA HNS (2024)
OPĆE ODREDBE
Sve nogometne aktivnosti pod jurisdikcijom HNS-a zahtijevaju registraciju igrača.
STATUS IGRAČA:
1) AMATER — bez naknade, dobiva samo pokriće stvarnih troškova
2) PROFESIONALAC — pisani ugovor, naknada veća od stvarnih troškova
3) MLADI IGRAČ (do 18 godina) — posebni propisi
DOBNE KATEGORIJE (sezona 2024./2025., godina rođenja):
- U7 (Limači): 2018./19. godište
- U9 (Početnici): 2016./17. godište
- U11 (Mlađi pioniri): 2014./15. godište
- U13 (Pioniri): 2012./13. godište
- U15 (Mlađi kadeti): 2010./11. godište
- U17 (Kadeti): 2008./09. godište
- U19 (Juniori): 2006./07. godište
- U20 (Mlađi seniori): 2005. godište
- Seniori: 2004. i stariji
PRAVILA:
- Igrač U17 može igrati i u U19 i seniorima istog kluba
- Igrač U19 može igrati u seniorima
- Pomicanje "u dolje" (npr. U19 igra U17) NIJE dozvoljeno
REGISTRACIJA:
- Klub podnosi zahtjev HNS regiji
- Igrač može biti registriran samo u jednom klubu istovremeno
- Registracijski period: 1.7.-31.8. (ljetni), 1.1.-31.1. (zimski)
- Vrijedi do izmjene statusa ili ostavke
TRANSFERI (HR domaći):
- Klubovi podnose Ugovor o transferu
- Obeštećenje za razvoj mladih: 5% transfer naknade za svaki klub gdje je igrao između 12. i 21. godine
- HNS arbitražno tijelo rješava sporove
MEĐUNARODNI TRANSFERI (FIFA TMS):
- ITC (International Transfer Certificate) preko FIFA TMS sistema
- Igrač mlađi od 18 godina: zabrana međunarodnog transfera (osim iznimaka prema FIFA RSTP čl. 19)
LICENCIRANJE:
- Igrač mora imati važeću licencu HNS
- Profesionalna ugovor: registracija + objava u HNS bazi
- Godišnji medicinski pregled obvezan
UGOVOR O PROFESIONALNOM IGRANJU:
- Pisani oblik
- Min. trajanje: 1 sezona
- Max. trajanje: 5 godina (3 godine za maloljetne)
- Naknada za jednostrani raskid (FIFA RSTP čl. 17)
DISCIPLINSKE MJERE:
- Žuti karton — automatska zabrana 1 utakmica nakon 4 žuta
- Crveni karton — automatska zabrana 1+ utakmica
- Disciplinski sud HNS — dodatne sankcije
SUSPENZIJE I PRIGOVORI:
- Igrač ima pravo na žalbu (HNS arbitražno tijelo)
- Konačna instanca: CAS (Lausanne) za međunarodne sporove''',
},
{
'title': 'Pravilnik o kriterijima za vrednovanje programa JPS PGŽ',
'kratak_opis': 'PGŽ Zajednica sportova kriteriji za vrednovanje i odabir programa javnih potreba u sportu.',
'vrsta': 'pravilnik', 'razina': 'PGZ', 'organizacija': 'Zajednica sportova PGŽ', 'sport': None,
'sluzbeni_glasnik': None,
'izvor_url': 'https://www.pgz.hr/sport/kriteriji',
'kljucne_rijeci': ['kriteriji','vrednovanje','PGŽ','JPS','klub','savez','financiranje'],
'izdano_datum': '2024-01-01',
'sadrzaj': '''PRAVILNIK O KRITERIJIMA ZA VREDNOVANJE I ODABIR PROGRAMA JPS PGŽ
Sukladno Zakonu o sportu i Statutu PGŽ, Zajednica sportova PGŽ raspoređuje sredstva javnih potreba u sportu (JPS) prema sljedećim kriterijima:
PROGRAMI KOJI SE FINANCIRAJU:
1) Sport djece, mladih i studenata (selekcije, škole sporta)
2) Vrhunski sport (vrhunski sportaši I-V kategorije)
3) Sport osoba s invaliditetom (parasport)
4) Sport za sve (rekreativni)
5) Sportske manifestacije i natjecanja
6) Stručno obrazovanje u sportu
7) Sportska infrastruktura (oprema, manje investicije)
8) Antidoping aktivnosti
KRITERIJI VREDNOVANJA (BODOVI):
A) Sportski rezultati (40%):
- Olimpijski sport vs. neolimpijski (15 vs 10 bodova bazni)
- Rezultati u kategorijama (PGŽ, RH, EU, SP)
- Rang nacionalne selekcije (1.-3. liga)
- Broj reprezentativaca
B) Masovnost (25%):
- Broj registriranih sportaša po kategorijama
- Broj djece u školama sporta
- Broj sudionika u natjecanjima
C) Stručni kadar (15%):
- Broj licenciranih trenera (po HOO kategorijama)
- Broj licenciranih sudaca
- Kvalifikacije (osnovni, viši, vrhunski)
D) Tradicija i razvoj (10%):
- Godina osnivanja kluba/saveza
- Kontinuitet rada
- Razvoj kroz godine
E) Financiranje i transparentnost (10%):
- Vlastiti prihodi (članarine, sponzorstva)
- Suvlasništvo / partnerstva
- Pravovremeni financijski izvještaji
NOSITELJI KVALITETE:
Klubovi koji ispunjavaju POVEĆANE kriterije imaju status "Nositelj kvalitete u sportu PGŽ":
- Sudjelovanje u europskim/svjetskim klupskim natjecanjima, ILI
- Najmanje 5 reprezentativaca u jednom razdoblju, ILI
- Vrhunski sportaš I-II kategorije aktivan u klubu
Status nositelja kvalitete dobiva 30% veće sufinanciranje + nagrade.
POSEBNI ZAHTJEVI:
Sve klubovi/savezi MORAJU:
- Biti registrirani u Registru udruga RH
- Biti članovi Zajednice sportova PGŽ
- Pravodobno predati godišnja financijska izvješća
- Nemati nepodmirena dugovanja prema PGŽ
- Pridržavati se Zakona o sportu i pravilnika nadležnih saveza
POSTUPAK:
1) Javni natječaj (raspisuje ZS PGŽ)
2) Prijave klubovi/savezi (rok 30 dana)
3) Vrednovanje (Stručna komisija)
4) Odluka Skupštine ZS PGŽ
5) Ugovor o sufinanciranju
6) Praćenje i izvještavanje
UVJETI ZA UGOVOR:
- Sredstva se troše IZRAVNO za navedeni program
- Mjesečna ili kvartalna isplata
- Završni izvještaj do 31.3. iduće godine
- Mogući povrat sredstava kod neizvršenja''',
},
]
def main():
conn = psycopg2.connect(**DB); conn.autocommit = True
cu = conn.cursor()
n_added = 0; n_updated = 0; n_skipped = 0
for d in EXPERT_DOCS:
# Check if exists by title pattern (case insensitive)
# Try various match strategies
title_patterns = [
d['title'],
d['title'].split('(')[0].strip(), # without parentheses
]
existing_id = None
for pat in title_patterns:
cu.execute("SELECT id FROM pgz_sport.dokumenti WHERE LOWER(title) = LOWER(%s) OR title ILIKE %s LIMIT 1",
(pat, f"%{pat[:30]}%"))
r = cu.fetchone()
if r:
existing_id = r[0]
break
if existing_id:
# Update with full sadrzaj
cu.execute("""UPDATE pgz_sport.dokumenti
SET sadrzaj=%s, kratak_opis=COALESCE(%s, kratak_opis),
izvor_url=COALESCE(izvor_url, %s),
sluzbeni_glasnik=COALESCE(sluzbeni_glasnik, %s),
kljucne_rijeci=COALESCE(kljucne_rijeci, %s),
izdano_datum=COALESCE(izdano_datum, %s)
WHERE id=%s""",
(d['sadrzaj'], d['kratak_opis'], d['izvor_url'],
d['sluzbeni_glasnik'], d['kljucne_rijeci'], d['izdano_datum'],
existing_id))
n_updated += 1
print(f" ✓ Updated #{existing_id}: {d['title'][:60]}")
else:
# Insert new
cu.execute("""INSERT INTO pgz_sport.dokumenti
(title, kratak_opis, sadrzaj, vrsta, razina, organizacija, sport,
sluzbeni_glasnik, izvor_url, kljucne_rijeci, izdano_datum, aktivan)
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,true)""",
(d['title'], d['kratak_opis'], d['sadrzaj'], d['vrsta'],
d['razina'], d['organizacija'], d['sport'], d['sluzbeni_glasnik'],
d['izvor_url'], d['kljucne_rijeci'], d['izdano_datum']))
n_added += 1
print(f" + Added: {d['title'][:60]}")
print(f"\nAdded: {n_added}, Updated: {n_updated}")
cu.execute("""SELECT count(*) FILTER (WHERE sadrzaj IS NOT NULL AND length(sadrzaj) > 1000) FROM pgz_sport.dokumenti""")
print(f"Dokumenata s full text: {cu.fetchone()[0]}")
cu.execute("SELECT count(*) FROM pgz_sport.dokumenti")
print(f"TOTAL: {cu.fetchone()[0]}")
conn.close()
if __name__ == '__main__':
main()