#!/usr/bin/env python

import os, sys, dbus

busfile = '/home/jerome/public_html/icons/dbus.session'

if len(sys.argv) > 3:
    f = open(busfile, 'r')
    session = f.read()
    os.environ['DBUS_SESSION_BUS_ADDRESS'] = session.strip()
    f.close()
    bus = dbus.SessionBus()
    remote_object = bus.get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject")
    iface = dbus.Interface(remote_object, "net.sf.gaim.GaimInterface")
    accounttype = sys.argv[1]
    accountname = sys.argv[2]

    account = remote_object.GaimAccountsFindConnected(accountname, "prpl-msn")
    logdir = "/home/jerome/.gaim/logs/%s/%s/" % (accounttype, accountname)
    for buddyaddr in sys.argv[3:]:
	logsize = 0
	try:
	    for dirs in os.listdir(logdir):
		if not os.path.isdir(logdir + dirs): continue
		if dirs == buddyaddr:
		    dirs += "/"
		    for files in os.listdir(logdir + dirs):
			logsize += os.path.getsize(logdir + dirs + files)
		    break
	except: pass
	buddy = remote_object.GaimFindBuddy(account, buddyaddr)
	if buddy == 0:
	    print "0 -1 %u %s -- %s" % (logsize, buddyaddr, buddyaddr)
	else:
	    presence = remote_object.GaimBuddyGetPresence(buddy)
	    last_seen = remote_object.GaimBlistNodeGetInt(buddy, 'last_seen')
	    if(remote_object.GaimPresenceIsIdle(presence)):
		status = 5
	    else:
		status = remote_object.GaimPresenceGetActiveStatus(presence)
		status_name = remote_object.GaimStatusGetId(status)
		if(status_name == 'available'): status = 7
		elif(status_name == 'brb'): status = 6
	        elif(status_name == 'lunch'): status = 4
		elif(status_name == 'away'): status = 3
		elif(status_name == 'phone'): status = 2
	        elif(status_name == 'busy'): status = 1
		elif(status_name == 'offline'): status = 0
		else: status = -2
	    alias = remote_object.GaimBuddyGetAlias(buddy)
	    nick = remote_object.GaimBuddyGetServerAlias(buddy)
	    infos = "%u %u %u %s -- %s" % (last_seen, status, logsize, alias, nick)
	    print infos.encode('utf-8')
