-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmap-scrapper.py
64 lines (50 loc) · 1.56 KB
/
map-scrapper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Import packages
import os
import time
from PIL import Image
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Browser driver location
CHROMEDRIVER_PATH = '/usr/local/bin/chromedriver'
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH)
# Define parameters
map_resolution = "huge"
show_icons = False
seed = 0
# Open mapgen2
driver.get("https://www.redblobgames.com/maps/mapgen2/embed.html#seed=" + str(seed) + "&size=" + map_resolution + "&noisy-fills=true&noisy-edges=true&lighting=true")
# Configure
driver.find_element_by_xpath('//*[@id="size-' + map_resolution + '"]').click()
driver.find_element_by_id('seed').clear()
driver.find_element_by_id('seed').send_keys(str(seed))
if not show_icons:
driver.find_element_by_xpath('//*[@id="icons"]').click()
# Wait for refresh
time.sleep(1)
# Loop
while True:
# Find map
element = driver.find_element_by_id("map")
location = element.location
size = element.size
# Get size
x = location['x']
y = location['y']
width = location['x'] + size['width']
height = location['y'] + size['height']
# Screenshot
driver.save_screenshot("temp.png")
# Crop
im = Image.open("temp.png")
im = im.crop((int(x), int(y), int(width), int(height)))
# Resize
im = im.resize((512, 512))
# Save
im.save('dataset/' + str(seed) + '.png')
# Next seed
driver.find_elements_by_xpath('//*[@id="ui"]/div[2]/div[1]/button[2]')[0].click()
# Wait for refresh
time.sleep(1)
seed = seed + 1
driver.close()
os.remove("temp.png")