Skip to content

Instantly share code, notes, and snippets.

@GarnetSunset
Last active August 31, 2018 03:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GarnetSunset/8c8f581f1eee2305375400455c8eda11 to your computer and use it in GitHub Desktop.
Save GarnetSunset/8c8f581f1eee2305375400455c8eda11 to your computer and use it in GitHub Desktop.
This is a huge WIP, hopefully at some point I won't have to worry about any of this garbage.
import argparse
import json
import requests
import sys
import time
try:
input = raw_input
except NameError:
pass
offset = 0
numOfFriends = 0
messageText = ""
usrID = ""
parser = argparse.ArgumentParser(description='VRChat Python Shim.')
parser.add_argument('username', metavar='U', type=str, nargs='+', help='username')
parser.add_argument('message', metavar='M', type=str, nargs='+', help='message')
args = parser.parse_args()
messageText = ''.join(args.message)
usrID = ''.join(args.username)
try:
with open('apiKey', 'r') as myfile:
api = myfile.read().replace('\n', '')
except IOError:
apiFull = requests.request("GET", "https://api.vrchat.cloud/api/1/config")
data = json.loads(apiFull.text)
api = data['apiKey']
file = open("apiKey", 'w')
file.write(api.replace('\n', ''))
file.close()
try:
with open('authKey', 'r') as myfile:
auth = myfile.read().replace('\n', '')
except IOError:
file = open("authKey", 'w')
auth = input('Please input your Auth Key: ')
file.write(auth.replace('\n', ''))
file.close()
try:
with open('authorizationKey', 'r') as myfile:
authorizationKey = myfile.read().replace('\n', '')
except IOError:
file = open("authorizationKey", 'w')
authorizationKey = input('Please input your Authorization Header : ')
file.write(authorizationKey.replace('\n', ''))
file.close()
if messageText == "":
messageText = input("What's the message: ")
if usrID == "":
usrID = input("usrID: ")
headersFriends = {
'authorization': authorizationKey,
'cache-control': "no-cache",
}
headersMessage = {
'Cache-Control': "no-cache",
'type': "message",
'message': messageText,
'Content-Type': "application/x-www-form-urlencoded",
'Authorization': authorizationKey,
}
urlUser = "https://api.vrchat.cloud/api/1/user/"
urlFriends = "https://www.vrchat.net/api/1/auth/user/friends"
urlUserAuth = "http://api.vrchat.cloud/api/1/auth/user"
payloadMessage = "type=all&message="+messageText
sendMessage = {"auth":auth,"apiKey":api}
querystringFriends = {"auth":auth,"apiKey":api,"offline":"false","offset":offset}
if messageText != "":
notifURL = urlUser + usrID + "/notification"
messageSend = requests.request("POST", notifURL, data=payloadMessage, headers=headersMessage, params=sendMessage)
totalResponse = json.loads((messageSend.text).encode('utf8'))
else:
response = requests.request("GET", urlUserAuth, headers=headersFriends, params=querystringFriends)
userAuth = json.loads(response.text)
for values in userAuth['friends']:
numOfFriends += 1
offSetGoal = numOfFriends // 100 * 100
time.sleep(5)
friendsList = requests.request("GET", urlFriends, headers=headersFriends, params=querystringFriends)
totalResponse = json.loads((friendsList.text).encode('utf8'))
while offSetGoal != offset:
time.sleep(8)
friendsList = requests.request("GET", urlFriends, headers=headersFriends, params=querystringFriends)
offset += 100
my_list = json.loads((friendsList.text).encode('utf8'))
totalResponse = totalResponse + my_list
totalDumps = json.dumps(totalResponse, sort_keys=True, indent=4)
file = open("output.json", 'w')
file.write(totalDumps)
file.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment