In [ ]:
import requests, os, json
ALCHEMY_KEY = os.getenv('ALCHEMY_KEY')
MAKER_KEY = os.getenv('MAKER_KEY')
MAKER_EVENT_NAME = os.getenv('MAKER_EVENT_NAME')
TOPIC = os.getenv('TOPIC', 'bluemix')
MAKER_EVENT_URL = 'https://maker.ifttt.com/trigger/{event}/with/key/{key}'
MEETUP_URL = 'http://www.meetup.com/find/events/?allMeetups=false&keywords={topic}&radius=50&userFreeform={city}&change=yes&eventFilter=mysugg'
In [ ]:
def send_maker_request(username, location, meetup_url):
post_url = MAKER_EVENT_URL.format(event=MAKER_EVENT_NAME, key=MAKER_KEY)
values = dict(value1=username, value2=location, value3=meetup_url)
r = requests.post(post_url, data=json.dumps(values), headers={'Content-Type': 'application/json'}, timeout=90)
r.raise_for_status()
def send_alchemy_request(tweet):
resp = requests.get('http://gateway-a.watsonplatform.net/calls/text/TextGetRankedNamedEntities', params=dict(
apikey=ALCHEMY_KEY,
text=tweet,
outputMode='json',
timeout=10
))
resp.raise_for_status()
return resp
In [ ]:
# GET /_echo
print(REQUEST)
In [ ]:
# GET /_city
# Just run the 'text' parameter through the Alchemy entity extraction
resp = send_alchemy_request(json.loads(REQUEST)['args']['text'])
print(resp.text)
In [ ]:
# GET /generate_search_url
# Find the city's name by running the 'text' parameter through the Alchemy entity extraction
req = json.loads(REQUEST)
resp = send_alchemy_request(req['args']['text'])
named_entities = resp.json()['entities']
cities = [
entity['text'] for entity in named_entities
if entity['type'] == 'City'
]
users = req['args']['user']
# If a city was found, trigger the Maker event with the querying username and search URL
if len(cities) > 0 and len(users) > 0:
username = users[0]
mentioned_city = cities[0]
url = MEETUP_URL.format(city=mentioned_city, topic=TOPIC)
send_maker_request('@'+username, mentioned_city, url)