ref: split program into classes

This commit is contained in:
2025-06-29 13:38:37 +03:00
parent 2b529b1448
commit 384769dbce
5 changed files with 186 additions and 109 deletions

57
main.py
View File

@@ -1,54 +1,5 @@
import math
import random
from io import BytesIO
from time import sleep
from autopilot import RandomPilot
from simulator import Simulator
import selenium
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from random_pilot import RandomPilot
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(2)
html = driver.find_element(By.TAG_NAME, 'html')
canvas = driver.find_element(By.TAG_NAME, 'canvas')
action = ActionChains(driver)
# Закрытие левой панели
action.click(driver.find_element(By.CLASS_NAME, 'sidebar-toggle-button'))
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.perform()
# Режим спутника
action.click(driver.find_element(By.CLASS_NAME, '_key_satellite'))
action.perform()
randomPilot = RandomPilot(100)
for i in range(100):
# Сдвиг камеры
action = ActionChains(driver)
action.move_to_element_with_offset(html, 200, 200)
action.click_and_hold()
dx, dy = randomPilot.step()
action.move_by_offset(-dx, dy)
action.release()
action.perform()
# Загрузка скриншота
png = driver.get_screenshot_as_png()
im = Image.open(BytesIO(png))
im = im.crop([0, 80, im.width-80, im.height-60])
im.save(f"./images/{i}.png")
sleep(0.25)
print("last position: ", driver.current_url)
simulator = Simulator(RandomPilot(), RandomPilot())
simulator.loop()