make language user-selectable (#52)

This commit is contained in:
eli fessler
2022-10-26 23:26:50 -10:00
parent 30f9e081c2
commit 12dddc60b9

46
s3s.py
View File

@@ -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
################