forked from GitHub/dbot
~lastfm playcount whatsit
This commit is contained in:
parent
ea0aab80e2
commit
9d7093e6f2
@ -5,7 +5,8 @@
|
|||||||
|
|
||||||
var _ = require('underscore')._,
|
var _ = require('underscore')._,
|
||||||
request = require('request'),
|
request = require('request'),
|
||||||
async = require('async');
|
async = require('async'),
|
||||||
|
moment = require('moment');
|
||||||
|
|
||||||
var lastfm = function(dbot) {
|
var lastfm = function(dbot) {
|
||||||
this.ApiRoot = 'http://ws.audioscrobbler.com/2.0/';
|
this.ApiRoot = 'http://ws.audioscrobbler.com/2.0/';
|
||||||
@ -112,10 +113,58 @@ var lastfm = function(dbot) {
|
|||||||
callback('idk', null);
|
callback('idk', null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
'getInfo': function(lfm, callback) {
|
||||||
|
request.get(this.ApiRoot, {
|
||||||
|
'qs': {
|
||||||
|
'user': lfm,
|
||||||
|
'method': 'user.getinfo',
|
||||||
|
'api_key': this.config.api_key,
|
||||||
|
'format': 'json'
|
||||||
|
},
|
||||||
|
'json': true
|
||||||
|
}, function(err, res, body) {
|
||||||
|
if(_.has(body, 'error') && body.error == 6 || body.error == 7) {
|
||||||
|
callback('no_user', user, null);
|
||||||
|
} else if(_.has(body, 'user')) {
|
||||||
|
callback(null, body.user);
|
||||||
|
} else {
|
||||||
|
callback('idk', null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.commands = {
|
this.commands = {
|
||||||
|
'~lastfm': function(event) {
|
||||||
|
var user = event.rUser,
|
||||||
|
lfm = event.rProfile.lastfm;
|
||||||
|
if(event.res[0]) {
|
||||||
|
user = event.res[0].user;
|
||||||
|
lfm = event.res[0].lfm;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.api.getInfo(lfm, function(err, profile) {
|
||||||
|
if(!err) {
|
||||||
|
console.log(profile);
|
||||||
|
event.reply(dbot.t('lfm_profile', {
|
||||||
|
'user': user.currentNick,
|
||||||
|
'plays': profile.playcount.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"),
|
||||||
|
'date': moment(profile.registered['#text']).format('DD/MM/YYYY'),
|
||||||
|
'link': profile.url
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
if(err == 'no_user') {
|
||||||
|
event.reply('Unknown Last.FM user.');
|
||||||
|
} else if(err == 'no_listen') {
|
||||||
|
event.reply(dbot.t('no_listen', { 'user': event.user }));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
'~suggestion': function(event) {
|
'~suggestion': function(event) {
|
||||||
this.api.getListening(event.rProfile.lastfm, function(err, track) {
|
this.api.getListening(event.rProfile.lastfm, function(err, track) {
|
||||||
if(!err) {
|
if(!err) {
|
||||||
|
@ -16,5 +16,8 @@
|
|||||||
},
|
},
|
||||||
"lfm_suggestion": {
|
"lfm_suggestion": {
|
||||||
"en": "{user}: Try listening to {name} by {artist}"
|
"en": "{user}: Try listening to {name} by {artist}"
|
||||||
|
},
|
||||||
|
"lfm_profile": {
|
||||||
|
"en": "{user} has played {plays} tracks since {date} - {link}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user