summaryrefslogtreecommitdiff
path: root/client/modules/Birthday.py
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2014-03-30 16:03:44 -0400
committerschneefux <schneefux+commit@schneefux.xyz>2014-03-30 16:03:44 -0400
commitd31fabf8cff5dae02e3fc759a4203bd374dddc99 (patch)
tree888ec4e6d98154f862a3b9cd17a3394b657bc02e /client/modules/Birthday.py
parent4182b5e096e081158dddd4ad5d031af94fcc63de (diff)
downloadjasper-client-d31fabf8cff5dae02e3fc759a4203bd374dddc99.tar.gz
jasper-client-d31fabf8cff5dae02e3fc759a4203bd374dddc99.zip
Initial commit
Diffstat (limited to 'client/modules/Birthday.py')
-rw-r--r--client/modules/Birthday.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/client/modules/Birthday.py b/client/modules/Birthday.py
new file mode 100644
index 0000000..1388443
--- /dev/null
+++ b/client/modules/Birthday.py
@@ -0,0 +1,64 @@
+import datetime
+import re
+from facebook import *
+from app_utils import getTimezone
+
+WORDS = ["BIRTHDAY"]
+
+
+def handle(text, mic, profile):
+ """
+ Responds to user-input, typically speech text, by listing the user's
+ Facebook friends with birthdays today.
+
+ Arguments:
+ text -- user-input, typically transcribed speech
+ mic -- used to interact with the user (for both input and output)
+ profile -- contains information related to the user (e.g., phone number)
+ """
+ oauth_access_token = profile['keys']["FB_TOKEN"]
+
+ graph = GraphAPI(oauth_access_token)
+
+ try:
+ results = graph.request(
+ "me/friends", args={'fields': 'id,name,birthday'})
+ except GraphAPIError:
+ mic.say(
+ "I have not been authorized to query your Facebook. If you would like to check birthdays in the future, please visit the Jasper dashboard.")
+ return
+ except:
+ mic.say(
+ "I apologize, there's a problem with that service at the moment.")
+ return
+
+ needle = datetime.datetime.now(tz=getTimezone(profile)).strftime("%m/%d")
+
+ people = []
+ for person in results['data']:
+ try:
+ if needle in person['birthday']:
+ people.append(person['name'])
+ except:
+ continue
+
+ if len(people) > 0:
+ if len(people) == 1:
+ output = people[0] + " has a birthday today."
+ else:
+ output = "Your friends with birthdays today are " + \
+ ", ".join(people[:-1]) + " and " + people[-1] + "."
+ else:
+ output = "None of your friends have birthdays today."
+
+ mic.say(output)
+
+
+def isValid(text):
+ """
+ Returns True if the input is related to birthdays.
+
+ Arguments:
+ text -- user-input, typically transcribed speech
+ """
+ return bool(re.search(r'birthday', text, re.IGNORECASE))