diff options
Diffstat (limited to 'crop-finder.py')
-rwxr-xr-x | crop-finder.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/crop-finder.py b/crop-finder.py new file mode 100755 index 0000000..7704a88 --- /dev/null +++ b/crop-finder.py @@ -0,0 +1,64 @@ +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() |