Vylepšený skript, který automaticky provádí registraci na závod LOS Lex pomocí knihovny Playwright. Nevyžaduje žádné zadávání údajů v konzoli – vše si načítá z konfiguračního souboru data.py.
- Automatická kontrola verze a pripadné spuštění aktualizace
- Automatické přihlášení do systému
- Odeslání potvrzovacího e-mailu s .ics událostí
- Notifikace přítelkyni ❤️
- Logování do souboru
- Automatické opakování registrace při selhání (max. 25 pokusů - lze změnit v proměnné "LIMIT" v main.py)
- Pokud zvolená divize nebyla v závodě otevřena, skript automaticky zvolí první možnou. Závodník tak nepřijde o místo a následně registraci může upravit.
- Pokud je zvolený squad plný, skript automaticky zkusí zvolit první volný squad v rozsahu 1 - 100.
- Ošetření většiny možných chyb od neodpovídajícího serveru po selhání emailového serveru - skript je možno nechat běžet bez dohledu a neselže.
- Automatické načítání informací o stavu registrace, případně datu jejího spuštění.
- Pozor - skript předpokládá, že závodník je držitelem zbrojního oprávnění a automaticky zaškrtává při registraci pole "Držitel zbrojního oprávnění"!
- Pokud závodník prosral začátek registrace a závod je plný, lze spustit soubor plny_zavod.py, který každých 30 minut kontroluje obsazenost a v případě volného místa spouští registrační skript
main.py.
- Pokud si závodník chce vyjet konkurenci a zhodnotit svoje šance na úspěch, lze spustit skript konkurence.py.
- Skript vytváří a rovnou otevírá .html přehled závodníků, kteří jsou na zvolený závod registrováni ve stejné divizi.
-
- Tito jsou seřazeni dle jejich průměrné procentuální úspěšnosti v poháru (Celkový součet procentních výsledků VŠECH závodů děleno počet těchto závodů - skript bere v potaz i závody, které se závodníkovi do poháru nepočítají, neboť jsou přes limit počítaných závodů).
- Závodník je vyznačen oranžově, konkurenční závodník, který je na prvním místě poháru, je vyznačen červeně.
- Data si skript bere vždy z aktuálního poháru a vypisuje ještě 2 předešlé poháry.
- Výstupem je .html přehled. Vzor je v souboru konkurence_sample.html.
- Pokud existuje soubor
ftp_konkurence.py, skript automaticky nahraje přehled na FTP a otevře jeho umístění na webu.
- Ideální ke spuštění na závodě při čekání na zveřejnění výsledků.
- Skript závodníka upozorní emailem, že byly zveřejněny výsledky.
- Kontrola každých 10 sekund.
- Python 3.12.6
- playwright
- Běžící Proton Bridge, nakonfigurovaný Proton token, nebo Gmail účet se specifickým Google App Password (lze nastavit zde)
- Konfigurační soubor
data.pys následujícím obsahem:
JMENO = "Jan Novák"
# Celé jméno závodníka
CISLO_DOKLADU = "123456789"
# Číslo OP/EZP
CLENSKE_ID = "ABcdEfGh"
# LEX ID (volitelné - pokud nemáš, napiš None)
# CLENSKE_ID = None
DIVIZE = "Pistole"
# Název divize přesně dle výběru na webu (v drop down menu u registrace)
# DIVIZE = "Optik/Pistole"
URL = "https://www.loslex.cz/contest/292"
# URL konkrétního závodu
LOGIN = "jan.novak"
# Email pro přihlášení i notifikace
HESLO = "tajneheslo123"
# Heslo do systému LOS Lex
SQUAD = 1
# Číslo squadu, nebo r (v uvozovkách pro squad ROZHODČÍ)
EMAIL_P = "tajneheslo123"
# Proton Bridge nebo Gmail heslo pro SMTP
EMAIL_U = "jan.novak@pm.me"
# Proton Bridge nebo Gmail username odesílatele
MZ = False
# Mimo závod
ZACATECNIK = False
# Začátečník
STAVITEL = False
# Stavitel
ROZHODCI = False
# Rozhodčí
POZNAMKA = "..."
# Poznámka (volitelné) - Může být None
# POZNAMKA = None
PRITELKYNE = "jana.novakova@pm.me"
# Email přítelkyně (None, pokud jsi single)
# PRITELKYNE = None
JMENO_PRITELKYNE = "Jana"
# Křestní jméno přítelkyně v prvním pádu
# Pokud je přítelkyně None, nepoužívá se
RANDOM_WAIT = False
# Zda má skript před odesláním registrace čekat náhodný počet sekund mezi 2 a 3, aby registrace vypadala věrohodněji
INTERVAL = 1800
# V jakém intervalu v sekundách se má kontrolovat volné místo na plném závodě (s tímto údajem se pracuje pouze v plny_zavod.py)
EMAIL_PROVIDER = "PROTON"
# Poskytovatel emailových služeb. Možnosti jsou buď "PROTON" (S nainstalovaným Proton Bridge), "PROTON-TOKEN" (S nakonfigurovaným tokenem pro Proton mail), nebo "GMAIL" (S specifickým Google apps password)- Volitelně konfigurační soubor
ftp_konkurence.pyk nahrání souborů na FTP:
host=r"255.255.255.255" #FTPS host
username=r"username" #FTPS username
password=r"T@jneHeSl0" #FTPS heslo
remote_dir=r"/domena.cz/web/public/prehledy" #FTPS složka, kam nahrát skript
visit=r"https://domena.cz/public/prehledy/" #URL ke složce, kam se nahrává - tato cesta musí být přístupná http nebo https protokolemPřed tímto krokem je nutné mít nainstalovaný Python a Git.
Spusť v příkazovém řádku následující příkazy, nebo si stáhni a spusť install.bat.
(Pro instalaci a spouštění bez virtuálního prostředí použij soubory s příponou _GLOBAL.)
Registrátor se ti nainstaluje do C:\Users\TVUJ_USERNAME\AppData\Roaming
cd %appdata%
git clone https://github.com/joudar11/registrator_zavodu_2
cd ./registrator_zavodu_2
python -m venv .venv
set VIRTUAL_ENV_DISABLE_PROMPT=
call .venv\Scripts\activate.bat
python -m pip install --upgrade pip
pip install -r requirements.txt
playwright install
if exist data_sample.py ren data_sample.py data.pyPřejmenuj soubor data_sample.py na data.py (toto automaticky dělá instalační skript install.bat) a vyplň ho.
- spustit soubor
run.bat(doporučeno) - nebo (pokud nepracuješ v okně, kde jsi prováděl instalaci):
.venv\Scripts\Activate.ps1
python main.py- Pokud pracuješ v okně, kde jsi prováděl instalaci, stačí:
python main.py- spustit soubor
plny_zavod.bat(doporučeno) - nebo (pokud nepracuješ v okně, kde jsi prováděl instalaci):
.venv\Scripts\Activate.ps1
python plny_zavod.py- Pokud pracuješ v okně, kde jsi prováděl instalaci, stačí:
python plny_zavod.py- spustit soubor
konkurence.bat(doporučeno) - nebo (pokud nepracuješ v okně, kde jsi prováděl instalaci):
.venv\Scripts\Activate.ps1
python konkurence.py- Pokud pracuješ v okně, kde jsi prováděl instalaci, stačí:
python konkurence.py- Je možné spustit s argumenty JMÉNO DIVIZE URL pro přepsání dat o závodě a závodníkovi v souboru
data.py. I zde je však potřeba mít vyplněný soubor data.py, aby se skript mohl na webu LOSu přihlásit a zobrazit si celá jména.
např:
python konkurence.py "Jan Novák" "Pistole" "https://www.loslex.cz/contest/313"(Skrtipt konkurence.py podporuje divize Pi, Opt a PDW. Ostatní divize autor jakožto zbytečné neuznává, proto jejich podpora nebude nikdy implementována.)
- spustit soubor
vysledky_zverejneny.bat(doporučeno) - nebo (pokud nepracuješ v okně, kde jsi prováděl instalaci):
.venv\Scripts\Activate.ps1
python vysledky_zverejneny.py- Pokud pracuješ v okně, kde jsi prováděl instalaci, stačí:
python vysledky_zverejneny.pygit fetch --all
git reset --hard HEAD
git pullnebo spuštěním souboru update.bat
Před tímto krokem je nutné mít nainstalovaný Python a Git. Toto provedeš následujícími příkazy v terminálu:
sudo apt update
sudo apt install -y git python3 python3-venv python3-pipStáhni a spusť soubor install.sh příkazem
bash install.shpřípadně jednoduše tímto příkazem rovnou instaluj:
curl -fsSL https://los.krystofklika.cz/install.sh | bash
Registrátor se ti nainstaluje do
/home/USER/Documents
Přejmenuj soubor data_sample.py na data.py (toto automaticky dělá instalační skript install.sh) a vyplň ho.
- spustit soubor
run.shpříkazem
bash run.sh- spustit soubor
plny_zavod.shpříkazem
bash plny_zavod.sh- spustit soubor
konkurence.shpříkazem
bash konkurence.sh- Je možné spustit s argumenty JMÉNO DIVIZE URL pro přepsání dat o závodě a závodníkovi v souboru
data.py. I zde je však potřeba mít vyplněný soubor data.py, aby se skript mohl na webu LOSu přihlásit a zobrazit si celá jména.
např:
python3 konkurence.py "Jan Novák" "Pistole" "https://www.loslex.cz/contest/313"(Skrtipt konkurence.py podporuje divize Pi, Opt a PDW. Ostatní divize autor jakožto zbytečné neuznává, proto jejich podpora nebude nikdy implementována.)
- spustit soubor
vysledky_zverejneny.shpříkazem
bash vysledky_zverejneny.shgit fetch --all
git reset --hard HEAD
git pullnebo spuštěním souboru update.sh