Last active
December 16, 2015 08:39
-
-
Save micahwalter/5407518 to your computer and use it in GitHub Desktop.
Welcome to object phone!
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 os | |
from flask import Flask, request, redirect | |
from twilio import twiml | |
import cStringIO | |
import pycurl | |
import urllib | |
import simplejson as json | |
api_token = os.environ['CH_API_KEY'] | |
app = Flask(__name__) | |
@app.route('/') | |
def hello(): | |
r = twiml.Response() | |
r.say("Welcome to object phone!. ") | |
with r.gather(numDigits=1, action="initial-handler", method="POST") as g: | |
g.say("Press one on your touchtone phone to search the Cooper-Hewitt collection by object ID.zz Press 2 to just listen to a random object.") | |
return str(r) | |
@app.route('/initial-handler', methods=['GET','POST']) | |
def handlecall(): | |
digits = request.values.get('Digits', None) | |
r = twiml.Response() | |
if (digits == "1"): | |
with r.gather(action="object", method="POST") as g: | |
g.say("Please enter an object ID followed by the pound key.") | |
return str(r) | |
if (digits == "2"): | |
return redirect("/random") | |
@app.route('/object', methods=['GET','POST']) | |
def obj(): | |
obj_id = request.values.get('Digits', None) | |
r = twiml.Response() | |
buf = cStringIO.StringIO() | |
c = pycurl.Curl() | |
c.setopt(c.URL, 'https://api.collection.cooperhewitt.org/rest') | |
d = {'method':'cooperhewitt.objects.getInfo','access_token':api_token, 'id':obj_id} | |
c.setopt(c.WRITEFUNCTION, buf.write) | |
c.setopt(c.POSTFIELDS, urllib.urlencode(d) ) | |
c.perform() | |
rsp_obj = json.loads(buf.getvalue()) | |
buf.reset() | |
buf.truncate() | |
object_id = rsp_obj.get('object', []) | |
medium = object_id.get('medium', []) | |
title = object_id.get('title', []) | |
phrase = "Hi you've reached " | |
if (title): | |
phrase = phrase + title + ". " | |
if (medium): | |
phrase = phrase + "My medium is " + medium + ". " | |
r.say(phrase) | |
return str(r) | |
@app.route('/random') | |
def random(): | |
buf = cStringIO.StringIO() | |
c = pycurl.Curl() | |
c.setopt(c.URL, 'https://api.collection.cooperhewitt.org/rest') | |
d = {'method':'cooperhewitt.objects.getRandom','access_token':api_token} | |
c.setopt(c.WRITEFUNCTION, buf.write) | |
c.setopt(c.POSTFIELDS, urllib.urlencode(d) ) | |
c.perform() | |
random = json.loads(buf.getvalue()) | |
buf.reset() | |
buf.truncate() | |
object_id = random.get('object', []) | |
medium = object_id.get('medium', []) | |
title = object_id.get('title', []) | |
phrase = "Thanks, we are looking up a random object just for you. " | |
if (title): | |
phrase = phrase + "Hi, you've reached " + title + ". " | |
if (medium): | |
phrase = phrase + "My medium is " + medium + ". " | |
r = twiml.Response() | |
r.say(phrase) | |
return str(r) | |
@app.route('/sms', methods=['GET','POST']) | |
def object(): | |
obj_id = request.values.get('Body', None) | |
r = twiml.Response() | |
buf = cStringIO.StringIO() | |
c = pycurl.Curl() | |
c.setopt(c.URL, 'https://api.collection.cooperhewitt.org/rest') | |
d = {'method':'cooperhewitt.objects.getInfo','access_token':api_token, 'id':obj_id} | |
c.setopt(c.WRITEFUNCTION, buf.write) | |
c.setopt(c.POSTFIELDS, urllib.urlencode(d) ) | |
c.perform() | |
rsp_obj = json.loads(buf.getvalue()) | |
buf.reset() | |
buf.truncate() | |
object_id = rsp_obj.get('object', []) | |
medium = object_id.get('medium', []) | |
title = object_id.get('title', []) | |
phrase = "Thanks for texting me. " | |
if (title): | |
phrase = phrase + "I'm called " + title + ". " | |
if (medium): | |
medium_phrase = "My medium is " + medium + ". " | |
url = encode(int(obj_id)) | |
url = "To read more about me, click http://cprhw.tt/o/" + str(url) | |
r.sms(phrase) | |
r.sms(medium_phrase) | |
r.sms(url) | |
return str(r) | |
def encode(num): | |
alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ' | |
base_count = len(alphabet) | |
encode = '' | |
if (num < 0): | |
return '' | |
while (num >= base_count): | |
mod = num % base_count | |
encode = alphabet[mod] + encode | |
num = num / base_count | |
if (num): | |
encode = alphabet[num] + encode | |
return encode | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment