Permalink
Browse files

Merge pull request #561 from mjw56/master

ESPN headline generator
  • Loading branch information...
2 parents 67b05a5 + 4eea9d5 commit 2cd7a9549630c7d149144312a03d132017f4c444 Tom Bell committed Jan 10, 2013
Showing with 82 additions and 0 deletions.
  1. +82 −0 src/scripts/espn.coffee
View
@@ -0,0 +1,82 @@
+# Description:
+# Grab a headline from ESPN through querying hubot
+#
+# Dependencies:
+# None
+#
+# Configuration:
+# HUBOT_ESPN_ACCOUNT_KEY
+#
+# Commands:
+# hubot espn headline - Displays a random headline from ESPN.com
+# hubot espn mlb <name of team> - Displays ESPN.com MLB team homepage
+# hubot espn nfl <name of team> - Displays ESPN.com NFL team homepage
+# hubot espn nba <name of team> - Displays ESPN.com NBA team homepage
+# hubot espn nhl <name of team> - Displays ESPN.com NHL team homepage
+#
+# Author:
+# mjw56
+
+espnApiKey = process.env.HUBOT_ESPN_ACCOUNT_KEY
+unless espnApiKey
+ throw "You must enter your HUBOT_ESPN_ACCOUNT_KEY in your environment variables"
+
+module.exports = (robot) ->
+ robot.respond /espn headline/i, (msg) ->
+ search = escape(msg.match[2])
+ msg.http('http://api.espn.com/v1/sports/news/headlines?apikey=' + espnApiKey)
+ .get() (err, res, body) ->
+ result = JSON.parse(body)
+
+ if result.headlines.count <= 0
+ msg.send "Couldn't find any headlines"
+ return
+
+ urls = [ ]
+ for child in result.headlines
+ urls.push(child.headline + "- " + child.links.web.href)
+
+ rnd = Math.floor(Math.random()*urls.length)
+ msg.send urls[rnd]
+
+ robot.respond /(espn)( mlb) (.*)/i, (msg) ->
+ msg.http('http://api.espn.com/v1/sports/baseball/mlb/teams?apikey=' + espnApiKey)
+ .get() (err, res, body) ->
+ result = JSON.parse(body)
+ getTeamPage msg, result, (url) ->
+ msg.send url
+
+ robot.respond /(espn)( nfl) (.*)/i, (msg) ->
+ msg.http('http://api.espn.com/v1/sports/football/nfl/teams?apikey=' + espnApiKey)
+ .get() (err, res, body) ->
+ result = JSON.parse(body)
+ getTeamPage msg, result, (url) ->
+ msg.send url
+
+ robot.respond /(espn)( nba) (.*)/i, (msg) ->
+ msg.http('http://api.espn.com/v1/sports/basketball/nba/teams?apikey=' + espnApiKey)
+ .get() (err, res, body) ->
+ result = JSON.parse(body)
+ getTeamPage msg, result, (url) ->
+ msg.send url
+
+ robot.respond /(espn)( nhl) (.*)/i, (msg) ->
+ msg.http('http://api.espn.com/v1/sports/hockey/nhl/teams?apikey=' + espnApiKey)
+ .get() (err, res, body) ->
+ result = JSON.parse(body)
+ getTeamPage msg, result, (url) ->
+ msg.send url
+
+getTeamPage = (msg, json, cb) ->
+ found = off
+ for child in json.sports[0].leagues[0].teams
+ team = child.name.toLowerCase()
+ city = child.location.toLowerCase()
+ input = msg.match[3].toLowerCase()
+
+ if team is input || city is input
+ found = on
+ cb 'Team news for the '+ child.location + ' ' + child.name + '- ' + child.links.web.teams.href
+
+ if not found
+ cb 'Could not find that team'

0 comments on commit 2cd7a95

Please sign in to comment.