import pyoe2_craftpath as pc
from pyoe2_craftpath import AffixId
COE_CACHE_MAP = {
"./cache/coe2.json": "https://www.craftofexile.com/json/poe2/main/poec_data.json"
}
CACHE_TTL_IN_SECONDS = 60 * 60 * 24
def main():
text = pc.retrieve_contents_from_urls_with_cache_unstable_order(
COE_CACHE_MAP, CACHE_TTL_IN_SECONDS)[0]
data = pc.CraftOfExileItemInfoProvider.parse_from_json(text)
bow_base_item_id = pc.BaseItemId(20)
attack_speed_for_5697 = AffixId(5697)
essence_id_for_5697 = data.lookup_affix_essences(
attack_speed_for_5697, bow_base_item_id)
print(essence_id_for_5697)
base_mods_for_5697_20 = data.lookup_base_item_mods(pc.BaseItemId(20))
possible_defs = base_mods_for_5697_20.get(attack_speed_for_5697)
assert possible_defs is not None
assert essence_id_for_5697.__contains__(
pc.EssenceId(3156))
for essence in essence_id_for_5697:
definition = data.lookup_essence_definition(essence)
print("Printing definition for essence: ", definition.name_essence)
possible_defs = definition.base_tier_table.get(pc.BaseItemId(20))
assert possible_defs is not None
for i, (k, v) in enumerate(possible_defs.items()):
print("#", i + 1, " ", k, " : ", v)
defi = data.lookup_base_item_mods(bow_base_item_id)
info = defi.get(attack_speed_for_5697)
assert info is not None
equivalent_affix_tier = next(((k2, v2) for k2, v2 in info.items(
) if v2.min_item_level == v.min_item_level), None)
assert equivalent_affix_tier is not None
print("Will achieve tier: ", equivalent_affix_tier[0])
attack_speed = AffixId(5092)
essence_id_for_5092 = data.lookup_affix_essences(
attack_speed, bow_base_item_id)
assert essence_id_for_5092.__len__() == 2
assert essence_id_for_5092.__contains__(
pc.EssenceId(3132))
assert essence_id_for_5092.__contains__(
pc.EssenceId(3144)) assert not essence_id_for_5092.__contains__(
pc.EssenceId(3156))
for essence in essence_id_for_5092:
definition = data.lookup_essence_definition(essence)
print("Printing definition for essence: ", definition.name_essence)
possible_defs = definition.base_tier_table.get(pc.BaseItemId(20))
assert possible_defs is not None
for i, (k, v) in enumerate(possible_defs.items()):
print("#", i + 1, " ", k, " : ", v)
defi = data.lookup_base_item_mods(bow_base_item_id)
info = defi.get(attack_speed)
assert info is not None
equivalent_affix_tier = next(((k2, v2) for k2, v2 in info.items(
) if v2.min_item_level == v.min_item_level), None)
assert equivalent_affix_tier is not None
print("Will achieve tier: ", equivalent_affix_tier[0])
essence = data.lookup_essence_definition(pc.EssenceId(3156))
assert essence is not None
print(essence)
if __name__ == "__main__":
main()