Created
September 4, 2015 09:23
-
-
Save cmdr2/bbe336a83b56a2803d1e to your computer and use it in GitHub Desktop.
Python script to periodically log the user list of JanusVR using an Android phone (use SL4A with Python). This allows the logger bot to operate 24 hours a day from my phone, instead of stopping when I close my laptop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android | |
import sys | |
import json | |
import time | |
import datetime | |
import socket | |
from threading import Timer | |
f = open("janus_users.txt", 'w', 0) | |
def log(msg): | |
out = datetime.datetime.utcnow().isoformat() + " - " + msg | |
f.write(out + "\n") | |
print out | |
# the args thing can be cleaned up in *args | |
def setInterval(func, arg0, arg1, sec): | |
def funcWrapper(): | |
setInterval(func, arg0, arg1, sec) | |
func(arg0, arg1) | |
t = Timer(sec, funcWrapper) | |
t.start() | |
return t | |
def requestUsers(sock, droid): | |
temp = droid.batteryGetTemperature().result | |
log("CLIENT: battery at " + str(droid.batteryGetLevel().result) + "%, temp at " + str(temp)) | |
userListMsg = json.dumps({"method": "users_online", "data": {"maxResults": 50}}) | |
log("CLIENT: " + userListMsg) | |
sock.sendall(userListMsg + "\r\n") | |
data = sock.recv(4096) | |
log("SERVER: " + data) | |
if temp > 410: | |
log("CLIENT: Battery overheating at " + str(temp) + "! Shutting down!") | |
sys.exit() | |
try: | |
droid = android.Android() | |
droid.wakeLockAcquirePartial() | |
droid.batteryStartMonitoring() | |
time.sleep(2) | |
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
sock.connect(("babylon.vrsites.com", 5566)) | |
logonMsg = json.dumps({"method":"logon","data":{"userId":"SomethingOne2Bot","version":"40.3","roomId":"test_room"}}) | |
log("CLIENT: " + logonMsg) | |
sock.sendall(logonMsg + "\r\n") | |
data = sock.recv(4096) | |
log("SERVER: " + data) | |
msg = json.loads(data) | |
if msg["method"] == "okay": | |
setInterval(requestUsers, sock, droid, 300) | |
requestUsers(sock, droid) | |
# sock.close() | |
except Exception,e: | |
print e | |
sys.exit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment