36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
from playwright.sync_api import sync_playwright
|
|
|
|
|
|
def get_book_medianr(signature: str, semesterapparat_nr: int, auth: tuple) -> str:
|
|
with sync_playwright() as playwright:
|
|
browser = playwright.chromium.launch(headless=True)
|
|
context = browser.new_context()
|
|
page = context.new_page()
|
|
page.goto(
|
|
"https://bsz.ibs-bw.de:22998/aDISWeb/app?service=direct/0/Home/$DirectLink&sp=SDAP42"
|
|
)
|
|
page.get_by_role("textbox", name="Benutzer").fill(auth[0])
|
|
page.get_by_role("textbox", name="Benutzer").press("Tab")
|
|
page.get_by_role("textbox", name="Kennwort").fill(auth[1])
|
|
page.get_by_role("textbox", name="Kennwort").press("Enter")
|
|
page.get_by_role("button", name="Katalog").click()
|
|
page.get_by_role("textbox", name="Signatur").click()
|
|
page.get_by_role("textbox", name="Signatur").fill(signature)
|
|
page.get_by_role("textbox", name="Signatur").press("Enter")
|
|
book_list = page.locator("iframe").content_frame.get_by_role(
|
|
"cell", name="Bibliothek der Pädagogischen"
|
|
)
|
|
# this will always find one result, we need to split the resulting text based on the entries that start with "* "
|
|
book_entries = book_list.inner_text().split("\n")
|
|
books = []
|
|
for entry in book_entries:
|
|
if entry.startswith("* "):
|
|
books.append(entry)
|
|
for book in books:
|
|
if f"Semesterapparat: {semesterapparat_nr}" in book:
|
|
return book.split("* ")[1].split(":")[0]
|
|
|
|
# ---------------------
|
|
context.close()
|
|
browser.close()
|