58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
|
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')
|