Added Mastodon support
This commit is contained in:
parent
3fec503fda
commit
480249e3ee
193
appTest.js
193
appTest.js
|
@ -1,193 +0,0 @@
|
|||
|
||||
var getKernelData = require('./plugins/getKernel')();
|
||||
|
||||
var res = 'longterm';
|
||||
|
||||
getKernelData(res).then(function(data) {
|
||||
var version = res;
|
||||
var text = 'kernel: ';
|
||||
|
||||
// Store current versions!
|
||||
var releaseToVersion = {};
|
||||
data.releases.forEach(function(val) {
|
||||
var regex = /([0-9]+?)(\.([0-9]+))?(\.([0-9]+))?/;
|
||||
var result = val.version.match(regex);
|
||||
|
||||
var major = result[1];
|
||||
var minor = result[3];
|
||||
|
||||
if(typeof major !== 'undefined' && typeof minor !== 'undefined') {
|
||||
var releaseWithVersion = val.moniker + '-' + major + '-' + minor;
|
||||
var release = val.moniker + '';
|
||||
|
||||
if(typeof releaseToVersion[releaseWithVersion] !== 'undefined') {
|
||||
if(releaseToVersion[releaseWithVersion] !== val.version) {
|
||||
// new release
|
||||
|
||||
}
|
||||
}
|
||||
if(typeof releaseToVersion[release] === 'undefined') {
|
||||
releaseToVersion[release] = val.version;
|
||||
}
|
||||
|
||||
releaseToVersion[releaseWithVersion] = val.version;
|
||||
}
|
||||
});
|
||||
|
||||
if(typeof releaseToVersion[version] !== 'undefined') {
|
||||
text += 'Viimeisin versio on ' + releaseToVersion[version] + ' (' + version + ')';
|
||||
} else {
|
||||
|
||||
text += 'Viimeisin vakaa versio on ' + data.latest_stable.version;
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
var text = 'Hei! https://youtu.be/TLW6eTV8F_I hienoo';
|
||||
var text = 'Hei! https://www.youtube.com/watch?v=AMlf-KXVOsQ hienoo';
|
||||
var text = 'Hei! https://www.youtu.be/TLW6eTV8F_I https://www.youtube.com/watch?v=AMlf-KXVOsQ hienoo';
|
||||
var regExp = /http(s)?:\/\/(www\.)?((youtu\.be\/([a-zA-Z0-9_-]*))|(youtube\.com\/watch\?v=([a-zA-Z0-9_-]*)))/;
|
||||
|
||||
var res = text.match(regExp);
|
||||
|
||||
|
||||
|
||||
console.log(res[5]);
|
||||
console.log(res[7]);
|
||||
|
||||
var DDG = require('node-ddg-api').DDG;
|
||||
|
||||
var ddg = new DDG('my-app-name');
|
||||
|
||||
ddg.instantAnswer('dw', {skip_disambig: '0'}, function(err, response) {
|
||||
console.log(response);
|
||||
console.log('"' + response.RelatedTopics[0].Text + '" | ' + response.RelatedTopics[0].FirstURL);
|
||||
});
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
var tweet = "https://twitter.com/lanxu/status/266184139324157952";
|
||||
|
||||
var config = require('./config');
|
||||
var getTweet = require('./plugins/getTweet')(config);
|
||||
|
||||
var tRegExp = /http(s)?:\/\/(www\.)?((twitter\.com\/([a-zA-Z0-9_-]*)\/status\/([a-zA-Z0-9_-]*)))/;
|
||||
var res = tweet.match(tRegExp);
|
||||
var sta = console.log(res[6]);
|
||||
getTweet(sta).then(
|
||||
function(tweet) {
|
||||
console.log(tweet);
|
||||
}
|
||||
);
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
var Twitter = require('twitter');
|
||||
*/
|
||||
/*client.get('statuses/user_timeline', params, function(error, tweets, response){
|
||||
if (!error) {
|
||||
console.log(tweets);
|
||||
}
|
||||
});*/
|
||||
/*client.stream('statuses/filter', {track: 'twitter'}, function(stream){
|
||||
stream.on('data', function(tweet) {
|
||||
console.log(tweet.text);
|
||||
});
|
||||
|
||||
stream.on('error', function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
});
|
||||
*/
|
||||
/*
|
||||
|
||||
client.get('statuses/show/266184139324157952', function(error, tweet, response) {
|
||||
if(!error) {
|
||||
var user = tweet.user.screen_name;
|
||||
var time = tweet.created_at;
|
||||
var dateTime = new Date(time);
|
||||
var dateTimeLocale = dateTime.toLocaleDateString('fi-FI') + ' ' + dateTime.getHours() + '.' + dateTime.getMinutes();
|
||||
var str = 'Twiitti: @' + user + ': "' + tweet.text + '" ('+ dateTimeLocale +')';
|
||||
console.log(str);
|
||||
}
|
||||
});
|
||||
*/
|
||||
/*
|
||||
var getYoutubeTitle = function(query) {
|
||||
var google = require('googleapis');
|
||||
var apikey = 'AIzaSyBCLnmbmjjHvfScHNj8PBqINjoyLTAXEjg';
|
||||
|
||||
var youtube = google.youtube('v3');
|
||||
var params = {-
|
||||
part: 'snippet, statistics',
|
||||
q: 'https://www.youtube.com/watch?v=XNwKqvCZ4kU',
|
||||
type: 'video',
|
||||
key: apikey
|
||||
};
|
||||
|
||||
var result = youtube.search.list(params, function(err, resp) {
|
||||
if (err) {
|
||||
console.log('An error occured', err);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(resp.items[0].snippet.title);
|
||||
console.log(resp.items[0].snippet.channelTitle);
|
||||
|
||||
|
||||
console.log(resp);
|
||||
});
|
||||
|
||||
console.log(result);
|
||||
//var resultString = 'Title: '+;
|
||||
};
|
||||
*/
|
||||
|
||||
//console.log('YouTube!', getYoutubeTitle());
|
||||
|
||||
|
||||
/*
|
||||
getTemperatureString().then(function(result) {
|
||||
console.log(result);
|
||||
});
|
||||
*/
|
||||
|
||||
/*
|
||||
var res = null;
|
||||
var message= '.heita 4d6';
|
||||
if (res = message.match(/^\.heita ([0-9]+)d([0-9]+)$/i)) {
|
||||
console.log(getDiceString(res[1], res[2]));
|
||||
}
|
||||
*/
|
||||
/*
|
||||
var message = '.saa Tampere'; var res = null;
|
||||
if (res = message.match(/^\.saa ([^0-9 ]+)$/i)) {
|
||||
console.log('kaupunki', res[1]);
|
||||
owmapi.getTemperature(res[1]).then(function(result) {
|
||||
console.log(result);
|
||||
|
||||
if(result.cod === '404') {
|
||||
console.log('Eioo');
|
||||
} else {
|
||||
var city = result.name;
|
||||
var country = result.sys.country;
|
||||
var temp = (result.main.temp-273.15).toFixed(1);
|
||||
var sunriseDate = new Date(result.sys.sunrise*1000);
|
||||
var sunsetDate = new Date(result.sys.sunset*1000);
|
||||
|
||||
var sunrise = sunriseDate.getHours() + '.' + sunriseDate.getMinutes();
|
||||
var sunset = sunsetDate.getHours() + '.' + sunsetDate.getMinutes();
|
||||
|
||||
var humidity = result.main.humidity;
|
||||
var pressure = result.main.pressure;
|
||||
|
||||
console.log(city, temp, country, sunrise, sunset, humidity, pressure);
|
||||
}
|
||||
}, function(error) {
|
||||
console.log('fas',error);
|
||||
});
|
||||
}
|
||||
|
||||
*/
|
38
package.json
38
package.json
|
@ -4,33 +4,35 @@
|
|||
"description": "Kulmapaikka",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "./node_modules/.bin/nodemon app.js",
|
||||
"test": "./node_modules/.bin/nodemon appTest.js"
|
||||
"start": "./node_modules/.bin/nodemon app.js",
|
||||
"test": "./node_modules/.bin/nodemon appTest.js"
|
||||
},
|
||||
"author": "Jukka Lankinen <jukka.lankinen@gmail.com>",
|
||||
"license": "ISC",
|
||||
"repository": {
|
||||
"type" : "hg",
|
||||
"url" : "https://lanxu@bitbucket.org/lanxu/kulmapaikka-ircbot"
|
||||
"repository": {
|
||||
"type": "hg",
|
||||
"url": "https://lanxu@bitbucket.org/lanxu/kulmapaikka-ircbot"
|
||||
},
|
||||
"dependencies": {
|
||||
"node-dev": "3.1.3",
|
||||
"chance": "=1.0.6",
|
||||
"cron": "1.2.1",
|
||||
"file-stream-rotator": "0.1.0",
|
||||
"finalhandler": "1.0.0",
|
||||
"googleapis": "18.0.0",
|
||||
"html-to-text": "^3.3.0",
|
||||
"irc": "0.5.2",
|
||||
"mkdirp": "~0.5.1",
|
||||
"morgan": "1.8.1",
|
||||
"node-ddg-api": "0.1.4",
|
||||
"node-dev": "3.1.3",
|
||||
"node-uuid": "1.4.7",
|
||||
"promise": "^7.0.0",
|
||||
"request": "^2.55.0",
|
||||
"request-promise": "^4.1.1",
|
||||
"twitter": "1.7.0",
|
||||
"winston": "2.3.1",
|
||||
"winston-daily-rotate-file": "1.4.6",
|
||||
"file-stream-rotator": "0.1.0",
|
||||
"morgan": "1.8.1",
|
||||
"request-promise": "^4.1.1",
|
||||
"request": "^2.55.0",
|
||||
"promise": "^7.0.0",
|
||||
"finalhandler": "1.0.0",
|
||||
"node-uuid": "1.4.7",
|
||||
"irc": "0.5.2",
|
||||
"googleapis": "18.0.0",
|
||||
"node-ddg-api": "0.1.4",
|
||||
"twitter": "1.7.0",
|
||||
"chance": "=1.0.6"
|
||||
"html-to-text": "3.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^1.2.1"
|
||||
|
|
85
plugins/mastodon.js
Normal file
85
plugins/mastodon.js
Normal file
|
@ -0,0 +1,85 @@
|
|||
var Promise = require('promise');
|
||||
var requestPromise = require('./helpers/requestPromise.js');
|
||||
var BasePlugin = require('./base.js');
|
||||
var logger = require('winston');
|
||||
var htmlToText = require('html-to-text');
|
||||
class Mastodon extends BasePlugin {
|
||||
constructor(config) {
|
||||
super(config);
|
||||
this.name = 'Mastodon';
|
||||
}
|
||||
|
||||
test(input) {
|
||||
var res = null;
|
||||
if (res = input.match(/http(s)?:\/\/(www\.)?((.*\..*\/users\/([a-zA-Z0-9_-]*)\/statuses\/([0-9_-]*)))/)) {
|
||||
return true;
|
||||
}
|
||||
if (res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/@([a-zA-Z0-9_-]*)\/([0-9_-]*)))/)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
getToot(host, statusId) {
|
||||
var promise = new Promise(function(resolve, reject) {
|
||||
var url = 'https://' + host + '/api/v1/statuses/' + statusId;
|
||||
requestPromise(url, {}, {
|
||||
'Accept': 'application/json',
|
||||
}).then(function(toot) {
|
||||
if(!toot.error) {
|
||||
var user = toot.account.username;
|
||||
var time = toot.created_at;
|
||||
var dateTime = new Date(time);
|
||||
var dateTimeLocale = dateTime.toLocaleDateString('fi-FI') + ' ' + dateTime.getHours() + '.' + dateTime.getMinutes();
|
||||
|
||||
var tootContent = toot.content;
|
||||
var tootContent = htmlToText.fromString(tootContent, {
|
||||
wordwrap: false,
|
||||
ignoreHref: true,
|
||||
preserveNewlines: false,
|
||||
});
|
||||
|
||||
var str = '@' + user + ': "' + tootContent + '" ('+ dateTimeLocale +')';
|
||||
str = str.replace(/(?:\r\n|\r|\n)/g, ' ');
|
||||
|
||||
resolve(str);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
return promise;
|
||||
}
|
||||
|
||||
result(input) {
|
||||
var that = this;
|
||||
var resultPromise = new Promise(function(resultResolve, resultReject) {
|
||||
var host = null;
|
||||
var tootId = null;
|
||||
|
||||
var res = null;
|
||||
if (res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/users\/([a-zA-Z0-9_-]*)\/statuses\/([0-9_-]*)))/)) {
|
||||
host = res[5];
|
||||
tootId = res[7];
|
||||
}
|
||||
|
||||
if (res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/@([a-zA-Z0-9_-]*)\/([0-9_-]*)))/)) {
|
||||
host = res[5];
|
||||
tootId = res[7];
|
||||
}
|
||||
|
||||
if (host !== null && tootId !== null) {
|
||||
that.getToot(host, tootId).then(function(toot) {
|
||||
resultResolve('Töötti: ' + toot);
|
||||
}, function(error) {
|
||||
resultReject('Töötti: Jokin virhe tapahtui');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return resultPromise;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Mastodon;
|
Loading…
Reference in New Issue
Block a user