From 4f7c7241e3e5bf0203269d1fa6298c85ab952db1 Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 10 Jan 2014 00:03:38 +0100 Subject: rename knn to news :( --- news/controller.py | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100755 news/controller.py (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py new file mode 100755 index 00000000..5277d626 --- /dev/null +++ b/news/controller.py @@ -0,0 +1,143 @@ +from time import sleep +import irc.bot +import _thread +import rssbot +import os +import subprocess + +class NewsBot(irc.bot.SingleServerIRCBot): + def __init__(self, name, chans=['#news'], server='ire', port=6667, timeout=60): + irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], name, name) + self.name = name + self.server = server + self.port = port + self.chans = chans + self.to = timeout + + def start(self): + self.bot = _thread.start_new_thread(irc.bot.SingleServerIRCBot.start, (self,)) + + def on_welcome(self, connection, event): + for chan in self.chans: + connection.join(chan) + + def send(self, target, string): + for line in string.split('\n'): + self.connection.privmsg(target, line) + sleep(1) + + def on_privmsg(self, connection, event): + args_array = event.arguments[0].split() + answer = self.read_message(args_array) + self.send(event.source.nick, answer) + + def on_pubmsg(self, connection, event): + args_array = event.arguments[0].split() + if len(args_array[0]) > 0 and args_array[0][:-1]==self.name: + answer = self.read_message(args_array[1:]) + self.send(event.target, answer) + + def on_invite(self, connection, event): + for chan in event.arguments: + connection.join(chan) + + def read_message(self, args): + try: + if args[0] in [x for x in commands.__dict__.keys() if x.find('_')]: + func = getattr(commands, args[0]) + return func(args) + else: + return 'command not found' + except: + return "mimimimi" + + + +class commands(): + def add(args): + bot = rssbot.RssBot(args[2], args[1], url_shortener=url_shortener) + bots[args[1]] = bot + bot.start() + return "bot " + args[1] + " added" + + def delete(args): + bots[args[1]].stop() + del bots[args[1]] + return "bot " + args[1] + " deleted" + + def rename(args): + if args[1] in bots: + if args[2] in bots: + return args[2] + ' already taken' + else: + bots[args[1]].connection.nick(args[2]) + bots[args[1]].name = args[2] + bots[args[2]] = bots[args[1]] + del bots[args[1]] + return 'renamed ' + args[1] + ' in ' + args[2] + else: + return args[1] + ' does not exist' + + def save(args): + output_buffer = '' + for bot in bots: + if bot.loop: + output_buffer += bot + '|' + bots[bot].url + '|' + ' '.join(bots[bot].channels) + '\n' + + F = open(feedfile, "w") + F.writelines(output_buffer) + F.close() + + return "bots saved to " + feedfile + + def caps(args): + return ' '.join([x for x in commands.__dict__.keys() if x.find('_')]) + + def list(args): + output_buffer = '' + for bot in bots: + output_buffer += bot + ' url: ' + bots[bot].url + '\n' + return output_buffer + + def info(args): + if args[1] in bots: + output_buffer = '' + for data in ['title', 'link', 'updated']: + if data in bots[args[1]].feed.feed: + output_buffer += data + ': ' + bots[args[1]].feed.feed[data] + '\n' + output_buffer += 'lastnew: ' + bots[args[1]].lastnew.isoformat() + return output_buffer + else: + return 'bot not found' + + def search(args): + output = subprocess.check_output(['./GfindFeeds4bot', args[1]]).decode() + return output + +feedfile = 'new_feeds' +url_shortener = 'http://wall' +init_channels = ['#news'] + +if 'FEEDFILE' in os.environ: + feedfile = os.environ['FEEDFILE'] + +if 'URLSHORT' in os.environ: + url_shortener = os.environ['URLSHORT'] + +bots = {} +knews = NewsBot('knews') + +#config file reading +F = open(feedfile, "r") +lines = F.readlines() +F.close() + +for line in lines: + line = line.strip('\n') + linear = line.split('|') + bot = rssbot.RssBot(linear[1], linear[0], init_channels + linear[2].split(), url_shortener) + bot.start() + bots[linear[0]] = bot + +knews.start() + -- cgit v1.2.3 From bc99b60e6db3aed9d1f4130185df97639e6daf66 Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 10 Jan 2014 14:16:35 +0100 Subject: ircbot: fix save --- news/controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index 5277d626..7d41fd6f 100755 --- a/news/controller.py +++ b/news/controller.py @@ -81,7 +81,7 @@ class commands(): def save(args): output_buffer = '' for bot in bots: - if bot.loop: + if bots[bot].loop: output_buffer += bot + '|' + bots[bot].url + '|' + ' '.join(bots[bot].channels) + '\n' F = open(feedfile, "w") -- cgit v1.2.3 From 739aa37a328a9951c2c989df5bcb5e720d6d1742 Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 10 Jan 2014 14:24:38 +0100 Subject: news: new command uptime --- news/controller.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index 7d41fd6f..f9a61e3c 100755 --- a/news/controller.py +++ b/news/controller.py @@ -114,6 +114,10 @@ class commands(): output = subprocess.check_output(['./GfindFeeds4bot', args[1]]).decode() return output + def uptime(args): + output = subprocess.check_output(['uptime']).decode() + return output + feedfile = 'new_feeds' url_shortener = 'http://wall' init_channels = ['#news'] -- cgit v1.2.3 From 62360486904f1e7dfe3460069936e5cd349c4e80 Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 10 Jan 2014 21:23:11 +0100 Subject: news: fix controller exit, show rss url --- news/controller.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index f9a61e3c..584d020f 100755 --- a/news/controller.py +++ b/news/controller.py @@ -33,7 +33,7 @@ class NewsBot(irc.bot.SingleServerIRCBot): def on_pubmsg(self, connection, event): args_array = event.arguments[0].split() - if len(args_array[0]) > 0 and args_array[0][:-1]==self.name: + if len(args_array) > 0 and args_array[0][:-1]==self.name: answer = self.read_message(args_array[1:]) self.send(event.target, answer) @@ -106,6 +106,7 @@ class commands(): if data in bots[args[1]].feed.feed: output_buffer += data + ': ' + bots[args[1]].feed.feed[data] + '\n' output_buffer += 'lastnew: ' + bots[args[1]].lastnew.isoformat() + output_buffer += 'rssurl: ' + bots[args[1]].url return output_buffer else: return 'bot not found' -- cgit v1.2.3 From a1a148adbc73e15f1731f4bb2fb22216ac002585 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 11 Jan 2014 13:19:09 +0100 Subject: news: action instead of send from controller --- news/controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index 584d020f..cf032e65 100755 --- a/news/controller.py +++ b/news/controller.py @@ -23,7 +23,7 @@ class NewsBot(irc.bot.SingleServerIRCBot): def send(self, target, string): for line in string.split('\n'): - self.connection.privmsg(target, line) + self.connection.action(target, line) sleep(1) def on_privmsg(self, connection, event): -- cgit v1.2.3 From f261e4db7600251607428f4d5316c9df72146fa2 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 11 Jan 2014 13:19:39 +0100 Subject: news: check for existing name --- news/controller.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index cf032e65..4a8fd3bc 100755 --- a/news/controller.py +++ b/news/controller.py @@ -55,10 +55,13 @@ class NewsBot(irc.bot.SingleServerIRCBot): class commands(): def add(args): - bot = rssbot.RssBot(args[2], args[1], url_shortener=url_shortener) - bots[args[1]] = bot - bot.start() - return "bot " + args[1] + " added" + if args[1] not in bots: + bot = rssbot.RssBot(args[2], args[1], url_shortener=url_shortener) + bots[args[1]] = bot + bot.start() + return "bot " + args[1] + " added" + else: + return args[1] + ' does already exist' def delete(args): bots[args[1]].stop() -- cgit v1.2.3 From 73b356d61a14209dee77c6f314fd10a77d215f92 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 11 Jan 2014 13:19:58 +0100 Subject: news: fix missing newline --- news/controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index 4a8fd3bc..c0016cc8 100755 --- a/news/controller.py +++ b/news/controller.py @@ -108,7 +108,7 @@ class commands(): for data in ['title', 'link', 'updated']: if data in bots[args[1]].feed.feed: output_buffer += data + ': ' + bots[args[1]].feed.feed[data] + '\n' - output_buffer += 'lastnew: ' + bots[args[1]].lastnew.isoformat() + output_buffer += 'lastnew: ' + bots[args[1]].lastnew.isoformat() + '\n' output_buffer += 'rssurl: ' + bots[args[1]].url return output_buffer else: -- cgit v1.2.3 From d68bb6c556fa7da246697d309a886daed4cae9c6 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 11 Jan 2014 13:27:30 +0100 Subject: news: more sanity! --- news/controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index c0016cc8..94f48b63 100755 --- a/news/controller.py +++ b/news/controller.py @@ -55,7 +55,7 @@ class NewsBot(irc.bot.SingleServerIRCBot): class commands(): def add(args): - if args[1] not in bots: + if args[1] not in bots and not knews.name: bot = rssbot.RssBot(args[2], args[1], url_shortener=url_shortener) bots[args[1]] = bot bot.start() -- cgit v1.2.3 From 6b899f16c48c5badd00827dbda6031ebaccb8653 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 11 Jan 2014 19:09:01 +0100 Subject: news: fix add --- news/controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'news/controller.py') diff --git a/news/controller.py b/news/controller.py index 94f48b63..e9e94476 100755 --- a/news/controller.py +++ b/news/controller.py @@ -55,7 +55,7 @@ class NewsBot(irc.bot.SingleServerIRCBot): class commands(): def add(args): - if args[1] not in bots and not knews.name: + if args[1] not in bots and not args[1]==knews.name: bot = rssbot.RssBot(args[2], args[1], url_shortener=url_shortener) bots[args[1]] = bot bot.start() -- cgit v1.2.3