import csv import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from dotenv import load_dotenv load_dotenv() USERNAME = os.getenv("TRAVIAN_USERNAME") PASSWORD = os.getenv("TRAVIAN_PASSWORD") SERVER_URL = os.getenv("TRAVIAN_SERVER") if not USERNAME or not PASSWORD or not SERVER: print("Ошибка: Не удалось загрузить переменные окружения TRAVIAN_USERNAME, TRAVIAN_PASSWORD, TRAVIAN_SERVER") sys.exit(1) CENTER_X = -125 CENTER_Y = -18 RADIUS = 20 # === НАЧАЛО === driver = webdriver.Chrome() driver.get(f"{SERVER_URL}/login.php") # Логин driver.find_element(By.NAME, "name").send_keys(USERNAME) driver.find_element(By.NAME, "password").send_keys(PASSWORD) time.sleep(1) # Находим кнопку по тексту "Login" и нажимаем buttons = driver.find_elements(by=By.CSS_SELECTOR, value='button[type="submit"]') buttons[0].click() time.sleep(5) def in_radius(x1, y1, x2, y2, r): return ((x1 - x2)**2 + (y1 - y2)**2)**0.5 <= r tiles = [] # Проходим по диапазону клеток for dx in range(CENTER_X - RADIUS, CENTER_X + RADIUS + 1): for dy in range(CENTER_Y - RADIUS, CENTER_Y + RADIUS + 1): if not in_radius(CENTER_X, CENTER_Y, dx, dy, RADIUS): continue driver.get(f"{SERVER_URL}/karte.php?x={dx}&y={dy}") try: title = driver.find_element(by=By.CLASS_NAME, value="titleInHeader").text if "Покинутая долина" in title: info = driver.find_element(By.ID, "distribution") trs = info.find_elements(by=By.TAG_NAME, value="tr") for tr in trs: desc = tr.find_element(by=By.CLASS_NAME, value="desc").text val = tr.find_element(by=By.CLASS_NAME, value="val").text if desc == "Ферм" and (int(val) == 9 or int(val) == 15): print(f"{dx} {dy}, {desc} {val}") except: continue time.sleep(0.5) driver.quit()