From 12dddc60b9a3e21d5d3fb07a2779ddd5ce0f67a1 Mon Sep 17 00:00:00 2001 From: eli fessler Date: Wed, 26 Oct 2022 23:26:50 -1000 Subject: [PATCH] make language user-selectable (#52) --- s3s.py | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/s3s.py b/s3s.py index de2b25f..98a04ec 100755 --- a/s3s.py +++ b/s3s.py @@ -8,7 +8,7 @@ import argparse, datetime, json, os, shutil, re, requests, sys, time, uuid import msgpack import iksm, utils -A_VERSION = "0.1.10" +A_VERSION = "0.1.11" DEBUG = False @@ -40,10 +40,10 @@ except (IOError, ValueError): # SET GLOBALS API_KEY = CONFIG_DATA["api_key"] # for stat.ink -USER_LANG = CONFIG_DATA["acc_loc"][:5] # nintendo account info +USER_LANG = CONFIG_DATA["acc_loc"][:5] # user input USER_COUNTRY = CONFIG_DATA["acc_loc"][-2:] # nintendo account info -GTOKEN = CONFIG_DATA["gtoken"] # for accessing splatnet - base64 -BULLETTOKEN = CONFIG_DATA["bullettoken"] # for accessing splatnet - base64 json web token +GTOKEN = CONFIG_DATA["gtoken"] # for accessing splatnet - base64 json web token +BULLETTOKEN = CONFIG_DATA["bullettoken"] # for accessing splatnet - base64 SESSION_TOKEN = CONFIG_DATA["session_token"] # for nintendo login F_GEN_URL = CONFIG_DATA["f_gen"] # endpoint for generating f (imink API by default) @@ -152,20 +152,25 @@ def gen_new_tokens(reason, force=False): if manual_entry: # no session_token ever gets stored print("\nYou have opted against automatic token generation and must manually input your tokens.\n") new_gtoken, new_bullettoken = iksm.enter_tokens() - acc_lang = "en-US" + acc_lang = "en-US" # overwritten by user setting acc_country = "US" - print("Using `en-US` for language and `US` for country by default. These can be changed in config.txt.") + print("Using `US` for country by default. This can be changed in config.txt.") else: print("Attempting to generate new gtoken and bulletToken...") new_gtoken, acc_name, acc_lang, acc_country = iksm.get_gtoken(F_GEN_URL, SESSION_TOKEN, A_VERSION) new_bullettoken = iksm.get_bullet(new_gtoken, APP_USER_AGENT, acc_lang, acc_country) CONFIG_DATA["gtoken"] = new_gtoken # valid for 2 hours CONFIG_DATA["bullettoken"] = new_bullettoken # valid for 2 hours - CONFIG_DATA["acc_loc"] = acc_lang + "|" + acc_country + + global USER_LANG + if acc_lang != USER_LANG: + acc_lang = USER_LANG + CONFIG_DATA["acc_loc"] = f"{acc_lang}|{acc_country}" + write_config(CONFIG_DATA) if manual_entry: - print("Wrote tokens to config.txt.\n") + print("Wrote tokens to config.txt.\n") # and updates acc_country if necessary... else: print(f"Wrote tokens for {acc_name} to config.txt.\n") @@ -808,6 +813,30 @@ def check_statink_key(): return +def set_language(): + '''Prompts the user to set their game language.''' + + if USER_LANG == "": + print("Default locale is en-US. Press Enter to accept, or enter your own (see readme for list).") + language_code = input("") + + if language_code == "": + CONFIG_DATA["acc_loc"] = "en-US|US" # default + write_config(CONFIG_DATA) + return + else: + language_list = [ + "de-DE", "en-GB", "en-US", "es-ES", "es-MX", "fr-CA", "fr-FR", + "it-IT", "ja-JP", "ko-KR", "nl-NL", "ru-RU", "zh-CN", "zh-TW" + ] + while language_code not in language_list: + print("Invalid language code. Please try entering it again:") + language_code = input("") + CONFIG_DATA["acc_loc"] = f"{language_code}|US" # default to US until set by ninty + write_config(CONFIG_DATA) + return + + def get_num_results(which): '''I/O for getting number of battles/jobs to upload.''' @@ -1094,6 +1123,7 @@ def main(): ####### check_for_updates() check_statink_key() + set_language() # argparse setup ################