From 8745dcde4ed5a1661c058f4bfb1bf1fbc9f999a0 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 16 Mar 2014 18:51:18 +0100 Subject: news: initialize newsbot.js --- news/newsbot.js | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 news/newsbot.js (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js new file mode 100644 index 00000000..fda7f7f4 --- /dev/null +++ b/news/newsbot.js @@ -0,0 +1,151 @@ +var IRC = require('irc') +var FeedParser = require('feedparser') +var Request = require('request') + +var irc_server = 'ire.retiolum' +var master_nick = 'knews' +var news_channel = '&testing' +var feeds_file = 'new_feeds' +var feedbot_loop_delay = 60 * 1000 // [ms] + +function main () { + // XXX mangle nick to not clash with newsbot.py + var master = new IRC.Client(irc_server, master_nick + '_2', { + channels: [ news_channel ], + }) + + master.on('message' + news_channel, function (nick, text, message) { + if (is_talking_to(master_nick, text)) { + var parse = /^[^:]*:\s*(\S*\S)\s*$/.exec(text) + if (parse) { + client.say(to, nick + ': ' + parse[1] + '?') + } + }) + + master.once('registered', function () { + // read feeds file and create a feedbot for each entry + require('fs') + .readFileSync(feeds_file) + .toString() + .split('\n') + //.filter((function () { + // var n = 2; + // return function () { + // return n-- > 0 + // } + //})()) + .filter(function (line) { + return line.length > 0 + }) + .forEach(function (line) { + var parts = line.split('|') + if (parts.length !== 3) { + console.log('bad new_feeds line ' + lines + ': ' + line) + return + } + + // XXX mangle nick to not clash with newsbot.py + var nick = parts[0] + '_2' + var uri = parts[1] + var channels = parts[2].split(' ') + + // XXX mangle channel to not clash with newsbot.py + channels = channels.map(function (channel) { + return channel === '#news' ? news_channel : channel + }) + + return create_feedbot(nick, uri, channels) + }) + }) +} + +function create_feedbot (nick, uri, channels) { + var client = new IRC.Client(irc_server, nick, { + channels: channels, + }) + + // say text in every joined channel + function broadcast (text) { + Object.keys(client.chans).forEach(function (channel) { + client.say(channel, text) + }) + } + + client.once('registered', loop_feedparser) + + client.on('error', function (error) { + console.log('Error:', error) + }) + + // TODO stopping criteria + function loop_feedparser () { + try { + var request = Request(uri) + var feedparser = new FeedParser() + } catch (error) { + return broadcast('4' + error) + } + + request.on('error', function (error) { + broadcast('4request ' + error) + }) + request.on('response', function (response) { + if (response.statusCode !== 200) { + return this.emit('error', new Error('Bad status code')) + } + this.pipe(feedparser) + }) + + var items = [] + + feedparser.on('error', function (error) { + broadcast('4feedparser ' + error) + }) + feedparser.on('readable', function () { + for (var item; item = this.read(); ) { + items.push(item) + } + }) + feedparser.on('end', function () { + items = items.sort(function (a, b) { + return a.date - b.date + }) + + var indexOfLastTitle = items + .map(function (x) { return x.title }) + .indexOf(client.lastTitle) + + var newitems = items + var olditems = [] + + // if items contain lastTitle, then only items after that are news + if (!!~indexOfLastTitle) { + olditems = newitems.splice(0, indexOfLastTitle + 1) + } + + if (newitems.length > 0) { + // only broadcast news if we're not starting up + // (i.e. we already have a lastTitle) + if (client.lastTitle) { + newitems.forEach(function (item) { + broadcast(item.title + ' ' + item.link) + }) + } + + client.lastTitle = newitems[newitems.length - 1].title + } + + return setTimeout(loop_feedparser, feedbot_loop_delay) + }) + } +} + +// return true if text "is talking to" my_nick +function is_talking_to (my_nick, text) { + return text.slice(0, my_nick.length) === my_nick + && text[my_nick.length] === ':' +} + +if (require.main === module) { + main() +} -- cgit v1.2.3 From f21fd0c806da24212b04eeb009222b1ed1c1cea9 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 16 Mar 2014 20:10:00 +0100 Subject: newsbot.js: fix typo --- news/newsbot.js | 1 + 1 file changed, 1 insertion(+) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index fda7f7f4..9228e5d4 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -20,6 +20,7 @@ function main () { if (parse) { client.say(to, nick + ': ' + parse[1] + '?') } + } }) master.once('registered', function () { -- cgit v1.2.3 From e90b6909dd62e95d58f434a4352ef2163e3f62c6 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 16 Mar 2014 20:10:24 +0100 Subject: newsbos.js: i cant hear you(deaf_myself) --- news/newsbot.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 9228e5d4..62609f00 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -73,6 +73,7 @@ function create_feedbot (nick, uri, channels) { } client.once('registered', loop_feedparser) + client.once('registered', deaf_myself) client.on('error', function (error) { console.log('Error:', error) @@ -139,6 +140,9 @@ function create_feedbot (nick, uri, channels) { return setTimeout(loop_feedparser, feedbot_loop_delay) }) } + function deaf_myself () { + client.send('mode', nick, '+D') + } } // return true if text "is talking to" my_nick -- cgit v1.2.3 From 9f5a2061c693e032ee7ac50741e95afd8a7b53df Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 00:41:33 +0100 Subject: newsbot.js: function_parser, now live --- news/newsbot.js | 92 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 78 insertions(+), 14 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 62609f00..ba3dfde3 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -1,31 +1,40 @@ var IRC = require('irc') var FeedParser = require('feedparser') var Request = require('request') +var Parse = require('shell-quote').parse +var FS = require('fs') var irc_server = 'ire.retiolum' var master_nick = 'knews' -var news_channel = '&testing' +var news_channel = '#news' var feeds_file = 'new_feeds' var feedbot_loop_delay = 60 * 1000 // [ms] +var slaves = {} + function main () { - // XXX mangle nick to not clash with newsbot.py - var master = new IRC.Client(irc_server, master_nick + '_2', { + var master = new IRC.Client(irc_server, master_nick, { channels: [ news_channel ], }) master.on('message' + news_channel, function (nick, text, message) { if (is_talking_to(master_nick, text)) { - var parse = /^[^:]*:\s*(\S*\S)\s*$/.exec(text) - if (parse) { - client.say(to, nick + ': ' + parse[1] + '?') + var request = parse_request(text) + if (request) { + return run_command(request.method, request.params, function (error, result) { + if (error) { + return master.say(news_channel, '4' + error) + } else { + return master.say(news_channel, result) + } + }) } } }) master.once('registered', function () { // read feeds file and create a feedbot for each entry - require('fs') + FS .readFileSync(feeds_file) .toString() .split('\n') @@ -45,16 +54,10 @@ function main () { return } - // XXX mangle nick to not clash with newsbot.py - var nick = parts[0] + '_2' + var nick = parts[0] var uri = parts[1] var channels = parts[2].split(' ') - // XXX mangle channel to not clash with newsbot.py - channels = channels.map(function (channel) { - return channel === '#news' ? news_channel : channel - }) - return create_feedbot(nick, uri, channels) }) }) @@ -65,6 +68,13 @@ function create_feedbot (nick, uri, channels) { channels: channels, }) + slaves[nick] = { + client: client, + nick: nick, + uri: uri, + channels: channels, + } + // say text in every joined channel function broadcast (text) { Object.keys(client.chans).forEach(function (channel) { @@ -150,6 +160,60 @@ function is_talking_to (my_nick, text) { return text.slice(0, my_nick.length) === my_nick && text[my_nick.length] === ':' } + +function parse_request (text) { + var parse = Parse(text) + return { + method: parse[1], + params: parse.slice(2), + } +} + +function run_command (methodname, params, callback) { + var method = methods[methodname] + if (method) { + return method(params, callback) + } else { + return callback(new Error('dunno what ' + methodname + ' is')); + } +} + +var methods = {} +methods.add = function (params, callback) { + create_feedbot(params[0], params[1], [news_channel]) + return callback(null) +} +methods.del = function (params, callback) { + var slave = slaves[params[0]] + if (slave) { + slave.client.disconnect() + delete slaves[params[0]] + return callback(null) + } else { + return callback(new Error('botname not found')) + } +} +methods.save = function (params, callback) { + var feeds = Object.keys(slaves) + .map(function (nick) { + return slaves[nick] + }) + .map(function (slave) { + return [ + slave.nick, + slave.uri, + slave.channels.join(' '), + ].join('|') + }).join('\n') + '\n' + return FS.writeFile(feeds_file, feeds, function (error) { + if (error) { + return callback(error) + } else { + return callback(null, 'Feeds saved') + } + }) +} + if (require.main === module) { main() -- cgit v1.2.3 From e13c7bcd25311ce7b446074343bf733322edc992 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 17 Mar 2014 00:58:26 +0100 Subject: newsbot.js: handle gzip/deflate content-encoding --- news/newsbot.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 62609f00..4171e968 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -95,6 +95,17 @@ function create_feedbot (nick, uri, channels) { if (response.statusCode !== 200) { return this.emit('error', new Error('Bad status code')) } + var output = res + switch (res.headers['content-encoding']) { + case 'gzip': + output = zlib.createGunzip() + res.pipe(output) + break + case 'deflate': + output = zlib.createInflate() + res.pipe(output) + break + } this.pipe(feedparser) }) -- cgit v1.2.3 From a1980d18e89cc8f8d6b2598df55a888429bb7f06 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 00:59:57 +0100 Subject: newsbot.js: url_shortener dummy --- news/newsbot.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index ba3dfde3..35587d39 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -140,7 +140,9 @@ function create_feedbot (nick, uri, channels) { // (i.e. we already have a lastTitle) if (client.lastTitle) { newitems.forEach(function (item) { - broadcast(item.title + ' ' + item.link) + return getShortLink(item.link, function (error, shortlink) { + return broadcast(item.title + ' ' + shortlink) + }) }) } @@ -178,6 +180,10 @@ function run_command (methodname, params, callback) { } } +function getShortLink (link, callback) { + return callback(null, link) +} + var methods = {} methods.add = function (params, callback) { create_feedbot(params[0], params[1], [news_channel]) -- cgit v1.2.3 From 0e6a8d12f55f5e8c1c5afb8f91ebcb5564590830 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 01:00:22 +0100 Subject: newsbot.js: check if name taken --- news/newsbot.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 35587d39..73a6111b 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -186,8 +186,12 @@ function getShortLink (link, callback) { var methods = {} methods.add = function (params, callback) { - create_feedbot(params[0], params[1], [news_channel]) - return callback(null) + if (slaves.hasOwnProperty(params[0])) { + return callback(new Error('name already taken')) + } else { + create_feedbot(params[0], params[1], [news_channel]) + return callback(null) + } } methods.del = function (params, callback) { var slave = slaves[params[0]] -- cgit v1.2.3 From a857b628b5a6d9e4e6e5d0f0192ab6f657afaffb Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 17 Mar 2014 01:01:22 +0100 Subject: newsbot.js: s/res/response/ --- news/newsbot.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 683bf39a..998482cd 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -105,15 +105,15 @@ function create_feedbot (nick, uri, channels) { if (response.statusCode !== 200) { return this.emit('error', new Error('Bad status code')) } - var output = res - switch (res.headers['content-encoding']) { + var output = response + switch (response.headers['content-encoding']) { case 'gzip': output = zlib.createGunzip() - res.pipe(output) + response.pipe(output) break case 'deflate': output = zlib.createInflate() - res.pipe(output) + response.pipe(output) break } this.pipe(feedparser) -- cgit v1.2.3 From 45dae6eb0ac52a2eee2e24b0bfb553a0d7371a2e Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 17 Mar 2014 01:05:55 +0100 Subject: newsbot.js: use guid to identify articles --- news/newsbot.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 998482cd..18a7fb07 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -134,22 +134,22 @@ function create_feedbot (nick, uri, channels) { return a.date - b.date }) - var indexOfLastTitle = items - .map(function (x) { return x.title }) - .indexOf(client.lastTitle) + var indexOfLastGuid = items + .map(function (x) { return x.guid }) + .indexOf(client.lastGuid) var newitems = items var olditems = [] - // if items contain lastTitle, then only items after that are news - if (!!~indexOfLastTitle) { - olditems = newitems.splice(0, indexOfLastTitle + 1) + // if items contain lastGuid, then only items after that are news + if (!!~indexOfLastGuid) { + olditems = newitems.splice(0, indexOfLastGuid + 1) } if (newitems.length > 0) { // only broadcast news if we're not starting up - // (i.e. we already have a lastTitle) - if (client.lastTitle) { + // (i.e. we already have a lastGuid) + if (client.lastGuid) { newitems.forEach(function (item) { return getShortLink(item.link, function (error, shortlink) { return broadcast(item.title + ' ' + shortlink) @@ -157,7 +157,7 @@ function create_feedbot (nick, uri, channels) { }) } - client.lastTitle = newitems[newitems.length - 1].title + client.lastGuid = newitems[newitems.length - 1].guid } return setTimeout(loop_feedparser, feedbot_loop_delay) -- cgit v1.2.3 From e653d6c832f8fce5937fb782286fd5856e21b204 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 01:35:06 +0100 Subject: newsboss.js: url shortening ftw --- news/newsbot.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 18a7fb07..499f595a 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -3,12 +3,16 @@ var FeedParser = require('feedparser') var Request = require('request') var Parse = require('shell-quote').parse var FS = require('fs') +var HTTP = require('http') +var FormData = require('form-data') +var URL = require('url') var irc_server = 'ire.retiolum' var master_nick = 'knews' var news_channel = '#news' var feeds_file = 'new_feeds' var feedbot_loop_delay = 60 * 1000 // [ms] +var url_shortener_host = 'go' var slaves = {} @@ -192,7 +196,26 @@ function run_command (methodname, params, callback) { } function getShortLink (link, callback) { - return callback(null, link) + var form = new FormData() + form.append('uri', link) + + var request = HTTP.request({ + method: 'post', + host: url_shortener_host, + path: '/', + headers: form.getHeaders(), + }) + form.pipe(request) + + request.on('response', function (response) { + var data = '' + response.on('data', function (chunk) { + data += chunk + }) + response.on('end', function () { + callback(null, data.replace(/\r\n$/,'') + '#' + URL.parse(link).host) + }) + }) } var methods = {} -- cgit v1.2.3 From e8292ba803596a2605d0ff8a94f51eb8707c115a Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 01:51:26 +0100 Subject: newsbot.js: only delete real slaves --- news/newsbot.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 499f595a..55564f0f 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -228,10 +228,11 @@ methods.add = function (params, callback) { } } methods.del = function (params, callback) { - var slave = slaves[params[0]] - if (slave) { + var nick = params[0] + if (slaves.hasOwnProperty(nick)) { + var slave = slaves[nick] slave.client.disconnect() - delete slaves[params[0]] + delete slaves[nick] return callback(null) } else { return callback(new Error('botname not found')) -- cgit v1.2.3 From 3f2320f85e6bd19bf3b4f6bbd4f07b5ae1e731c8 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 02:10:39 +0100 Subject: newsbot.js: save really connected channels --- news/newsbot.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 55564f0f..28ab52ea 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -76,7 +76,6 @@ function create_feedbot (nick, uri, channels) { client: client, nick: nick, uri: uri, - channels: channels, } // say text in every joined channel @@ -247,7 +246,7 @@ methods.save = function (params, callback) { return [ slave.nick, slave.uri, - slave.channels.join(' '), + Object.keys(client.chans).join(' '), ].join('|') }).join('\n') + '\n' return FS.writeFile(feeds_file, feeds, function (error) { -- cgit v1.2.3 From adb33710bf3b9c3c1634d13125f39a7697294b1a Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 02:36:38 +0100 Subject: newsbot.js: join after invite --- news/newsbot.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 28ab52ea..35e99c59 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -88,6 +88,10 @@ function create_feedbot (nick, uri, channels) { client.once('registered', loop_feedparser) client.once('registered', deaf_myself) + client.on('invite', function (channel, from, message) { + client.join(channel, null) + }) + client.on('error', function (error) { console.log('Error:', error) }) -- cgit v1.2.3 From 44c648c68cdb58662f9e2d7232d26e59f5ddf662 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 02:37:09 +0100 Subject: newsbot.js: fix save --- news/newsbot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 35e99c59..f01f1c59 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -250,7 +250,7 @@ methods.save = function (params, callback) { return [ slave.nick, slave.uri, - Object.keys(client.chans).join(' '), + Object.keys(slave.client.chans).join(' '), ].join('|') }).join('\n') + '\n' return FS.writeFile(feeds_file, feeds, function (error) { -- cgit v1.2.3 From 43764e34447da5abf8da71c0e795ce07d20dc1c7 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 02:41:57 +0100 Subject: newsbot.js: stay kicked --- news/newsbot.js | 1 + 1 file changed, 1 insertion(+) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index f01f1c59..c1d36f9b 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -70,6 +70,7 @@ function main () { function create_feedbot (nick, uri, channels) { var client = new IRC.Client(irc_server, nick, { channels: channels, + autoRejoin: false, }) slaves[nick] = { -- cgit v1.2.3 From ac8e7d1197d6c6466980fdf82ed8536c81cb612e Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 17 Mar 2014 03:54:49 +0100 Subject: newsbot.js: remember last feed to not doublepost --- news/newsbot.js | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 55564f0f..a598f118 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -85,6 +85,12 @@ function create_feedbot (nick, uri, channels) { client.say(channel, text) }) } + + function broadcast_new_item (item) { + return getShortLink(item.link, function (error, shortlink) { + return broadcast(item.title + ' ' + shortlink) + }) + } client.once('registered', loop_feedparser) client.once('registered', deaf_myself) @@ -134,35 +140,19 @@ function create_feedbot (nick, uri, channels) { } }) feedparser.on('end', function () { - items = items.sort(function (a, b) { - return a.date - b.date - }) - - var indexOfLastGuid = items - .map(function (x) { return x.guid }) - .indexOf(client.lastGuid) - - var newitems = items - var olditems = [] - // if items contain lastGuid, then only items after that are news - if (!!~indexOfLastGuid) { - olditems = newitems.splice(0, indexOfLastGuid + 1) + if (client.lastItems) { + items.forEach(function (item)) { + if (!client.lastItems.hasOwnProperty(item.title)) { + broadcast_new_item(item) + } + }) } - if (newitems.length > 0) { - // only broadcast news if we're not starting up - // (i.e. we already have a lastGuid) - if (client.lastGuid) { - newitems.forEach(function (item) { - return getShortLink(item.link, function (error, shortlink) { - return broadcast(item.title + ' ' + shortlink) - }) - }) - } - - client.lastGuid = newitems[newitems.length - 1].guid - } + client.lastItems = {} + items.forEach(function (item) { + client.lastItems[item.title] = true + }) return setTimeout(loop_feedparser, feedbot_loop_delay) }) -- cgit v1.2.3 From d8623e1d59c20b0640550f885e9cd30e7624f6e7 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 04:01:17 +0100 Subject: newsbot.js: typo fix --- news/newsbot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 73441ad0..a422d867 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -146,7 +146,7 @@ function create_feedbot (nick, uri, channels) { feedparser.on('end', function () { if (client.lastItems) { - items.forEach(function (item)) { + items.forEach(function (item) { if (!client.lastItems.hasOwnProperty(item.title)) { broadcast_new_item(item) } -- cgit v1.2.3 From 5fbf714096ef65c98cabb54cbc08641f37ffa462 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 17 Mar 2014 04:23:24 +0100 Subject: newsboss.js: fancy create delay --- news/newsbot.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index a422d867..80bb95b1 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -12,6 +12,7 @@ var master_nick = 'knews' var news_channel = '#news' var feeds_file = 'new_feeds' var feedbot_loop_delay = 60 * 1000 // [ms] +var feedbot_create_delay = 200 // [ms] var url_shortener_host = 'go' var slaves = {} @@ -51,7 +52,7 @@ function main () { .filter(function (line) { return line.length > 0 }) - .forEach(function (line) { + .forEach(function (line, i) { var parts = line.split('|') if (parts.length !== 3) { console.log('bad new_feeds line ' + lines + ': ' + line) @@ -62,7 +63,9 @@ function main () { var uri = parts[1] var channels = parts[2].split(' ') - return create_feedbot(nick, uri, channels) + setTimeout(function () { + return create_feedbot(nick, uri, channels) + }, i*feedbot_create_delay) }) }) } -- cgit v1.2.3 From 23e4a479b1da9b2923c4b98e0651722a8535f669 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 18 Mar 2014 13:40:57 +0100 Subject: newsbot.js: continue loop on error --- news/newsbot.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 80bb95b1..2d8b68f5 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -140,6 +140,7 @@ function create_feedbot (nick, uri, channels) { feedparser.on('error', function (error) { broadcast('4feedparser ' + error) + return continue_loop() }) feedparser.on('readable', function () { for (var item; item = this.read(); ) { @@ -161,8 +162,12 @@ function create_feedbot (nick, uri, channels) { client.lastItems[item.title] = true }) - return setTimeout(loop_feedparser, feedbot_loop_delay) + return continue_loop() }) + + function continue_loop () { + setTimeout(loop_feedparser, feedbot_loop_delay) + } } function deaf_myself () { client.send('mode', nick, '+D') -- cgit v1.2.3 From 8a40327409632f0de7a3167a1f935d1345725522 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 18 Mar 2014 21:47:13 +0100 Subject: newsbot.js: debug failed link --- news/newsbot.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'news/newsbot.js') diff --git a/news/newsbot.js b/news/newsbot.js index 2d8b68f5..18b5f780 100644 --- a/news/newsbot.js +++ b/news/newsbot.js @@ -199,7 +199,12 @@ function run_command (methodname, params, callback) { function getShortLink (link, callback) { var form = new FormData() - form.append('uri', link) + try { + form.append('uri', link) + } catch (err) { + console.log('link:', link) + throw err + } var request = HTTP.request({ method: 'post', -- cgit v1.2.3