diff --git a/examples.py b/examples.py deleted file mode 100644 index dda898e..0000000 --- a/examples.py +++ /dev/null @@ -1,122 +0,0 @@ -from srgweb.triton import ( - triton_session, - list_programs, - get_program, - list_baskets, - get_basket -) -import keyring - -# login to triton -sess = triton_session("uskov", keyring.get_password("PLAN_SRG", "")) -# list available programs -programs = list_programs(sess) -# download program SRGA -df = get_program(sess, program="SRGA")s -# list available baskets -baskets = list_baskets(sess) -# download basket ART-XC agns -df_basket = get_basket(sess, basket='ART-XC agns') - - - - -# Publications - -from srgweb.publications import get_df_from_srg_papers - -df = get_df_from_srg_papers() - -from srgweb.artsurvey import ( - artsurvey_session, - get_artsurvey_cat -) -import keyring -sess = artsurvey_session( - "uskov", - keyring.get_password("SRG_ARTSURVEY", ""), - base_url="http://10.5.2.25/" -) - -base_url = sess.base_url -settings_url = f"{base_url.rstrip('/')}/artsurvey" - -resp = sess.get(settings_url) -from bs4 import BeautifulSoup -soup = BeautifulSoup(resp.text, "html.parser") - -form = soup.find("form") - - -select = form.find("select", {"id": "id_survey"}) - - -survey_options = { - option.text.strip(): option.get("value") - for option in select.find_all("option") - if option.get("value") -} - - -# 3. Объединяем параметры -params = {**default_artsurvey_settings(), **{}} -params["survey"] = survey_options['S1-5v12345.12'] - -# 4. Подготовка payload (фильтры, которые реально присутствуют в форме) -from bs4 import BeautifulSoup, Tag -import requests - -def build_payload(form: Tag, overrides: dict[str, str]) -> dict[str, str]: - """ - Собирает payload **из всех** полей формы + перекрывает overrides. - Поведение 1-в-1 как rvest::html_form_set(). - """ - payload: dict[str, str] = {} - - for el in form.find_all(["input", "select", "textarea"]): - name = el.get("name") - if not name: - continue - - tag_type = el.get("type", "").lower() - value: str - - # --- SELECT ------------------------------------------------- - if el.name == "select": - selected = el.find("option", selected=True) - value = selected.get("value") if selected else el.find("option").get("value", "") - - # --- CHECKBOX / RADIO -------------------------------------- - elif tag_type in {"checkbox", "radio"}: - # rvest кладёт "" для НЕотмеченных чекбоксов - if el.has_attr("checked"): - value = el.get("value", "on") # если нет value, браузеры шлют "on" - else: - value = "" - - # --- TEXT, NUMBER, HIDDEN, и проч. INPUT ------------------- - else: - value = el.get("value", "") - - payload[name] = value - - # Перекрываем пользовательскими значениями - payload.update(overrides) - return payload - -payload = build_payload(form, params) -payload - - - -resp = sess.post( - settings_url, - data=payload, - headers={"Referer": "http://10.5.2.25/login"}, # <- критично -) - -from urllib.parse import urlencode -print(urlencode(payload, doseq=True)) - -resp.raise_for_status() -