forked from GitHub/dbot
Adds OMDB module to replace the RottenTomatoes module.
~movie command replaces ~rt command. API key from http://www.omdbapi.com/apikey.aspx
This commit is contained in:
parent
0f0877f27a
commit
c298813b28
6
modules/omdb/config.json
Normal file
6
modules/omdb/config.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"dependencies": [ ],
|
||||||
|
"ignorable": true,
|
||||||
|
"outputPrefix": "omdb",
|
||||||
|
"api_key": "insert api key here - get from http://www.omdbapi.com/apikey.aspx"
|
||||||
|
}
|
83
modules/omdb/omdb.js
Normal file
83
modules/omdb/omdb.js
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/**
|
||||||
|
* Module Name: omdb
|
||||||
|
* Description: Interacts with the Open Movie Database to provide movie summary
|
||||||
|
* and review information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var rp = require('request-promise-native'),
|
||||||
|
_ = require('underscore')._;
|
||||||
|
|
||||||
|
var OMDB = function(dbot) {
|
||||||
|
this.apiRoot = 'http://www.omdbapi.com';
|
||||||
|
this.imdbLinkPrefix = 'https://www.imdb.com/title/';
|
||||||
|
|
||||||
|
this.internalAPI = {
|
||||||
|
formatLink: r => {
|
||||||
|
var aRating = parseFloat(r.imdbRating) * 10;
|
||||||
|
var cRating = parseFloat(r.Metascore);
|
||||||
|
|
||||||
|
if (isNaN(aRating)) {
|
||||||
|
aRating = " N/A";
|
||||||
|
} else {
|
||||||
|
var aColour = (aRating <= 5) ? '\u00033 ' : '\u00034 ';
|
||||||
|
aRating = aColour + String(aRating) + '%\u000f';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isNaN(cRating)) {
|
||||||
|
cRating = " N/A";
|
||||||
|
} else {
|
||||||
|
var cColour = (cRating <= 5) ? '\u00033 ' : '\u00034 ';
|
||||||
|
cRating = cColour + String(cRating) + '%\u000f';
|
||||||
|
}
|
||||||
|
|
||||||
|
var mString = dbot.t('omdb_film', {
|
||||||
|
'title': r.Title,
|
||||||
|
'year': r.Year,
|
||||||
|
'aRating': aRating,
|
||||||
|
'cRating': cRating
|
||||||
|
});
|
||||||
|
|
||||||
|
if (_.has(r, 'Director') && r.Director != "N/A") mString += ' [Director: ' + r.Director + ']';
|
||||||
|
if (_.has(r, 'Genre') && r.Genre != "N/A") mString += ' [Genre: ' + r.Genre + ']';
|
||||||
|
if (_.has(r, 'Plot') && r.Plot != "N/A") {
|
||||||
|
if (r.Plot.length > 140) r.Plot = r.Plot.substring(0, 140) + '...';
|
||||||
|
mString += ' [Plot: ' + r.Plot + ']';
|
||||||
|
}
|
||||||
|
|
||||||
|
mString += ' - ' + this.imdbLinkPrefix + r.imdbID;
|
||||||
|
|
||||||
|
return mString;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.commands = {
|
||||||
|
'~movie': async event => {
|
||||||
|
try {
|
||||||
|
var r = await rp({
|
||||||
|
url: this.apiRoot,
|
||||||
|
qs: {
|
||||||
|
apikey: this.config.api_key,
|
||||||
|
t: event.input[1],
|
||||||
|
plot: 'short',
|
||||||
|
r: 'json'
|
||||||
|
},
|
||||||
|
json: true
|
||||||
|
});
|
||||||
|
|
||||||
|
if (r.Response === 'True') {
|
||||||
|
event.reply(this.internalAPI.formatLink(r));
|
||||||
|
} else {
|
||||||
|
event.reply(dbot.t('omdb_noresults'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.commands['~movie'].regex = [/^movie (.+)$/, 2];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exports.fetch = dbot => new OMDB(dbot);
|
10
modules/omdb/strings.json
Normal file
10
modules/omdb/strings.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"omdb_film": {
|
||||||
|
"en": "[{title} - Audience:{aRating} - Critic:{cRating} - {year}]",
|
||||||
|
"de": "[{title} - {aRating} - {year}]"
|
||||||
|
},
|
||||||
|
"omdb_noresults": {
|
||||||
|
"en": "No films found.",
|
||||||
|
"de": "Kein Film gefunden."
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user