ring.py - Working Ring devices reverse engineered API examples
from pprint import pprint
from ring_doorbell import Ring, Auth
import pyotp
import json
username = "email@yahoo.es"
password = "password123"
refresh_token_file = "refresh_token.json"
otp_seed = 'XXXAAABBBOTPSEEDBBBAAAXXX'
user_agent = 'ShitysoftExplorer'
def read_refresh_token():
f = open(refresh_token_file, "r")
return(f.read())
try:
longterm_token = json.loads(read_refresh_token())['refresh_token']
print(" ** Using existing token: {} **".format(longterm_token))
auth = Auth(user_agent, None, token=longterm_token)
except:
print(" ** Generating new long-term token **")
auth = Auth(user_agent, None)
totp = pyotp.TOTP(otp_seed).now()
token = auth.fetch_token(username, password, str(totp))
longterm_token = token['refresh_token']
with open(refresh_token_file, 'w') as f:
f.write(json.dumps(token))
ring = Ring(auth)
ring.update_data()
devices = ring.devices()
pprint(ring.session['profile'])
doorbell = devices['doorbots'][0]
pprint(doorbell.recording_url(doorbell.last_recording_id))
streaming_data = doorbell.live_streaming_json
for k,v in streaming_data.items():
print("{}: {}".format(k,v))
def playing_with_devices():
devices = ring.devices()
for dev in list(devices['stickup_cams'] + devices['chimes'] + devices['doorbots']):
dev.update_health_data()
print('Address: %s' % dev.address)
print('Family: %s' % dev.family)
print('ID: %s' % dev.id)
print('Name: %s' % dev.name)
print('Timezone: %s' % dev.timezone)
print('Wifi Name: %s' % dev.wifi_name)
print('Wifi RSSI: %s' % dev.wifi_signal_strength)
print('Volume: %s' % dev.volume)
dev.volume = 5
print('Volume: %s' % dev.volume)
if dev.family == 'chimes':
dev.test_sound(kind = 'ding')
dev.test_sound(kind = 'motion')
if dev.family == 'stickup_cams' and dev.lights:
dev.lights = 'on'