|
@@ -2,8 +2,6 @@ import datetime
|
|
import json
|
|
import json
|
|
import os
|
|
import os
|
|
import ssl
|
|
import ssl
|
|
-import subprocess
|
|
|
|
-import sys
|
|
|
|
import urllib.parse
|
|
import urllib.parse
|
|
import urllib.request
|
|
import urllib.request
|
|
|
|
|
|
@@ -16,41 +14,6 @@ https://github.com/ToontownRewritten/api-doc/blob/master/invasions.md
|
|
INVASIONS_API_URL = 'https://www.toontownrewritten.com/api/invasions?format=json'
|
|
INVASIONS_API_URL = 'https://www.toontownrewritten.com/api/invasions?format=json'
|
|
LOGIN_API_URL = 'https://www.toontownrewritten.com/api/login?format=json'
|
|
LOGIN_API_URL = 'https://www.toontownrewritten.com/api/login?format=json'
|
|
|
|
|
|
-if sys.platform == 'darwin':
|
|
|
|
- TOONTOWN_LIBRARY_PATH = os.path.join(
|
|
|
|
- os.path.expanduser('~'), 'Library',
|
|
|
|
- 'Application Support', 'Toontown Rewritten',
|
|
|
|
- )
|
|
|
|
- TOONTOWN_ENGINE_DEFAULT_PATH = os.path.join(
|
|
|
|
- TOONTOWN_LIBRARY_PATH,
|
|
|
|
- 'Toontown Rewritten',
|
|
|
|
- )
|
|
|
|
-else:
|
|
|
|
- TOONTOWN_LIBRARY_PATH = None
|
|
|
|
- TOONTOWN_ENGINE_DEFAULT_PATH = None
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def start_engine(engine_path, gameserver, playcookie, **kwargs):
|
|
|
|
- env = {
|
|
|
|
- 'TTR_GAMESERVER': gameserver,
|
|
|
|
- 'TTR_PLAYCOOKIE': playcookie,
|
|
|
|
- }
|
|
|
|
- if sys.platform == 'darwin':
|
|
|
|
- env['DYLD_LIBRARY_PATH'] = os.path.join(
|
|
|
|
- TOONTOWN_LIBRARY_PATH,
|
|
|
|
- 'Libraries.bundle',
|
|
|
|
- )
|
|
|
|
- env['DYLD_FRAMEWORK_PATH'] = os.path.join(
|
|
|
|
- TOONTOWN_LIBRARY_PATH,
|
|
|
|
- 'Frameworks',
|
|
|
|
- )
|
|
|
|
- return subprocess.Popen(
|
|
|
|
- args=[engine_path],
|
|
|
|
- cwd=os.path.dirname(engine_path),
|
|
|
|
- env=env,
|
|
|
|
- **kwargs,
|
|
|
|
- )
|
|
|
|
-
|
|
|
|
|
|
|
|
def api_request(url, params=None, validate_ssl_cert=True):
|
|
def api_request(url, params=None, validate_ssl_cert=True):
|
|
resp = urllib.request.urlopen(
|
|
resp = urllib.request.urlopen(
|
|
@@ -108,28 +71,6 @@ def login(username=None, password=None,
|
|
raise Exception(repr(resp_data))
|
|
raise Exception(repr(resp_data))
|
|
|
|
|
|
|
|
|
|
-def launch(engine_path, username, password, validate_ssl_certs=True):
|
|
|
|
- result = login(
|
|
|
|
- username=username,
|
|
|
|
- password=password,
|
|
|
|
- validate_ssl_cert=validate_ssl_certs,
|
|
|
|
- )
|
|
|
|
- if isinstance(result, LoginDelayed):
|
|
|
|
- result = login(
|
|
|
|
- queue_token=result.queue_token,
|
|
|
|
- validate_ssl_cert=validate_ssl_certs,
|
|
|
|
- )
|
|
|
|
- if isinstance(result, LoginSuccessful):
|
|
|
|
- p = start_engine(
|
|
|
|
- engine_path=engine_path,
|
|
|
|
- gameserver=result.gameserver,
|
|
|
|
- playcookie=result.playcookie,
|
|
|
|
- )
|
|
|
|
- p.wait()
|
|
|
|
- else:
|
|
|
|
- raise Exception(repr(result))
|
|
|
|
-
|
|
|
|
-
|
|
|
|
class InvasionProgress:
|
|
class InvasionProgress:
|
|
|
|
|
|
def __init__(self, district, date, cog_type,
|
|
def __init__(self, district, date, cog_type,
|
|
@@ -145,6 +86,13 @@ class InvasionProgress:
|
|
return self.total_number - self.despawned_number
|
|
return self.total_number - self.despawned_number
|
|
|
|
|
|
|
|
|
|
|
|
+class InvasionsResponse:
|
|
|
|
+
|
|
|
|
+ def __init__(self, update_date, invasions):
|
|
|
|
+ self.update_date = update_date
|
|
|
|
+ self.invasions = invasions
|
|
|
|
+
|
|
|
|
+
|
|
def request_active_invasions(validate_ssl_certs=True):
|
|
def request_active_invasions(validate_ssl_certs=True):
|
|
resp_data = api_request(INVASIONS_API_URL)
|
|
resp_data = api_request(INVASIONS_API_URL)
|
|
if resp_data['error'] is not None:
|
|
if resp_data['error'] is not None:
|
|
@@ -160,4 +108,9 @@ def request_active_invasions(validate_ssl_certs=True):
|
|
despawned_number=int(despawned_number),
|
|
despawned_number=int(despawned_number),
|
|
total_number=int(total_number),
|
|
total_number=int(total_number),
|
|
)
|
|
)
|
|
- return invs
|
|
|
|
|
|
+ return InvasionsResponse(
|
|
|
|
+ update_date=datetime.datetime.utcfromtimestamp(
|
|
|
|
+ resp_data['lastUpdated']
|
|
|
|
+ ),
|
|
|
|
+ invasions=invs,
|
|
|
|
+ )
|