X-Git-Url: https://plomlompom.com/repos/?p=plomlombot-irc.git;a=blobdiff_plain;f=plomlombot.py;h=7fa9194af8236e27fd7d547843fc1a1e3577dc8b;hp=747ab077700fa772d1c54cc62b61290c1a7bcad1;hb=19b5218056b02ed8454cdc095560856bdf48b8b9;hpb=24cf06720f7e0c13e6075f69426529a2119085ba diff --git a/plomlombot.py b/plomlombot.py index 747ab07..7fa9194 100644 --- a/plomlombot.py +++ b/plomlombot.py @@ -1,18 +1,21 @@ import socket -import datetime +import datetime import select import time import re import urllib.request import html +servernet = "irc.freenode.net" +port = 6667 servername = "" -timeout = 480 +timeout = 240 username = "plomlombot" nickname = username -channel = "#zrolaps" +channel = "#zrolaps-test" class IO: + def __init__(self, server, port): self.socket = socket.socket() self.socket.connect((server, port)) @@ -20,12 +23,20 @@ class IO: self.line_buffer = [] self.rune_buffer = "" self.last_pong = time.time() + def _pingtest(self): if self.last_pong + timeout < time.time(): raise RuntimeError("server not answering") self.send_line("PING " + nickname + " " + servername) - def send_line(self, msg_orig): - msg = msg_orig + "\r\n" + + def send_line(self, msg): + msg = msg.replace("\r", " ") + msg = msg.replace("\n", " ") + if len(msg.encode("utf-8")) > 510: + print("NOT SENT LINE TO SERVER (too long): " + msg) + print("LINE TO SERVER: " + + str(datetime.datetime.now()) + ": " + msg) + msg = msg + "\r\n" msg_len = len(msg) total_sent_len = 0 while total_sent_len < msg_len: @@ -33,8 +44,7 @@ class IO: if sent_len == 0: raise RuntimeError("socket connection broken") total_sent_len += sent_len - print("LINE TO SERVER: " - + str(datetime.datetime.now()) + ": " + msg_orig) + def recv_line_wrapped(self): if len(self.line_buffer) > 0: return self.line_buffer.pop(0) @@ -53,6 +63,7 @@ class IO: self.rune_buffer = lines_split[-1] if len(self.line_buffer) > 0: return self.line_buffer.pop(0) + def recv_line(self): line = self.recv_line_wrapped() if line: @@ -60,7 +71,7 @@ class IO: line) return line -io = IO("irc.freenode.net", 6667) +io = IO(servernet, port) io.send_line("NICK " + nickname) io.send_line("USER " + username + " 0 * : ") io.send_line("JOIN " + channel) @@ -92,7 +103,11 @@ while 1: for i in range(len(matches)): url = matches[i] webpage = urllib.request.urlopen(url) + content_type = webpage.info().get_content_type() charset = webpage.info().get_content_charset() + if not charset or not content_type in ('text/html', 'text/xml', + 'application/xhtml+xml'): + continue content = webpage.read().decode(charset) title = str(content).split('')[1].split('')[0] title = html.unescape(title)