initial commit

This commit is contained in:
2024-06-11 19:54:31 +00:00
commit e86e46b85b
4 changed files with 70 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
venv/
__pycache__/
.env

13
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,13 @@
{
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"envFile": "${workspaceFolder}/.env"
}
]
}

46
main.py Normal file
View File

@@ -0,0 +1,46 @@
# Step 1. We begin with creating a Configuration, which contains the username and password for authentication.
import vrchatapi
from vrchatapi.api import authentication_api
from vrchatapi.exceptions import UnauthorizedException
from vrchatapi.models.two_factor_auth_code import TwoFactorAuthCode
from vrchatapi.models.two_factor_email_code import TwoFactorEmailCode
from totp import getTOTP
import os
configuration = vrchatapi.Configuration(
username = os.getenv("USER_NAME"),
password = os.getenv("USER_PASSWORD"),
)
group_id = ''
# Step 2. VRChat consists of several API's (WorldsApi, UsersApi, FilesApi, NotificationsApi, FriendsApi, etc...)
# Here we enter a context of the API Client and instantiate the Authentication API which is required for logging in.
# Enter a context with an instance of the API client
with vrchatapi.ApiClient(configuration) as api_client:
# Set our User-Agent as per VRChat Usage Policy
api_client.user_agent = "GroupInstanceLogger/0.1alpha me@williamtpeebles.com"
# Instantiate instances of API classes
auth_api = authentication_api.AuthenticationApi(api_client)
try:
# Step 3. Calling getCurrentUser on Authentication API logs you in if the user isn't already logged in.
current_user = auth_api.get_current_user()
except UnauthorizedException as e:
if e.status == 200:
if "Email 2 Factor Authentication" in e.reason:
# Step 3.5. Calling email verify2fa if the account has 2FA disabled
auth_api.verify2_fa_email_code(two_factor_email_code=TwoFactorEmailCode(input("Email 2FA Code: ")))
elif "2 Factor Authentication" in e.reason:
# Step 3.5. Calling verify2fa if the account has 2FA enabled
auth_api.verify2_fa(two_factor_auth_code=TwoFactorAuthCode(getTOTP()))
current_user = auth_api.get_current_user()
print(current_user)
else:
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)

8
totp.py Normal file
View File

@@ -0,0 +1,8 @@
import pyotp
import time
import os
def getTOTP():
totp_key = os.getenv("TOTP_KEY")
totp = pyotp.TOTP(totp_key)
return totp.now()