Compare commits
5 Commits
1f0f51c469
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5283e12b63 | |||
| 7199161374 | |||
| f8de63af7d | |||
| 5ed18cc28f | |||
| 2d7c9970ce |
BIN
dist/main.exe
vendored
Executable file
BIN
dist/main.exe
vendored
Executable file
Binary file not shown.
138
main.py
138
main.py
@@ -31,12 +31,14 @@ def main():
|
|||||||
|
|
||||||
filter_name_list = input("Enter the name of the item you want to filter (e.g. 'Force Sword,Surge Force'): ").strip().split(",")
|
filter_name_list = input("Enter the name of the item you want to filter (e.g. 'Force Sword,Surge Force'): ").strip().split(",")
|
||||||
filter_score_str = input("Enter the minimum base (excluding perks etc) score of the item you want to filter (e.g. 350): ")
|
filter_score_str = input("Enter the minimum base (excluding perks etc) score of the item you want to filter (e.g. 350): ")
|
||||||
|
filter_trait_list = input("Enter the trait/blessing name of the item you want to filter (e.g. 'Terrifying Barrage,Riposte'): ").strip().split(",")
|
||||||
|
|
||||||
# Send status
|
# Send status
|
||||||
status_str = "Starting to monitor shop items.\n\n"
|
status_str = "Starting to monitor shop items.\n\n"
|
||||||
status_str += "Characters:\n%s\n\n" % "\n".join([characters[i]["name"] + " (" + characters[i]["archetype"] + ")" for i in chosen_char_index_list])
|
status_str += "Characters:\n%s\n\n" % "\n".join([characters[i]["name"] + " (" + characters[i]["archetype"] + ")" for i in chosen_char_index_list])
|
||||||
status_str += "Filter Name: %s\n" % filter_name_list
|
status_str += "Filter Name: %s\n" % filter_name_list
|
||||||
status_str += "Filter Score: %s\n" % filter_score_str
|
status_str += "Filter Score: %s\n" % filter_score_str
|
||||||
|
status_str += "Filter Trait: %s\n" % filter_trait_list
|
||||||
|
|
||||||
if webhook_url != "":
|
if webhook_url != "":
|
||||||
requests.post(webhook_url, data=status_str)
|
requests.post(webhook_url, data=status_str)
|
||||||
@@ -53,49 +55,19 @@ def main():
|
|||||||
|
|
||||||
# Print credit store details
|
# Print credit store details
|
||||||
for store_item in credit_store_details_list:
|
for store_item in credit_store_details_list:
|
||||||
item_name_display = STORE_ITEMS_DETAILS[store_item["description"]["id"]]["display_name"]
|
print_str += create_store_item_details(store_item, characters, chosen_char_index, filter_name_list, filter_score_str, filter_trait_list, "Credit Store (Ordo Dockets)")
|
||||||
item_base_score = store_item["description"]["overrides"]["baseItemLevel"]
|
|
||||||
|
|
||||||
if filter_name_list[0] != "":
|
|
||||||
matched = False
|
|
||||||
for filter_name in filter_name_list:
|
|
||||||
if filter_name in item_name_display:
|
|
||||||
matched = True
|
|
||||||
break
|
|
||||||
if not matched:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if filter_score_str != "" and item_base_score < int(filter_score_str):
|
checked_marks_store = False
|
||||||
continue
|
if datetime.datetime.utcnow().hour == 1 or not checked_marks_store:
|
||||||
|
checked_marks_store = True
|
||||||
|
|
||||||
item_name = STORE_ITEMS_DETAILS[store_item["description"]["id"]]
|
# Get marks store details
|
||||||
print_str += "====================================\n"
|
marks_store_details_list = get_marks_store_details(access_jwt, account_id, characters[chosen_char_index]["id"], characters[chosen_char_index]["archetype"])
|
||||||
print_str += "Item: %s (Base Stats Score: %d)\n" % (item_name["display_name"], item_base_score)
|
|
||||||
# try:
|
# Print marks store details
|
||||||
# print_str += "Description: %s\n" % item_name["description"]
|
for store_item in marks_store_details_list:
|
||||||
# except:
|
print_str += create_store_item_details(store_item, characters, chosen_char_index, filter_name_list, filter_score_str, filter_trait_list, "Marks Store (Contract)")
|
||||||
# pass
|
|
||||||
# Stats
|
|
||||||
try:
|
|
||||||
for stats in store_item["description"]["overrides"]["base_stats"]:
|
|
||||||
stats_name = STORE_ITEMS_DETAILS[stats["name"]]
|
|
||||||
print_str += "%s: %d%%\n" % (stats_name, stats["value"]*100)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
# Perks
|
|
||||||
try:
|
|
||||||
for perk in store_item["description"]["overrides"]["perks"]:
|
|
||||||
perk_name = STORE_ITEMS_DETAILS[perk["id"]]
|
|
||||||
print_str += "Perk: %s\n" % perk_name["description"]
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
# Traits
|
|
||||||
try:
|
|
||||||
for perk in store_item["description"]["overrides"]["traits"]:
|
|
||||||
perk_name = STORE_ITEMS_DETAILS[perk["id"]]
|
|
||||||
print_str += "Traits: %s\n" % perk_name["description"]
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if webhook_url != "":
|
if webhook_url != "":
|
||||||
splitted = print_str.split("====================================")
|
splitted = print_str.split("====================================")
|
||||||
@@ -105,24 +77,91 @@ def main():
|
|||||||
print(print_str)
|
print(print_str)
|
||||||
|
|
||||||
last_sleep_min = 60 - datetime.datetime.now().minute % 60
|
last_sleep_min = 60 - datetime.datetime.now().minute % 60
|
||||||
print("Sleeping for %d minutes" % last_sleep_min/3)
|
print("Sleeping for %d minutes" % (last_sleep_min/3))
|
||||||
time.sleep(last_sleep_min*60/3)
|
time.sleep(last_sleep_min*60/3)
|
||||||
|
|
||||||
# Refresh token
|
# Refresh token
|
||||||
refresh_jwt, access_jwt = update_refresh_jwt(refresh_jwt)
|
refresh_jwt, access_jwt = update_refresh_jwt(refresh_jwt)
|
||||||
print("Sleeping for %d minutes" % last_sleep_min/3)
|
print("Sleeping for %d minutes" % (last_sleep_min/3))
|
||||||
time.sleep(last_sleep_min*60/3)
|
time.sleep(last_sleep_min*60/3)
|
||||||
|
|
||||||
# Refresh token
|
# Refresh token
|
||||||
refresh_jwt, access_jwt = update_refresh_jwt(refresh_jwt)
|
refresh_jwt, access_jwt = update_refresh_jwt(refresh_jwt)
|
||||||
print("Sleeping for %d minutes" % last_sleep_min/3)
|
print("Sleeping for %d minutes" % (last_sleep_min/3))
|
||||||
time.sleep(last_sleep_min*60/3)
|
time.sleep(last_sleep_min*60/3)
|
||||||
|
|
||||||
# Extra sleep to prevent clock desync
|
# Extra sleep to prevent clock desync
|
||||||
print("Sleeping for 1 minute")
|
print("Sleeping for 1 minute")
|
||||||
time.sleep(60)
|
time.sleep(60)
|
||||||
|
|
||||||
pass
|
|
||||||
|
def create_store_item_details(store_item: dict, characters: list, chosen_char_index: int, filter_name_list: list, filter_score_str: str, filter_trait_list: list, store_name: str) -> str:
|
||||||
|
print_str = ""
|
||||||
|
item_name_display = STORE_ITEMS_DETAILS[store_item["description"]["id"]]["display_name"]
|
||||||
|
item_base_score = store_item["description"]["overrides"]["baseItemLevel"]
|
||||||
|
|
||||||
|
if filter_name_list[0] != "":
|
||||||
|
matched = False
|
||||||
|
for filter_name in filter_name_list:
|
||||||
|
if filter_name in item_name_display:
|
||||||
|
matched = True
|
||||||
|
break
|
||||||
|
if not matched:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
if filter_score_str != "" and item_base_score < int(filter_score_str):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
if filter_trait_list[0] != "":
|
||||||
|
try:
|
||||||
|
check_trait_exist = False
|
||||||
|
for trait_name in filter_trait_list:
|
||||||
|
for perk in store_item["description"]["overrides"]["traits"]:
|
||||||
|
perk_name = STORE_ITEMS_DETAILS[perk["id"]]
|
||||||
|
trait_display_name = perk_name["display_name"]
|
||||||
|
if trait_name in trait_display_name:
|
||||||
|
check_trait_exist = True
|
||||||
|
break
|
||||||
|
if check_trait_exist:
|
||||||
|
break
|
||||||
|
|
||||||
|
if not check_trait_exist:
|
||||||
|
return ""
|
||||||
|
except:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
item_name = STORE_ITEMS_DETAILS[store_item["description"]["id"]]
|
||||||
|
|
||||||
|
print_str += "====================================\n"
|
||||||
|
print_str += "User: %s - %s (%s)\n" % (characters[chosen_char_index]["name"], characters[chosen_char_index]["archetype"], store_name)
|
||||||
|
print_str += "Item: %s (Base Stats Score: %d)\n" % (item_name["display_name"], item_base_score)
|
||||||
|
# try:
|
||||||
|
# print_str += "Description: %s\n" % item_name["description"]
|
||||||
|
# except:
|
||||||
|
# pass
|
||||||
|
# Stats
|
||||||
|
try:
|
||||||
|
for stats in store_item["description"]["overrides"]["base_stats"]:
|
||||||
|
stats_name = STORE_ITEMS_DETAILS[stats["name"]]
|
||||||
|
print_str += "%s: %d%%\n" % (stats_name, stats["value"]*100)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Perks
|
||||||
|
try:
|
||||||
|
for perk in store_item["description"]["overrides"]["perks"]:
|
||||||
|
perk_name = STORE_ITEMS_DETAILS[perk["id"]]
|
||||||
|
print_str += "Perk: %s\n" % perk_name["description"]
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Traits
|
||||||
|
try:
|
||||||
|
for perk in store_item["description"]["overrides"]["traits"]:
|
||||||
|
perk_name = STORE_ITEMS_DETAILS[perk["id"]]
|
||||||
|
print_str += "Traits: %s\n" % perk_name["description"]
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return print_str
|
||||||
|
|
||||||
def update_refresh_jwt(jwt: str) -> (str, str):
|
def update_refresh_jwt(jwt: str) -> (str, str):
|
||||||
url = "https://bsp-auth-prod.atoma.cloud/queue/refresh"
|
url = "https://bsp-auth-prod.atoma.cloud/queue/refresh"
|
||||||
@@ -158,6 +197,15 @@ def get_credit_store_details(access_jwt: str, account_id: str, character_id: str
|
|||||||
if res.status_code == 200:
|
if res.status_code == 200:
|
||||||
return res.json()["personal"]
|
return res.json()["personal"]
|
||||||
|
|
||||||
|
def get_marks_store_details(access_jwt: str, account_id: str, character_id: str, archetype: str) -> dict:
|
||||||
|
url = "https://bsp-td-prod.atoma.cloud/store/storefront/marks_store_%s?accountId=%s&personal=true&characterId=%s" % (archetype, account_id, character_id)
|
||||||
|
headers = {
|
||||||
|
"Authorization": "Bearer " + access_jwt
|
||||||
|
}
|
||||||
|
|
||||||
|
res = requests.get(url, headers=headers)
|
||||||
|
if res.status_code == 200:
|
||||||
|
return res.json()["personal"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user