diff --git a/.brackets.json b/.brackets.json new file mode 100755 index 0000000..3959e33 --- /dev/null +++ b/.brackets.json @@ -0,0 +1,18 @@ +{ + "language": { + "javascript": { + "linting.prefer": "JSHint", + "linting.usePreferredOnly": true + } + }, + "jwolfe.file-tree-exclude.list": [ + "node_modules", + "bower_components", + ".git", + "dist", + "vendor", + "deploy", + ".hg", + "build" + ] +} diff --git a/.jshintrc b/.jshintrc new file mode 100755 index 0000000..42f5d8c --- /dev/null +++ b/.jshintrc @@ -0,0 +1,3 @@ +{ + "predef": ["angular", "define", "require", "requirejs", "module", "Phaser", "console"] +} diff --git a/app.js b/app.js index 5309875..a6e6474 100644 --- a/app.js +++ b/app.js @@ -2,11 +2,8 @@ var irc = require('irc'); var fs = require('fs'); var winston = require('winston'); -var owmapi = require('./owmapi')(); var path = require('path'); -var googletin = require('./googleapi.js')(); - var iconCodeToText = { '01d': 'selkeää', '02d': 'puolipilvistä', @@ -31,10 +28,13 @@ var iconCodeToText = { var config = require('./config'); // Load plugins -var getTemperatureString = require('./plugins/getWeather')(); +var googletin = require('./googleapi.js')(config); +var owmapi = require('./owmapi')(config); +var getTemperatureString = require('./plugins/getWeather')(config); var getDnDCharacter = require('./plugins/getCharacter')(); var getDiceString = require('./plugins/getDice')(); var getUrlString = require('./plugins/getUrl')(); +var getTweet = require('./plugins/getTweet')(config); // Configure logger // create a write stream (in append mode) @@ -176,12 +176,19 @@ var handleMessage = function(from, to, message) { console.log('error'); client.say(to, 'Youtube: jokin meni pieleen...'); }); + } else if (res = message.match(/http(s)?:\/\/(www\.)?((twitter\.com\/([a-zA-Z0-9_-]*)\/status\/([a-zA-Z0-9_-]*)))/)) { + var status = res[6]; + getTweet(status).then(function(tweet) { + client.say(to, 'Twiitti: ' + tweet); + }); } else if (res = message.match(/http(s)?:\/\/([^ ]*)/i)) { - var url = res[0]; + // Not liked. Disabled for now + /*var url = res[0]; console.log('Get url: ' + url); getUrlString(url).then(function(str) { client.say(to, 'Otsikko: ' + str); - }); + });*/ + } else { // Do nothing? :D } diff --git a/appTest.js b/appTest.js index 442c592..d0f1e6a 100644 --- a/appTest.js +++ b/appTest.js @@ -6,9 +6,59 @@ var regExp = /http(s)?:\/\/(www\.)?((youtu\.be\/([a-zA-Z0-9_-]*))|(youtube\.com\ var res = text.match(regExp); + + console.log(res[5]); console.log(res[7]); + +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'); diff --git a/config.kulmapaikka.js b/config.kulmapaikka.js index bbcfab2..392b1d0 100644 --- a/config.kulmapaikka.js +++ b/config.kulmapaikka.js @@ -41,6 +41,10 @@ var config = { user: /Palin$/, host: /(.*)\.elisa-mobile\.fi$/ }, + 'palinKoti': { + user: /Palin$/, + host: /(.*)\.elisa-laajakaista\.fi$/ + }, 'rootmer': { user: /ror$/, host: /(.*)\.inet\.fi$/ @@ -63,5 +67,17 @@ var config = { Karinainen: 654059, Lappeenranta: 648900, Helsinki: 658225 + }, + keys: { + twitter: { + consumerKey: '', + consumerSecret: '' + }, + google: { + apiKey: '' + }, + owm: { + apiKey: '' + } } }; \ No newline at end of file diff --git a/googleapi.js b/googleapi.js index bf01985..381f42b 100644 --- a/googleapi.js +++ b/googleapi.js @@ -1,7 +1,6 @@ var request = require('request'); var Promise = require('promise'); var google = require('googleapis'); -var apikey = 'AIzaSyBCLnmbmjjHvfScHNj8PBqINjoyLTAXEjg'; var youtube = google.youtube('v3'); @@ -24,6 +23,7 @@ var requestPromise = function (url, urlArgs) { module.exports = function(config) { 'use strict'; + var apikey = config.keys.google.apiKey; return { getYoutubeVideoById: function(videoId) { var promise = new Promise(function(resolve, reject) { diff --git a/owmapi.js b/owmapi.js index 948abdb..a1c348c 100644 --- a/owmapi.js +++ b/owmapi.js @@ -27,6 +27,8 @@ var requestPromise = function(url, urlArgs) { */ module.exports = function(config) { 'use strict'; + + var apikey = config.keys.owm.apiKey; return { /** Get temperatures from Pena API (Aura) */ getTemperature: function(city, code) { @@ -35,7 +37,7 @@ module.exports = function(config) { var urlArgs = { 'q': city, 'lang': language, - 'APPID': '4e3b7bbd3da07052c4fed6d342e48707' + 'APPID': apikey }; var url = 'http://api.openweathermap.org/data/2.5/weather'; var promise = requestPromise(url, urlArgs); @@ -58,7 +60,7 @@ module.exports = function(config) { var urlArgs = { 'id': idList, 'lang': language, - 'APPID': '4e3b7bbd3da07052c4fed6d342e48707' + 'APPID': apikey }; var url = 'http://api.openweathermap.org/data/2.5/group'; var promise = requestPromise(url, urlArgs); diff --git a/package.json b/package.json index 90e0f78..25ba523 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "description": "Kulmapaikka", "main": "index.js", "scripts": { + "start": "./node_modules/.bin/nodemon app.js", + "test": "./node_modules/.bin/nodemon appTest.js" }, "author": "Jukka Lankinen ", "license": "ISC", @@ -24,7 +26,8 @@ "finalhandler": "latest", "node-uuid": "latest", "irc": "latest", - "googleapis": "latest" + "googleapis": "latest", + "twitter": "latest" }, "devDependencies": { "nodemon": "^1.2.1" diff --git a/plugins/getTweet.js b/plugins/getTweet.js new file mode 100644 index 0000000..0562963 --- /dev/null +++ b/plugins/getTweet.js @@ -0,0 +1,33 @@ +var Promise = require('promise'); +var Twitter = require('twitter'); + +module.exports = function(config) { + + var client = new Twitter({ + consumer_key: config.keys.twitter.consumerKey, + consumer_secret: config.keys.twitter.consumerSecret, + access_token_key: '', + access_token_secret: '' + }); + + var getTweet = function(statusId) { + var promise = new Promise(function(resolve, reject) { + client.get('statuses/show/' + statusId, 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 = '@' + user + ': "' + tweet.text + '" ('+ dateTimeLocale +')'; + resolve(str); + } else { + reject(); + } + }); + + }); + return promise; + }; + + return getTweet; +}; \ No newline at end of file diff --git a/plugins/getWeather.js b/plugins/getWeather.js index d01e1fc..775769f 100644 --- a/plugins/getWeather.js +++ b/plugins/getWeather.js @@ -1,5 +1,4 @@ var penaapi = require('./../penaapi')(); -var owmapi = require('./../owmapi')(); var Promise = require('promise'); var iconCodeToText = { @@ -24,6 +23,8 @@ var iconCodeToText = { }; module.exports = function(config) { + var owmapi = require('./../owmapi')(config); + var getTemperatureString = function(owmCityIds) { var promise = new Promise(function(resolve, reject) {