From a43e56cef3d796d95287131ce7fba634cf22eaf8 Mon Sep 17 00:00:00 2001 From: russian_proger Date: Tue, 15 Apr 2025 12:06:13 +0300 Subject: [PATCH] first commit: load yandex maps and simple random pilot --- main.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..d0fe6b1 --- /dev/null +++ b/main.py @@ -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) \ No newline at end of file