You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
2.0 KiB

from requests import get
from yaml import load, SafeLoader
from reag__ import reag__
def parse_yml(url = 'https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/Resources/Prototypes/Recipes/Reactions/medicine.yml'):
yml = load(get(url).content.decode('utf-8'), Loader=SafeLoader)
return yml
def parse_ftl(url = 'https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/Resources/Locale/ru-RU/reagents/meta/medicine.ftl'):
raw = get(url).content.decode('utf-8')
locales = {}
for i in raw.splitlines():
if 'name' in i:
splitted = i.split()
name = splitted[0][13:]
locale = splitted[2]
locales[name] = locale
return locales
def load_recipes(url = 'https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/Resources/Prototypes/Recipes/Reactions/medicine.yml', category = '-'):
yml = parse_yml(url)
recipes = {}
for element in yml:
product = element["id"]
comps = {}
for elem in element["reactants"]:
comps[elem] = element["reactants"][elem]["amount"]
for id, value in element["products"].items():
out = value
recipes[product] = reag__(category=category, comps=comps, out=out)
return recipes
def localize(ftl = parse_ftl()):
recipes = load_recipes()
for k, v in list(recipes.items()):
for word in ftl:
if k.lower() == word:
new_key = ftl[word].capitalize()
recipes[new_key] = recipes.pop(k)
for k1, v1 in list(recipes[new_key].comps.items()):
for word1 in ftl:
if k1.lower() == word1:
new_key1 = ftl[word1]
recipes[new_key].comps[new_key1] = recipes[new_key].comps.pop(k1)
else:
try:
for k1, v1 in list(recipes[k].comps.items()):
for word1 in ftl:
if k1.lower() == word1:
new_key1 = ftl[word1].capitalize()
recipes[k].comps[new_key1] = recipes[k].comps.pop(k1)
except:
for k1, v1 in list(recipes[new_key].comps.items()):
for word1 in ftl:
if k1.lower() == word1:
new_key1 = ftl[word1].capitalize()
recipes[new_key].comps[new_key1] = recipes[new_key].comps.pop(k1)
return recipes