index : logbot | |
Archlinux32 log bot | gitolite user |
summaryrefslogtreecommitdiff |
author | Chris Oliver <excid3@gmail.com> | 2012-06-11 17:16:06 -0700 |
---|---|---|
committer | Chris Oliver <excid3@gmail.com> | 2012-06-11 17:16:06 -0700 |
commit | 94fd3ad9a462e3b67b0bccb35f495a7704024318 (patch) | |
tree | 13b7332afb183f166ec6974ee991cab3011e4734 | |
parent | 82814fa304d4130005ff61563370bd15ce06b791 (diff) | |
parent | 04aa153b0b9b150ca350ec40b044d86a60c06b30 (diff) |
-rw-r--r-- | README.md | 21 | ||||
-rwxr-xr-x | logbot.py | 24 |
@@ -11,3 +11,24 @@ Configuration is done inside logbot.py. python logbot.py Example logs at https://raw.github.com/excid3/logbot/master/example_logs/2011-10-22.html + + +Channels with localised time +----- +LogBot now also supports having localised time on a per channel basis using the pytz library, allowing you to have the logs of specific channels use different timezones. +Installing pytz should be as simple as running `easy_install --upgrade pytz`, see http://pytz.sourceforge.net/#installation for details. +Don't worry, if you don't have pytz installed, LogBot will continue to show the logs timestamped with your system's localtime as it used to. + +Next you can create a simple text file at `~/.logbot-channel_locations.conf` (or wherever `CHANNEL_LOCATIONS_FILE` in logbot.py points to). +On each line you can now specify a channel name, and the timezone location of which it should use the timezone offset, separated by a space. Example: + + #excid3 America/Chicago + #netherlands Europe/Amsterdam + #aloha US/Hawaii + #space UTC + +Any channel not specified in this file will use the default timezone as specified in DEFAULT_TIMEZONE, which defaults to 'UTC'. + +If you want to see a list of all possible timezone location names you can use, run: + + python -c 'import pytz;print pytz.all_timezones' @@ -38,6 +38,10 @@ import os import ftplib import sys from time import strftime +try: + from datetime import datetime + from pytz import timezone +except: pass try: from hashlib import md5 @@ -83,6 +87,8 @@ FTP_FOLDER = "" # The amount of messages to wait before uploading to the FTP server FTP_WAIT = 25 +CHANNEL_LOCATIONS_FILE = os.path.expanduser("~/.logbot-channel_locations.conf") +DEFAULT_TIMEZONE = 'UTC' default_format = { "help" : HELP_MESSAGE, @@ -167,6 +173,7 @@ class Logbot(SingleServerIRCBot): self.count = 0 self.nick_pass = nick_pass + self.load_channel_locations() print "Logbot %s" % __version__ print "Connecting to %s:%i..." % (server, port) print "Press Ctrl-C to quit" @@ -265,8 +272,14 @@ class Logbot(SingleServerIRCBot): append_line("%s/index.html" % LOG_FOLDER, '<a href="%s/index.html">%s</a>' % (channel.replace("#", "%23"), channel_title)) # Current log - time = strftime("%H:%M:%S") - date = strftime("%Y-%m-%d") + try: + localtime = datetime.now(timezone(self.channel_locations.get(channel,DEFAULT_TIMEZONE))) + time = localtime.strftime("%H:%M:%S") + date = localtime.strftime("%Y-%m-%d") + except: + time = strftime("%H:%M:%S") + date = strftime("%Y-%m-%d") + log_path = "%s/%s/%s.html" % (LOG_FOLDER, channel, date) # Create the log date index if it doesnt exist @@ -364,6 +377,13 @@ class Logbot(SingleServerIRCBot): def on_topic(self, c, e): self.write_event("topic", e) + # Loads the channel - timezone-location pairs from the CHANNEL_LOCATIONS_FILE + # See the README for details and example + def load_channel_locations(self): + self.channel_locations = {} + if os.path.exists(CHANNEL_LOCATIONS_FILE): + f = open(CHANNEL_LOCATIONS_FILE, 'r') + self.channel_locations = dict((k.lower(), v) for k, v in dict([line.strip().split(None,1) for line in f.readlines()]).iteritems()) def connect_ftp(): print "Using FTP %s..." % (FTP_SERVER) |