Skip to content

Instantly share code, notes, and snippets.

@chesster
Last active January 2, 2016 19:59
Show Gist options
  • Save chesster/8354067 to your computer and use it in GitHub Desktop.
Save chesster/8354067 to your computer and use it in GitHub Desktop.
Last messages in ekg in conky
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import sys
import os
import unicodecsv as csv
import glob
import datetime
class Ekg(object):
COLORS = { 'even': 'color1', 'odd' : 'color2', }
def __init__(self):
self.last_log_lines = self.__get_logs()
def __get_logs(self):
self.u2dt = lambda utime : datetime.datetime.fromtimestamp(int(utime))
not_older_than_a_day = lambda msgtime : msgtime+datetime.timedelta(days=1) > datetime.datetime.now()
ls = lambda path, patern: [f for f in glob.glob(os.path.join(path, patern))]
path = os.path.join(os.environ['HOME'], ".ekg2/logs")
logs = []
for account in ls(path, '*'):
logs += ls(account, '*.txt')
def last_line(path):
with open(path) as myfile:
lline = [line for i, line in enumerate(csv.reader(myfile))][-1]
return {
'send' : lline[0] == 'chatsend',
'adres' : lline[1],
'nick' : lline[2],
'time' : lline[3],
'msg' : lline[-1]
}
last_log_lines = [last_line(log) for log in logs]
last_log_lines = [f for f in last_log_lines if not f['send']]
last_log_lines = sorted(last_log_lines, key=lambda k: k['time'], reverse=True)
return [f for f in last_log_lines if not_older_than_a_day(self.u2dt(f['time']))]
def display_conky_line(self, line, even):
color = Ekg.COLORS['even' if even else 'odd']
task_string = " ${%(color)s}[%(nick)s] %(msg)s $alignr %(time)s $color\n"
return task_string % {
'color': color,
'msg': unicode(line['msg'][:18]).strip()+'...',
'time': self.u2dt(line['time']).strftime('%H:%M:%S'),
'nick': line['nick'], }
def conky(self):
return_string = ''
even = False
for log in self.last_log_lines:
even = not even
return_string += self.display_conky_line(log, even)
return return_string if return_string else " [Brak nowych wiadomosci]"
if __name__ == '__main__':
ekg = Ekg()
print(ekg.conky())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment