first commit: load yandex maps and simple random pilot

This commit is contained in:
2025-04-15 12:06:13 +03:00
commit a43e56cef3

61
main.py Normal file
View File

@@ -0,0 +1,61 @@
import math
import random
from time import sleep
from selenium import webdriver
import selenium
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options)
driver.get("https://yandex.ru/maps/43/kazan/?ll=49.103814%2C55.794258&z=14")
sleep(5)
html = driver.find_element(By.TAG_NAME, 'html')
action = ActionChains(driver)
# Закрытие левой панели
action.click(driver.find_element(By.CLASS_NAME, 'sidebar-toggle-button'))
action.pause(0.2)
action.move_to_element_with_offset(driver.find_element(By.XPATH, "//div[@class='rounded-controls']/div[@class='rounded-controls__child'][5]//button"), 5, 5)
action.pause(0.2)
action.perform()
# Режим спутника
action.click(driver.find_element(By.CLASS_NAME, '_key_satellite'))
action.pause(0.2)
action.perform()
class RandomPilot():
angle: float
def __init__(self):
self.dangle = 0
self.angle = random.random() * math.pi * 2
self.velocity = 50
def step(self) -> tuple[float, float]:
# Поворот угла траектории
self.dangle += (random.random() - 0.5) * 0.1
self.dangle = max(min(self.dangle, 0.2), -0.2)
self.angle += self.dangle
dx = math.cos(self.angle) * self.velocity
dy = math.sin(self.angle) * self.velocity
return dx, dy
randomPilot = RandomPilot()
while True:
# Сдвиг камеры
action = ActionChains(driver)
action.move_to_element_with_offset(html, 200, 200)
action.click_and_hold()
action.move_by_offset(*randomPilot.step())
action.release()
action.perform()
sleep(0.5)