Permalink
Browse files

Merge pull request #17 from FiXato/master

Added support for per-channel timezone offsets.
  • Loading branch information...
2 parents 82814fa + 04aa153 commit 94fd3ad9a462e3b67b0bccb35f495a7704024318 @excid3 committed Jun 12, 2012
Showing with 43 additions and 2 deletions.
  1. +21 −0 README.md
  2. +22 −2 logbot.py
View
@@ -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'
View
@@ -38,6 +38,10 @@
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 @@ def urlify2(value):
# 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 @@ def __init__(self, server, port, server_pass=None, channels=[],
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 @@ def append_log_msg(self, channel, msg):
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 @@ def on_quit(self, c, e):
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)

0 comments on commit 94fd3ad

Please sign in to comment.