Hellswipers/game/gems/get_data.py

58 lines
1.5 KiB
Python
Raw Normal View History

2024-03-14 17:39:20 +00:00
import requests
import bs4
import json
import os
page = requests.get('https://helldivers.fandom.com/wiki/Stratagem_Codes_(Helldivers_2)')
soup = bs4.BeautifulSoup(page.content, 'html.parser')
data = []
rows = [list(e.find_all('tr'))[2:] for e in soup.find_all('tbody')]
rows = [e for row in rows for e in row]
for i, row in enumerate(rows):
print(f'{i}/{len(rows)}')
row: bs4.Tag
datas = list(row.find_all('td'))
img = datas[0].find('img')
if img is None:
continue
if 'data-src' in img.attrs:
img = img.attrs['data-src']
else:
img = img.attrs['src']
img = img[:img.find('/revision')]
img_name = img[img.rfind('/')+1:]
name = datas[1].find('a')
if name is None:
name = datas[1].find('span')
name = name.text
dirs = []
for d in datas[2].find_all('img'):
alt = d.attrs['alt']
if alt == 'Arrow 1 D':
dirs.append('DOWN')
elif alt == 'Arrow 2 L':
dirs.append('LEFT')
elif alt == 'Arrow 3 R':
dirs.append('RIGHT')
else:
dirs.append('UP')
if not os.path.exists(img_name):
req = requests.get(img)
with open(img_name, 'wb') as f:
f.write(req.content)
data.append((name, img_name, dirs))
with open('data.gd', 'w') as f:
f.write('extends Node\n\nconst data := [\n')
for d in data:
k = ', '.join(['Global.DIRS.' + k for k in d[2]])
f.write(f' [\'{d[0]}\', preload(\'res://game/gems/{d[1]}\'), [{k}]],\n')
f.write(']\n')