From 964929bd909aab3af2a24f298f264bf7e348ba04 Mon Sep 17 00:00:00 2001 From: gman Date: Sun, 25 Jan 2026 20:02:32 +0300 Subject: [PATCH] first commit --- .gitignore | 13 ++++++++++ .python-version | 1 + main.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 10 +++++++ 4 files changed, 93 insertions(+) create mode 100644 .gitignore create mode 100644 .python-version create mode 100644 main.py create mode 100644 pyproject.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2cd001 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Python-generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# Virtual environments +.venv + +# Development notebook +dev.ipynb diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..2c07333 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.11 diff --git a/main.py b/main.py new file mode 100644 index 0000000..8c8bb4f --- /dev/null +++ b/main.py @@ -0,0 +1,69 @@ +import json +from typing import TypedDict + +from botasaurus.browser import Driver, browser +from botasaurus.request import Request, request +from fastapi import FastAPI + + +class Coordinates(TypedDict): + longitude: float + latitude: float + + +@browser(headless=True, output=None) +def get_ozon(driver: Driver, data: Coordinates) -> dict: + # 55.73475686704202 + # 37.58319787710864 + longitude = data["longitude"] + latitude = data["latitude"] + driver.get( + f"https://pvz-map.ozon.ru/api/task/creation-availability?location.lat={latitude}&location.lon={longitude}" + ) + driver.short_random_sleep() + page_json = json.loads(driver.page_text) + return page_json + + +@request(output=None) +def get_wb(request: Request, data: Coordinates) -> dict: + # 55.73475686704202 + # 37.58319787710864 + longitude = data["longitude"] + latitude = data["latitude"] + response = request.get( + f"https://pvz-map-backend.wildberries.ru/api/v2/map/check-point?point.latitude={latitude}&point.longitude={longitude}" + ) + return response.json() + + +@request(output=None) +def get_yandex(request: Request, data: Coordinates) -> dict: + # 55.73475686704202 + # 37.58319787710864 + longitude = data["longitude"] + latitude = data["latitude"] + response = request.get( + f"https://hubs.market.yandex.ru/api/partner-gateway/outlet-map/point-available?lat={latitude}&lng={longitude}" + ) + return response.json() + + +app = FastAPI() + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/check") +def check_point(longitude: float, latitude: float): + + ozon_response = get_ozon(data={"longitude": longitude, "latitude": latitude}) + + wb_response = get_wb(data={"longitude": longitude, "latitude": latitude}) + + yandex_response = get_yandex(data={"longitude": longitude, "latitude": latitude}) + + return {"y": yandex_response, "o": ozon_response, "w": wb_response} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..378655c --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,10 @@ +[project] +name = "point-listener" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.11" +dependencies = [ + "botasaurus>=4.0.97", + "fastapi[standard]>=0.128.0", +]