commit
964929bd90
@ -0,0 +1,13 @@
|
||||
# Python-generated files
|
||||
__pycache__/
|
||||
*.py[oc]
|
||||
build/
|
||||
dist/
|
||||
wheels/
|
||||
*.egg-info
|
||||
|
||||
# Virtual environments
|
||||
.venv
|
||||
|
||||
# Development notebook
|
||||
dev.ipynb
|
||||
@ -0,0 +1 @@
|
||||
3.11
|
||||
@ -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}
|
||||
@ -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",
|
||||
]
|
||||
Loading…
Reference in new issue