This commit is contained in:
2024-06-12 17:19:50 +00:00
parent 78fb2f5fff
commit 66193dc27f
2 changed files with 43 additions and 42 deletions

View File

@@ -6,7 +6,9 @@ session = get_session()
if __name__ == "__main__": if __name__ == "__main__":
group_instances = getGroupInstances() group_instances = getGroupInstances()
if group_instances is not []: if not group_instances:
print("No group instances were found! Nothing to do...")
else:
for instance in group_instances: for instance in group_instances:
try: try:
db_instance = DBGroupInstance(timestamp=datetime.now(), db_instance = DBGroupInstance(timestamp=datetime.now(),
@@ -17,6 +19,4 @@ if __name__ == "__main__":
session.commit() session.commit()
print("Instance log added") print("Instance log added")
except Exception as e: except Exception as e:
print(f"Exception {e}") print(f"Exception {e}")
else:
print("No group instances! Nothing to do")

View File

@@ -27,7 +27,7 @@ def fakeGroupInstances():
"Fake world", None, 0, "vrchat", 0, None, 0, 0, "9/11/2021", "public", ["nothing", "testing"], "Fake world", None, 0, "vrchat", 0, None, 0, 0, "9/11/2021", "public", ["nothing", "testing"],
"http://testing.localhost/thisisnotreal.png", [], datetime.now(), 5, 90, []) "http://testing.localhost/thisisnotreal.png", [], datetime.now(), 5, 90, [])
# fake instance # Fake instance
fakeInstance1 = GroupInstance("TESTTESTgrp_69420_aaaaaaaaa", fakeInstance1 = GroupInstance("TESTTESTgrp_69420_aaaaaaaaa",
"test", fakeWorld, randint(1, 50)) "test", fakeWorld, randint(1, 50))
@@ -47,47 +47,48 @@ def getGroupInstances():
group_id = os.getenv("GROUP_ID") group_id = os.getenv("GROUP_ID")
with vrchatapi.ApiClient(configuration) as api_client: with vrchatapi.ApiClient(configuration) as api_client:
# Set our User-Agent as per VRChat Usage Policy # Set our User-Agent as per VRChat Usage Policy
api_client.user_agent = "GroupInstanceLogger/0.1alpha me@williamtpeebles.com" api_client.user_agent = "GroupInstanceLogger/0.1alpha me@williamtpeebles.com"
# Instantiate instances of API classes # Instantiate instances of API classes
auth_api = authentication_api.AuthenticationApi(api_client) auth_api = authentication_api.AuthenticationApi(api_client)
try: try:
# Calling getCurrentUser on Authentication API logs you in if the user isn't already logged in. # Calling getCurrentUser on Authentication API logs you in if the user isn't already logged in.
current_user = auth_api.get_current_user() current_user = auth_api.get_current_user()
except UnauthorizedException as e: except UnauthorizedException as e:
if e.status == 200: if e.status == 200:
if "Email 2 Factor Authentication" in e.reason: if "Email 2 Factor Authentication" in e.reason:
# Calling email verify2fa if the account has 2FA disabled, give warning that automatic runs cannot be done # Calling email verify2fa if the account has 2FA disabled, give warning that automatic runs cannot be done
print("IMPORTANT: Your VRChat Account is only enabled for **email** based 2-factor authentication! " print("IMPORTANT: Your VRChat Account is only enabled for **email** based 2-factor authentication! "
"You will not be able to automate runs of GroupInstanceLogger\n" "You will not be able to automate runs of GroupInstanceLogger\n"
"Set up your account to use TOTP-based 2FA so the application can log you in automatically\n\n") "Set up your account to use TOTP-based 2FA so the application can log you in automatically\n\n")
auth_api.verify2_fa_email_code(two_factor_email_code=TwoFactorEmailCode(input("Email 2FA Code: "))) auth_api.verify2_fa_email_code(two_factor_email_code=TwoFactorEmailCode(input("Email 2FA Code: ")))
elif "2 Factor Authentication" in e.reason: elif "2 Factor Authentication" in e.reason:
# Check if TOTP code is defined in env variables # Check if TOTP code is defined in env variables
if os.getenv("TOTP_KEY") is not None: if os.getenv("TOTP_KEY") is not None:
print("Attempting to authenticate with defined TOTP key") print("Attempting to authenticate with defined TOTP key")
auth_api.verify2_fa(two_factor_auth_code=TwoFactorAuthCode(getTOTP())) auth_api.verify2_fa(two_factor_auth_code=TwoFactorAuthCode(getTOTP()))
else: else:
# TOTP prompt if not configured # TOTP prompt if not configured
auth_api.verify2_fa(two_factor_auth_code=input("Enter 2FA Code: "))
# Calling verify2fa if the account has 2FA enabled # Calling verify2fa if the account has 2FA enabled
current_user = auth_api.get_current_user() auth_api.verify2_fa(two_factor_auth_code=TwoFactorAuthCode(input("Enter 2FA Code: ")))
current_user = auth_api.get_current_user()
# Call groups APIs # Call groups APIs
groups_api_instance = vrchatapi.GroupsApi(api_client) groups_api_instance = vrchatapi.GroupsApi(api_client)
try: try:
api_response = groups_api_instance.get_group_instances(group_id) # Get group api_response = groups_api_instance.get_group_instances(group_id) # Get group
for instance in api_response: for instance in api_response:
group_instances.append(instance) group_instances.append(instance)
return group_instances return group_instances
except ApiException as e: except ApiException as e:
print("Exception when calling GroupsApi->get_group: %s\n" % e) print("Exception when calling GroupsApi->get_group: %s\n" % e)
else: else:
print("Exception when calling API: %s\n", e)
except vrchatapi.ApiException as e:
print("Exception when calling API: %s\n", e) print("Exception when calling API: %s\n", e)
except vrchatapi.ApiException as e:
print("Exception when calling API: %s\n", e)
print("Logged in as:", current_user.display_name) print("Logged in as:", current_user.display_name)