Merge pull request #172 from rinsuki/fix/stop-circular-import

Stop circular import in iksm.py
This commit is contained in:
eli 2024-02-25 01:04:02 +09:00 committed by GitHub
commit d171aad755
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 10 deletions

28
iksm.py
View File

@ -5,8 +5,6 @@
import base64, hashlib, json, os, re, sys, urllib
import requests
from bs4 import BeautifulSoup
from s3s import F_GEN_URL as f_gen_url
from s3s import A_VERSION as s3s_ver
USE_OLD_NSOAPP_VER = False # Change this to True if you're getting a "9403: Invalid token." error
@ -17,6 +15,7 @@ WEB_VIEW_VERSION = "unknown"
WEB_VIEW_VER_FALLBACK = "6.0.0-eb33aadc" # fallback for current splatnet 3 ver
SPLATNET3_URL = "https://api.lp1.av5ja.srv.nintendo.net"
GRAPHQL_URL = SPLATNET3_URL + "/api/graphql"
F_GEN_URL = "unknown"
# functions in this file & call stack:
# - get_nsoapp_version()
@ -38,9 +37,18 @@ def get_nsoapp_version():
if NSOAPP_VERSION != "unknown": # already set
return NSOAPP_VERSION
else:
# should exist already - from log_in() or get_gtoken() - but check to make sure
try:
global S3S_VERSION, F_GEN_URL
assert S3S_VERSION != "unknown"
assert F_GEN_URL != "unknown"
except AssertionError:
print("Cannot determine s3s version or f generation API.")
sys.exit(1)
try: # try to get NSO version from f API
f_conf_url = os.path.dirname(f_gen_url) + "/config" # default endpoint for imink API
f_conf_header = {'User-Agent': f's3s/{s3s_ver}'}
f_conf_url = os.path.dirname(F_GEN_URL) + "/config" # default endpoint for imink API
f_conf_header = {'User-Agent': f's3s/{S3S_VERSION}'}
f_conf_rsp = requests.get(f_conf_url, headers=f_conf_header)
f_conf_json = json.loads(f_conf_rsp.text)
ver = f_conf_json["nso_version"]
@ -140,11 +148,12 @@ def get_web_view_ver(bhead=[], gtoken=""):
return WEB_VIEW_VERSION
def log_in(ver, app_user_agent):
def log_in(ver, app_user_agent, f_gen_url):
'''Logs in to a Nintendo Account and returns a session_token.'''
global S3S_VERSION
global S3S_VERSION, F_GEN_URL
S3S_VERSION = ver
F_GEN_URL = f_gen_url
auth_state = base64.urlsafe_b64encode(os.urandom(36))
@ -235,10 +244,11 @@ def get_session_token(session_token_code, auth_code_verifier):
def get_gtoken(f_gen_url, session_token, ver):
'''Provided the session_token, returns a GameWebToken JWT and account info.'''
nsoapp_version = get_nsoapp_version()
global S3S_VERSION
global S3S_VERSION, F_GEN_URL
S3S_VERSION = ver
F_GEN_URL = f_gen_url
nsoapp_version = get_nsoapp_version()
app_head = {
'Host': 'accounts.nintendo.com',

2
s3s.py
View File

@ -148,7 +148,7 @@ def gen_new_tokens(reason, force=False):
if SESSION_TOKEN == "":
print("Please log in to your Nintendo Account to obtain your session_token.")
new_token = iksm.log_in(A_VERSION, APP_USER_AGENT)
new_token = iksm.log_in(A_VERSION, APP_USER_AGENT, F_GEN_URL)
if new_token is None:
print("There was a problem logging you in. Please try again later.")
elif new_token == "skip":