X-Git-Url: https://jfr.im/git/z_archive/twitter.git/blobdiff_plain/85681608c592c7e3eb6cc75367dc0cdd2ea953dd..1e28b4c31f31bcb6cb8d8dcdf883fbed4e79e43b:/twitter/ircbot.py diff --git a/twitter/ircbot.py b/twitter/ircbot.py index 6819a88..ee6adee 100644 --- a/twitter/ircbot.py +++ b/twitter/ircbot.py @@ -46,17 +46,18 @@ IRC_REGULAR = chr(0x0f) import sys import time -from dateutil.parser import parse +from datetime import datetime, timedelta +from email.utils import parsedate from ConfigParser import SafeConfigParser from heapq import heappop, heappush import traceback import os import os.path -from api import Twitter, TwitterError -from oauth import OAuth, read_token_file -from oauth_dance import oauth_dance -from util import htmlentitydecode +from .api import Twitter, TwitterError +from .oauth import OAuth, read_token_file +from .oauth_dance import oauth_dance +from .util import htmlentitydecode PREFIXES = dict( cats=dict( @@ -96,10 +97,10 @@ class SchedTask(object): def __repr__(self): return "" %( - self.task.__name__, self.next, self.delta) + self.task.__name__, self.__next__, self.delta) def __cmp__(self, other): - return cmp(self.next, other.next) + return cmp(self.__next__, other.__next__) def __call__(self): return self.task() @@ -113,7 +114,7 @@ class Scheduler(object): def next_task(self): now = time.time() task = heappop(self.task_heap) - wait = task.next - now + wait = task.__next__ - now task.next = now + task.delta heappush(self.task_heap, task) if (wait > 0): @@ -153,21 +154,21 @@ class TwitterBot(object): self.sched = Scheduler( (SchedTask(self.process_events, 1), SchedTask(self.check_statuses, 120))) - self.lastUpdate = time.gmtime() + self.lastUpdate = (datetime.now() - timedelta(minutes=10)).utctimetuple() def check_statuses(self): debug("In check_statuses") try: - updates = self.twitter.statuses.friends_timeline() - except Exception, e: - print >> sys.stderr, "Exception while querying twitter:" + updates = reversed(self.twitter.statuses.friends_timeline()) + except Exception as e: + print("Exception while querying twitter:", file=sys.stderr) traceback.print_exc(file=sys.stderr) return nextLastUpdate = self.lastUpdate debug("self.lastUpdate is %s" % self.lastUpdate) for update in updates: - crt = parse(update['created_at']).utctimetuple() + crt = parsedate(update['created_at']) if (crt > nextLastUpdate): text = (htmlentitydecode( update['text'].replace('\n', ' ')) @@ -178,7 +179,7 @@ class TwitterBot(object): # to people who are not on our following list. if not text.startswith("@"): self.privmsg_channels( - u"%s %s%s%s %s" %( + "%s %s%s%s %s" %( get_prefix(), IRC_BOLD, update['user']['screen_name'], IRC_BOLD, text.decode('utf-8'))) @@ -187,8 +188,7 @@ class TwitterBot(object): crt, nextLastUpdate, )) nextLastUpdate = crt - else: - break + debug("setting self.lastUpdate to %s" % nextLastUpdate) self.lastUpdate = nextLastUpdate @@ -338,11 +338,11 @@ def main(): if not os.path.exists(configFilename): raise Exception() load_config(configFilename) - except Exception, e: - print >> sys.stderr, "Error while loading ini file %s" %( - configFilename) - print >> sys.stderr, e - print >> sys.stderr, __doc__ + except Exception as e: + print("Error while loading ini file %s" %( + configFilename), file=sys.stderr) + print(e, file=sys.stderr) + print(__doc__, file=sys.stderr) sys.exit(1) bot = TwitterBot(configFilename)