Files
CDLDownloader/cdl_downloader/__main__.py

104 lines
3.1 KiB
Python
Raw Normal View History

2026-02-03 02:02:23 +01:00
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
from webdriver_manager.chrome import ChromeDriverManager
from selenium.common.exceptions import NoSuchElementException
import uuid
import os
import sys
import json
import datetime
from argparse import ArgumentParser
parser = ArgumentParser(prog = 'CDLDownloader', description = 'Downloads PDF results files from ewyniki.cdl.pl site')
parser.add_argument('pesel')
parser.add_argument('barcode')
parser.add_argument('--headless', action = 'store_true')
parser.add_argument('--path', default = os.getcwd())
args = parser.parse_args()
id = str(uuid.uuid1())
directory = os.path.join(args.path, id)
options = Options()
if (args.headless):
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_experimental_option("prefs", {"download.default_directory": directory,
'download.prompt_for_download': False,
'plugins.always_open_pdf_externally': True})
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get("https://ewyniki.cdl.pl/kl322-n/index.php?page=logowanie&barcodeLogin=true")
def click(element):
driver.execute_script("arguments[0].click();", element)
2026-02-03 23:21:17 +01:00
2026-02-03 02:02:23 +01:00
barcode_textbox = driver.find_element(By.NAME, "barcode")
pesel_textbox = driver.find_element(By.NAME, "pesel")
submit_button = driver.find_element(By.CLASS_NAME, "loginButton")
barcode_textbox.send_keys(args.barcode)
pesel_textbox.send_keys(args.pesel)
click(submit_button)
while True:
try:
if driver.find_element(By.CLASS_NAME, "error").is_displayed():
print(json.dumps({
"success": False,
}))
sys.exit()
except NoSuchElementException:
pass
try:
if driver.find_element(By.CLASS_NAME, "fa-cloud-download").is_displayed():
break
except NoSuchElementException:
pass
time.sleep(1)
click(driver.find_element(By.CLASS_NAME, "fa-cloud-download"))
result_table_html = None
try:
if driver.find_element(By.CLASS_NAME, "resultTable").is_displayed():
result_table_html = driver.find_element(By.CLASS_NAME, "resultTable").get_attribute('outerHTML')
except:
pass
date_text = driver.find_element(By.CLASS_NAME, "kiedy")
date = date_text.get_attribute('innerHTML')[:-6]
show_document_button = driver.find_element(By.CLASS_NAME, "dokument")
document_href = show_document_button.get_attribute('href')
os.system("mkdir " + directory)
driver.get(document_href)
while True:
if len(os.listdir(directory)) == 1 and os.listdir(directory)[0].endswith('.pdf'):
break
time.sleep(1)
file_path = os.listdir(directory)[0]
print(json.dumps({
"success": True,
"id": id,
"fileName": file_path,
"formattedDate": datetime.datetime.strptime(date, "%d-%m-%Y").strftime("%Y.%m.%d"),
"resultTableHTML": result_table_html,
}))
2026-02-03 22:36:41 +01:00
sys.exit()