Skip to content

joudar11/registrator_zavodu_2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

376 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Automatická registrace na LOS závod

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.

Součástí je:

  • Automatická kontrola verze a pripadné spuštění aktualizace

Časovaná registrace (main.py)

  • 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í"!

Registrace na plný závod (plny_zavod.py)

  • 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.

Analýza konkurence (konkurence.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.

Kontrola zveřejněných výsledků (vysledky_zverejneny.py)

  • 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.

📦 Požadavky

  • 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.py s 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.py k 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 protokolem

▶️ Instalace a spuštění - Windows

Prvotní instalace před spuštěním:

Př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.py

🏁 Použití po instalaci:

Vytvoření konfigurace:

Přejmenuj soubor data_sample.py na data.py (toto automaticky dělá instalační skript install.bat) a vyplň ho.

Pokud registrace ještě nezačala:

  • 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

Pokud registrace běží, ale závod je plný:

  • 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

Pokud závod ještě nebyl vyhlášen, registrace už je spuštěna a závodník chce analýzu konkurence:

  • 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.)

Pokud závod již skončil a čekáš na výsledky:

  • 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.py

Aktualizace na poslední verzi

git fetch --all
git reset --hard HEAD
git pull

nebo spuštěním souboru update.bat

▶️ Instalace a spuštění - Linux

Prvotní instalace před spuštěním:

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-pip

Stáhni a spusť soubor install.sh příkazem

bash install.sh

pří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

🏁 Použití po instalaci:

Vytvoření konfigurace:

Přejmenuj soubor data_sample.py na data.py (toto automaticky dělá instalační skript install.sh) a vyplň ho.

Pokud registrace ještě nezačala:

  • spustit soubor run.sh příkazem
bash run.sh

Pokud registrace běží, ale závod je plný:

  • spustit soubor plny_zavod.sh příkazem
bash plny_zavod.sh

Pokud závod ještě nebyl vyhlášen, registrace už je spuštěna a závodník chce analýzu konkurence:

  • spustit soubor konkurence.sh pří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.)

Pokud závod již skončil a čekáš na výsledky:

  • spustit soubor vysledky_zverejneny.sh příkazem
bash vysledky_zverejneny.sh

Aktualizace na poslední verzi

git fetch --all
git reset --hard HEAD
git pull

nebo spuštěním souboru update.sh

About

Automatický registrátor na LOS závody, analyzátor konkurence, notifikátor výsledků a hlídač plných závodů

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors