Remove examples.py from repository
This commit is contained in:
parent
320595a948
commit
39f4e9bf6c
122
examples.py
122
examples.py
@ -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()
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user