summaryrefslogtreecommitdiff
path: root/crop-finder.py
diff options
context:
space:
mode:
authorDmitrii Morozov <snoopdesigns@gmail.com>2025-06-01 22:04:06 +0200
committerDmitrii Morozov <snoopdesigns@gmail.com>2025-06-01 22:04:06 +0200
commit15e171ee3cf667439b8703a70436a3db3f592aba (patch)
tree0d6a5bb091e407064f8357911ac8f7ec58339bbe /crop-finder.py
Initial
Diffstat (limited to 'crop-finder.py')
-rwxr-xr-xcrop-finder.py64
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()