Advertisement
MolSno

Untitled

Feb 1st, 2013
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.93 KB | None | 0 0
  1. import time, os, re
  2. import threading
  3.  
  4. log_period = 60 # in seconds
  5. url_logfolder='https://dl.dropbox.com/u/14131518/log/logs/'
  6. path_logfolder='C:\\Users\\MolSno\\Dropbox\\Public\\log\\logs\\'
  7. path_datafolder='C:\\Users\\MolSno\\Dropbox\\Public\\log\\data\\'
  8. path_logpage=path_datafolder+'logpage.html'
  9. path_links=path_datafolder+'links.html'
  10.  
  11. messages = []
  12.  
  13. annoy = True
  14.  
  15. class LogMessage(object):
  16.     def __init__(self, nick, message, time, kind):
  17.         self.nick = nick
  18.         self.message = message
  19.         self.time = time
  20.         self.kind = kind
  21.  
  22. def dictreplace(text, dic):
  23.     for i, j in dic.items():
  24.         text = text.replace(i, j)
  25.     return text
  26.  
  27. def logwrite(phenny, startTimer):
  28.     now = time.localtime(time.time())
  29.     date = time.strftime("%Y-%m-%d", now)
  30.     links_html = open(path_links,'r').read()
  31.    
  32.     outpath = path_logfolder+date+'.html'
  33.     if os.path.exists(outpath):
  34.         outpage = open(outpath,'r+')
  35.         basepage_html = outpage.read()
  36.         outpage.seek(0)
  37.         outhtml = basepage_html
  38.     else:
  39.         outpage = open(outpath,'w+')
  40.         basepage_html = open(path_logpage).read()
  41.         linkreplace = {\
  42.             '<!--PREVIOUS-->': '#',\
  43.             '<!--NEXT-->': '#'}
  44.         links = dictreplace(links_html, linkreplace)
  45.         outhtml = basepage_html.replace('<!--LINKS-->',links)
  46.         outhtml = outhtml.replace('<!--DATE-->',date)
  47.    
  48.     # messages don't end up in time order for some reason, fix that
  49.     sortedmessages = sorted(messages, cmp=lambda x,y: cmp(x.time, y.time))
  50.     for m in sortedmessages:
  51.         msg_html = open(path_datafolder+'messages\\'+m.kind+'.html','r').read().encode('utf8')
  52.         print path_datafolder+'messages\\'+m.kind+'.html'
  53.         # do the html cleaning thing
  54.         parsedmsg = dictreplace(m.message, {'<':'&lt;', '>':'&gt;', '&':'&amp;'})
  55.        
  56.         # general formatting
  57.         bold = False
  58.         uline = False
  59.         link = False
  60.         ital = False
  61.         fgcolor = '65535'   # "default" value... yeah
  62.         bgcolor = '65535'
  63.         outs = '<span class="fg_65535"><span class="bg_65535">'
  64.         i = 0
  65.         while i < len(parsedmsg):
  66.             if parsedmsg[i] == '\x02':
  67.                 bold = not bold
  68.                 if bold: outs+= '<b>'
  69.                 if not bold: outs+= '</b>'
  70.             elif parsedmsg[i] == '\x1f':
  71.                 uline = not uline
  72.                 if uline: outs+= '<u>'
  73.                 if not uline: outs+= '</u>'
  74.             elif parsedmsg[i] == '\x16':
  75.                 ital = not ital
  76.                 if ital: outs+= '<i>'
  77.                 if not ital: outs+= '</i>'
  78.             elif parsedmsg[i] == '\x03':
  79.                 j = i+1;
  80.                 tmpfg = ''
  81.                 tmpbg = ''
  82.                 if re.match('[0-9]',parsedmsg[j]):
  83.                     while re.match('[0-9]',parsedmsg[j]):
  84.                         tmpfg+= parsedmsg[j]
  85.                         j+=1
  86.                     fgcolor=str(int(tmpfg))
  87.                 if parsedmsg[j] == ',':
  88.                     j+=1
  89.                     while re.match('[0-9]',parsedmsg[j]):
  90.                         tmpbg+= parsedmsg[j]
  91.                         j+=1
  92.                     bgcolor=str(int(tmpbg))
  93.                                 else:
  94.                                         tmpfg = '65535'
  95.                                         tmpbg = '65535'
  96.                 outs+='</span></span><span class="fg_'+fgcolor+'"><span class="bg_'+bgcolor+'">'
  97.                 i = j - 1;
  98.             elif parsedmsg[i] == '\x0f':
  99.                 outs+='</span></span><span class="fg_65535"><span class="bg_65535">'
  100.                 if bold:
  101.                     outs+='</b>'
  102.                 if uline:
  103.                     outs+='</u>'
  104.                 if ital:
  105.                     outs+='</i>'
  106.             elif ord(parsedmsg[i]) > 127:
  107.                 outs+='&#'+str(ord(parsedmsg[i]))
  108.             else:
  109.                 outs+= parsedmsg[i]
  110.             i+=1
  111.         if bold:
  112.             outs+='</b>'
  113.         if uline:
  114.             outs+='</u>'
  115.         outs+='</span></span>'
  116.         parsedmsg = outs
  117.  
  118.         msgreplace = {\
  119.         '<!--NICK-->': m.nick,\
  120.         '<!--MESSAGE-->': parsedmsg,\
  121.         '<!--TIME-->': time.strftime("%a %b %d, %I:%M:%S %p", m.time)}
  122.         outhtml = outhtml.replace('<!--NEXT_MESSAGE-->', dictreplace(msg_html, msgreplace)+'\r\n<!--NEXT_MESSAGE-->')
  123.         messages.remove(m)
  124.        
  125.     outpage.write(outhtml.encode('utf8'))
  126.    
  127.     print 'logging: logs written'
  128.     t = threading.Timer(log_period, logwrite, [phenny, True])
  129.     t.start()
  130.  
  131. def logs(phenny, input):
  132.     now = time.localtime(time.time())
  133.     date = time.strftime("%Y-%m-%d", now)
  134.     phenny.say(url_logfolder+date+'.html')
  135.     logwrite(phenny, False)
  136. logs.commands = ['logs']
  137. logs.priority = 'high'
  138. logs.thread = False
  139.  
  140. def memlogPRIVMSG(phenny, input):
  141.     if input.sender == '#radar':
  142.         if input.group(0).startswith('\x01ACTION') and input.group(0).endswith('\x01'):
  143.             messages.append(LogMessage(input.nick, input.group(0)[len('\x01ACTION'):], time.localtime(time.time()), 'PRIVMSG ACTION'))
  144.         else:
  145.             messages.append(LogMessage(input.nick, input.group(0), time.localtime(time.time()), 'PRIVMSG'))
  146. memlogPRIVMSG.event = 'PRIVMSG'
  147. memlogPRIVMSG.rule = r'.*'
  148. def memlogQUIT(phenny, input):
  149.     messages.append(LogMessage(input.nick, input.group(0), time.localtime(time.time()), 'QUIT'))
  150. memlogQUIT.event = 'QUIT'
  151. memlogQUIT.rule = r'.*'
  152. def memlogJOIN(phenny, input):
  153.     messages.append(LogMessage(input.nick, input.group(0), time.localtime(time.time()), 'JOIN'))
  154. memlogJOIN.event = 'JOIN'
  155. memlogJOIN.rule = r'.*'
  156. def memlogPART(phenny, input):
  157.     messages.append(LogMessage(input.nick, input.group(0), time.localtime(time.time()), 'PART'))
  158. memlogPART.event = 'PART'
  159. memlogPART.rule = r'.*'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement