This commit is contained in:
2026-04-21 10:41:29 +02:00
parent fa201467ad
commit 8481a1b6f1
21 changed files with 115 additions and 30 deletions
@@ -22,7 +22,7 @@ CHROME_PROFILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "chrome
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "vzp_cookies.json"))
# Issuer CN certifikátu v Windows store (CurrentUser\My)
CERT_ISSUER_CN = "I.CA EU Qualified CA2/RSA 06/2022"
CERT_ISSUER_CN = "I.CA Public CA/RSA 06/2022"
def _set_chrome_cert_policy() -> None:
@@ -96,14 +96,21 @@ def main() -> None:
print(f"Navigace: {e}")
if page.url.startswith("https://auth.vzp.cz/signin"):
print("Přihlašovací stránka — klikám na 'Certifikát' (Chrome auto-vybere)...")
print("Přihlašovací stránka — klikám na 'Certifikát'...")
cert_btn = page.locator("a, button").filter(has_text=re.compile(r"certifikát", re.I)).first
cert_btn.wait_for(state="visible", timeout=10_000)
cert_btn.click(no_wait_after=True)
# Chrome auto-vybere certifikát díky politice — čekáme jen na přesměrování
print()
print("=" * 60)
print(" Pokud se zobrazil dialog výběru certifikátu,")
print(" vyberte certifikát MUDr. Buzalkové a klikněte OK.")
print(" Čekám 60 sekund...")
print("=" * 60)
# Čekáme na přesměrování — buď auto-výběr přes politiku, nebo ruční klik
try:
page.wait_for_url("https://point.vzp.cz/**", timeout=30_000)
page.wait_for_url("https://point.vzp.cz/**", timeout=60_000)
except Exception:
print(f" Timeout čekání na přesměrování. URL: {page.url}")
@@ -14,10 +14,13 @@ import winreg
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
INBOX_URL = "https://point.vzp.cz/Inbox/Message"
CHROME_PROFILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "chrome_profile"))
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "vzp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "111 VZP")
def load_cookies(context) -> int:
@@ -15,10 +15,13 @@ import winreg
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
INBOX_URL = "https://point.vzp.cz/Inbox/Message"
CHROME_PROFILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "chrome_profile"))
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "vzp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "111 VZP")
def load_cookies(context) -> int:
@@ -14,6 +14,8 @@ import winreg
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
LOGIN_URL = "https://portal.vozp.cz/app/prihlaseni"
BASE_URL = "https://portal.vozp.cz"
@@ -22,7 +24,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
CHROME_PROFILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "chrome_profile"))
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "vozp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "201 VoZP")
# Všechny schránky — ID-segment : zobrazovaný název
SCHRANKY = {
@@ -253,6 +255,7 @@ def main() -> None:
ignore_https_errors=True,
args=["--force-renderer-accessibility"],
)
logged_in = False
try:
loaded = load_cookies(context)
print(f"Cookies načtené z JSON: {loaded}")
@@ -262,6 +265,7 @@ def main() -> None:
if not ensure_logged_in(page, context):
return
logged_in = True
already = set(os.listdir(DOWNLOAD_DIR))
print(f"V archivu: {len(already)} souborů.\n")
@@ -279,6 +283,7 @@ def main() -> None:
print(f"Hotovo. Celkem staženo: {total_dl}, přeskočeno: {total_skip}")
finally:
if logged_in:
saved = save_cookies(context)
print(f"Uloženo {saved} VoZP cookies.")
context.close()
@@ -17,6 +17,9 @@ from pathlib import Path
import requests as req
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
LOGIN_URL = "https://portal.vozp.cz/app/prihlaseni"
BASE_URL = "https://portal.vozp.cz"
INBOX_URL = f"{BASE_URL}/app/prehled-zprav-ve-schrankach"
@@ -24,7 +27,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
CHROME_PROFILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "chrome_profile"))
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "vozp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "201 VoZP")
SCHRANKY = {
"171-schranka-poskytovatele-zdravotnich-sluzeb": "Schránka PZS",
@@ -264,6 +267,7 @@ def main() -> None:
ignore_https_errors=True,
args=["--force-renderer-accessibility"],
)
logged_in = False
try:
loaded = load_cookies(context)
print(f"Cookies načtené z JSON: {loaded}")
@@ -273,6 +277,7 @@ def main() -> None:
if not ensure_logged_in(page, context):
return
logged_in = True
session = make_requests_session(context)
already = set(os.listdir(DOWNLOAD_DIR))
print(f"V archivu: {len(already)} souborů.\n")
@@ -289,6 +294,7 @@ def main() -> None:
print(f"Hotovo. Celkem nových souborů: {total_dl}")
finally:
if logged_in:
saved = save_cookies(context)
print(f"Uloženo {saved} VoZP cookies.")
context.close()
@@ -0,0 +1,35 @@
"""
Přihlásí se na portál VoZP a stáhne nové zprávy.
Kombinuje 01_prihlaseni.py + 03_stahuj_nove.py do jednoho spuštění.
POUŽITÍ:
python 04_prihlaseni_a_stahuj_nove.py
"""
import subprocess
import sys
import os
DIR = os.path.dirname(os.path.abspath(__file__))
def run(script: str) -> None:
result = subprocess.run(
[sys.executable, os.path.join(DIR, script)],
check=False,
)
if result.returncode != 0:
raise SystemExit(f"Skript {script} skončil s chybou (kód {result.returncode})")
def main() -> None:
print("=== Přihlášení ===")
run("01_prihlaseni.py")
print("\n=== Stahování nových zpráv ===")
run("03_stahuj_nove.py")
if __name__ == "__main__":
main()
@@ -17,14 +17,18 @@ import glob
import os
import re
import json
import sys
import time
import requests
from bs4 import BeautifulSoup
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.cpzp.cz"
COOKIES_FILE = os.path.join(os.path.dirname(__file__), "cpzp_cookies.json")
STAZENO_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
STAZENO_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "205 ČPZP")
SCHRANKY = [
("/app/schranka/", "Schránka klienta"),
@@ -16,14 +16,18 @@ import glob
import os
import re
import json
import sys
import time
import requests
from bs4 import BeautifulSoup
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.cpzp.cz"
COOKIES_FILE = os.path.join(os.path.dirname(__file__), "cpzp_cookies.json")
STAZENO_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
STAZENO_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "205 ČPZP")
SCHRANKY = [
("/app/schranka/", "Schránka klienta"),
@@ -1,7 +1,7 @@
[
{
"name": "PHPSESSID",
"value": "5mbiobj1htd5joflu2fpm480a3",
"value": "lc29778tps9m7n8q15ma30ueg7",
"domain": ".portal.cpzp.cz",
"path": "/",
"expires": -1,
@@ -15,6 +15,8 @@ import time
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.ozp.cz"
INBOX_URL = f"{BASE_URL}/app/prehled-zprav-ve-schrankach"
@@ -22,7 +24,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
PROTOKOL_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-protokol"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "ozp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "207 OZP")
SCHRANKY = {
"7-osobni-schranka-pzs": "Osobní schránka PZS",
@@ -20,6 +20,8 @@ import time
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.ozp.cz"
INBOX_URL = f"{BASE_URL}/app/prehled-zprav-ve-schrankach"
@@ -27,7 +29,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
PROTOKOL_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-protokol"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "ozp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "207 OZP")
SCHRANKY = {
"7-osobni-schranka-pzs": "Osobní schránka PZS",
@@ -1,7 +1,7 @@
[
{
"name": "SID",
"value": "8c2c0ab2e344d74177d4e7866797dd28",
"value": "f077d41bf50be5951d48442a7da4e552",
"domain": ".portal.ozp.cz",
"path": "/",
"expires": -1,
@@ -14,7 +14,7 @@
"value": "CERT",
"domain": ".portal.ozp.cz",
"path": "/",
"expires": 1808281759,
"expires": 1808294135,
"secure": true,
"httpOnly": false,
"sameSite": "Lax"
@@ -15,6 +15,8 @@ import time
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.zpskoda.cz"
INBOX_URL = f"{BASE_URL}/app/prehled-zprav-ve-schrankach"
@@ -22,7 +24,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
PROTOKOL_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-protokol"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "zps_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "209 ZPŠ")
SCHRANKY = {
"17-schranka-poskytovatele-zdravotnich-sluzeb": "Schránka poskytovatele ZS",
@@ -20,6 +20,8 @@ import time
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.zpskoda.cz"
INBOX_URL = f"{BASE_URL}/app/prehled-zprav-ve-schrankach"
@@ -27,7 +29,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
PROTOKOL_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-protokol"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "zps_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "209 ZPŠ")
SCHRANKY = {
"17-schranka-poskytovatele-zdravotnich-sluzeb": "Schránka poskytovatele ZS",
@@ -1,7 +1,7 @@
[
{
"name": "SID",
"value": "e85dcec9acf6345f151cd5996be23576",
"value": "1a46dee764bc4ee10df8cec58d613d73",
"domain": ".portal.zpskoda.cz",
"path": "/",
"expires": -1,
@@ -14,7 +14,7 @@
"value": "CERT",
"domain": ".portal.zpskoda.cz",
"path": "/",
"expires": 1808281979,
"expires": 1808293936,
"secure": true,
"httpOnly": false,
"sameSite": "Lax"
@@ -24,12 +24,15 @@ import sys
import time
from datetime import datetime
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://eforms.zpmvcr.cz"
ZPRAVY_URL = f"{BASE_URL}/eforms/smluvni_zdravotnicke_zarizeni/dokumenty_ke_stazeni/zuctovaci_zprava"
AVIZA_URL = f"{BASE_URL}/eforms/smluvni_zdravotnicke_zarizeni/dokumenty_ke_stazeni/aviza"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "zpmvcr_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "211 ZPMVČR")
# Konfigurace sekcí — sloupce se liší podle stránky:
# Zúčtovací zprávy: IČ | VarSymb | IntČ | Typ | Velikost | Období | Pobočka | Staženo
@@ -15,12 +15,15 @@ import sys
import time
from datetime import datetime
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://eforms.zpmvcr.cz"
ZPRAVY_URL = f"{BASE_URL}/eforms/smluvni_zdravotnicke_zarizeni/dokumenty_ke_stazeni/zuctovaci_zprava"
AVIZA_URL = f"{BASE_URL}/eforms/smluvni_zdravotnicke_zarizeni/dokumenty_ke_stazeni/aviza"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "zpmvcr_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "211 ZPMVČR")
SEKCE = [
{
@@ -1,7 +1,7 @@
[
{
"name": "JSESSIONID",
"value": "C487947972DEE36DF5C80FA2F0A328CD",
"value": "986E97E345F64457688B96ED87F7AAB4",
"domain": ".eforms.zpmvcr.cz",
"path": "/eforms",
"expires": -1,
@@ -15,6 +15,8 @@ import time
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.rbp-zp.cz"
INBOX_URL = f"{BASE_URL}/app/prehled-zprav-ve-schrankach"
@@ -22,7 +24,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
PROTOKOL_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-protokol"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "rbp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "213 RBP")
SCHRANKY = {
"31-schranka-vyuctovani": "Schránka vyúčtování",
@@ -20,6 +20,8 @@ import time
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.najdi_dropbox import get_dropbox_root
BASE_URL = "https://portal.rbp-zp.cz"
INBOX_URL = f"{BASE_URL}/app/prehled-zprav-ve-schrankach"
@@ -27,7 +29,7 @@ DOWNLOAD_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-prilohu"
PROTOKOL_URL = f"{BASE_URL}/html/prehled-zprav-ve-schrankach/zobrazit-protokol"
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "rbp_cookies.json"))
DOWNLOAD_DIR = os.path.join(os.path.dirname(__file__), "Staženo")
DOWNLOAD_DIR = os.path.join(get_dropbox_root(), "Ordinace", "Dokumentace_ke_zpracování", "Zúčtovací zprávy", "213 RBP")
SCHRANKY = {
"31-schranka-vyuctovani": "Schránka vyúčtování",
@@ -1,7 +1,7 @@
[
{
"name": "SID",
"value": "58777dbd1ed8edded39575edb310c5c8",
"value": "218504a78b275bd7215901918db317b7",
"domain": ".portal.rbp-zp.cz",
"path": "/",
"expires": -1,
@@ -14,7 +14,7 @@
"value": "CERT",
"domain": ".portal.rbp-zp.cz",
"path": "/",
"expires": 1808282104,
"expires": 1808293825,
"secure": true,
"httpOnly": false,
"sameSite": "Lax"