summaryrefslogtreecommitdiff
path: root/plugin.video.ring_doorbell/default.py
diff options
context:
space:
mode:
authorJed Lippold <jlippold@users.noreply.github.com>2017-07-31 08:16:09 -0400
committerenen92 <enen92@users.noreply.github.com>2017-07-31 13:16:09 +0100
commite5508900b62962b76cd03f61e5dd5ca6ba2f492d (patch)
treece379ae3a0b541262fccce7763c332f11080fa55 /plugin.video.ring_doorbell/default.py
parent5a2098247be2066f13d5b17a511e44655458cbfb (diff)
[plugin.video.ring_doorbell] 1.0.1 (#1281)
* [plugin.video.ring_doorbell] 1.0.1 * changes for kodi repo inclusion * updates fanart, cache directory
Diffstat (limited to 'plugin.video.ring_doorbell/default.py')
-rw-r--r--plugin.video.ring_doorbell/default.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/plugin.video.ring_doorbell/default.py b/plugin.video.ring_doorbell/default.py
new file mode 100644
index 0000000..dce6382
--- /dev/null
+++ b/plugin.video.ring_doorbell/default.py
@@ -0,0 +1,110 @@
+import sys
+import urllib
+import urllib2
+import urlparse
+import xbmcgui
+import xbmcplugin
+import xbmcaddon
+import json
+import time
+import uuid
+import re
+
+from ring_doorbell import Ring
+from datetime import datetime
+from dateutil import tz
+
+
+base_url = sys.argv[0]
+addon_handle = int(sys.argv[1])
+args = urlparse.parse_qs(sys.argv[2][1:])
+ADDON = xbmcaddon.Addon(id='plugin.video.ring_doorbell')
+
+xbmcplugin.setContent(addon_handle, 'movies')
+mode = args.get('mode', None)
+
+def init():
+
+
+ email = ADDON.getSetting('email')
+ password = ADDON.getSetting('password')
+ items = ADDON.getSetting('items')
+
+ if len(email) <= 7:
+ return showModal(ADDON.getLocalizedString(30200))
+ if not re.match(r'[\w.-]+@[\w.-]+.\w+', email):
+ return showModal(ADDON.getLocalizedString(30200))
+ if len(password) <= 3:
+ return showModal(ADDON.getLocalizedString(30201))
+ if items.isdigit() == False:
+ return showModal(ADDON.getLocalizedString(30202))
+
+ try:
+ myring = Ring(email, password)
+ except:
+ return showModal(ADDON.getLocalizedString(30203))
+
+ if mode is None:
+ events = []
+ for device in list(myring.stickup_cams + myring.doorbells):
+ for event in device.history(limit=items):
+ event['formatted'] = format_event(device, event)
+ event['doorbell_id'] = device.id
+ events.append(event)
+ sorted_events = sorted(events, key=lambda k: k['id'], reverse=True)
+ for event in sorted_events:
+ url = build_url({'mode': 'play', 'doorbell_id': event['doorbell_id'], 'video_id': event['id']})
+ li = xbmcgui.ListItem(str(event['formatted']), iconImage='DefaultVideo.png')
+ xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=True)
+ xbmcplugin.endOfDirectory(addon_handle)
+ else:
+ if mode[0] == 'play':
+ doorbell_id = args['doorbell_id'][0]
+ video_id = args['video_id'][0]
+ for doorbell in list(myring.stickup_cams + myring.doorbells):
+ if doorbell.id == doorbell_id:
+ try:
+ url = doorbell.recording_url(video_id)
+ play_video(url)
+ except:
+ return showModal(ADDON.getLocalizedString(30204))
+
+def play_video(path):
+ if xbmc.Player().isPlaying():
+ xbmc.Player().stop()
+
+ play_item = xbmcgui.ListItem(path=path)
+ xbmc.Player().play(item=path, listitem=play_item)
+
+def build_url(query):
+ return base_url + '?' + urllib.urlencode(query)
+
+def build_url2(query):
+ return base_url + ', ' + urllib.urlencode(query)
+
+def format_event(device, event):
+ from_zone = tz.tzutc()
+ to_zone = tz.tzlocal()
+ utc = event['created_at'].replace(tzinfo=from_zone)
+ local_time = utc.astimezone(to_zone)
+
+ local_time_string = local_time.strftime('%I:%M %p ')
+ local_time_string += ADDON.getLocalizedString(30300)
+ local_time_string += local_time.strftime(' %A %b %d %Y')
+
+ event_name = ''
+ if event['kind'] == 'on_demand':
+ event_name = ADDON.getLocalizedString(30301)
+ if event['kind'] == 'motion':
+ event_name = ADDON.getLocalizedString(30302)
+ if event['kind'] == 'ding':
+ event_name = ADDON.getLocalizedString(30303)
+
+ return ' '.join([device.name, event_name, local_time_string])
+
+def showModal(text):
+ __addon__ = xbmcaddon.Addon()
+ __addonname__ = __addon__.getAddonInfo('name')
+ xbmcgui.Dialog().ok(__addonname__, text)
+
+init() \ No newline at end of file