From 2f747d618c04edc7d4e7881b71074406c086b0d4 Mon Sep 17 00:00:00 2001 From: reality Date: Sat, 12 Oct 2013 21:46:04 +0000 Subject: [PATCH] basic rotten tomatoes module with a search thing --- modules/rt/config.json | 4 ++++ modules/rt/rt.js | 52 +++++++++++++++++++++++++++++++++++++++++ modules/rt/strings.json | 8 +++++++ 3 files changed, 64 insertions(+) create mode 100644 modules/rt/config.json create mode 100644 modules/rt/rt.js create mode 100644 modules/rt/strings.json diff --git a/modules/rt/config.json b/modules/rt/config.json new file mode 100644 index 0000000..9c61bd4 --- /dev/null +++ b/modules/rt/config.json @@ -0,0 +1,4 @@ +{ + "apikey": "http://developer.rottentomatoes.com/", + "outputPrefix": "\u00033R\u00034T\u000f" +} diff --git a/modules/rt/rt.js b/modules/rt/rt.js new file mode 100644 index 0000000..104d67d --- /dev/null +++ b/modules/rt/rt.js @@ -0,0 +1,52 @@ +/** + * Module Name: Rotten Tomatoes + * Description: Various Rotten Tomatoes functionality. + */ + +var _ = require('underscore')._, + request = require('request'); + +var rt = function(dbot) { + var ApiRoot = 'http://api.rottentomatoes.com/api/public/v1.0/'; + + this.internalAPI = { + 'formatLink': function(m) { + var rating = m.ratings.audience_score; + if(_.has(m.ratings, 'critics_score')) rating = m.ratings.critics_score; + var rColour = (rating <= 50) ? '\u00033 ' : '\u00034 '; + rating = rColour + String(rating) + '%\u000f'; + + return dbot.t('rt_film', { + 'title': m.title, + 'year': m.year, + 'link': m.links.alternate, + 'rating': rating + }); + } + }; + + this.commands = { + '~film': function(event) { + //http://api.rottentomatoes.com/api/public/v1.0/movies.json?q={search-term}&page_limit={results-per-page}&page={page-number} + request.get(ApiRoot + 'movies.json', { + 'qs': { + 'q': event.input[1], + 'page_limit': 1, + 'apikey': this.config.apikey + }, + 'json': true + }, function(error, response, body) { + if(_.isObject(body) && _.has(body, 'movies')) { + event.reply(this.internalAPI.formatLink(body.movies[0])); + } else { + event.reply(dbot.t('rt_noresults')); + } + }.bind(this)); + } + }; + this.commands['~film'].regex = [/^~film (.+)$/, 2]; +}; + +exports.fetch = function(dbot) { + return new rt(dbot); +}; diff --git a/modules/rt/strings.json b/modules/rt/strings.json new file mode 100644 index 0000000..45813ae --- /dev/null +++ b/modules/rt/strings.json @@ -0,0 +1,8 @@ +{ + "rt_film": { + "en": "[{title} -{rating} - {year}] - {link}" + }, + "rt_noresults": { + "en": "No films found." + } +}