X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/calendar?a=blobdiff_plain;f=plomlombot.py;h=126323f299717581e097b56fa8d449ca4f65d560;hb=937110c667bb079367a14581a4853d68c6be2f40;hp=b312eb261d6c79610acd15882a2737fb81f49aa4;hpb=c08b7611ac9227bd57c1d3eb974b043ab35645f3;p=plomlombot-irc.git diff --git a/plomlombot.py b/plomlombot.py index b312eb2..126323f 100644 --- a/plomlombot.py +++ b/plomlombot.py @@ -1,16 +1,18 @@ 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: @@ -69,43 +71,66 @@ class IO: line) return line -io = IO("irc.freenode.net", 6667) -io.send_line("NICK " + nickname) -io.send_line("USER " + username + " 0 * : ") -io.send_line("JOIN " + channel) -servername = io.recv_line().split(" ")[0][1:] -while 1: - line = io.recv_line() - if not line: - continue - tokens = line.split(" ") - if len(tokens) > 1: - if tokens[1] == "PRIVMSG": - sender = "" - for rune in tokens[0]: - if rune == "!": - break - if rune != ":": - sender += rune - receiver = "" - for rune in tokens[2]: - if rune == "!": - break - if rune != ":": - receiver += rune - target = sender - if receiver != nickname: - target = receiver - msg = str.join(" ", tokens[3:])[1:] +def lineparser_loop(): + + def act_on_privmsg(tokens): + + def url_check(msg): matches = re.findall("(https?://[^\s]+)", msg) for i in range(len(matches)): url = matches[i] - webpage = urllib.request.urlopen(url) + try: + webpage = urllib.request.urlopen(url, timeout=15) + except urllib.error.HTTPError as error: + print("TROUBLE FOLLOWING URL: " + str(error)) + continue charset = webpage.info().get_content_charset() + if not charset: + charset="utf-8" + content_type = webpage.info().get_content_type() + if not content_type in ('text/html', 'text/xml', + 'application/xhtml+xml'): + print("TROUBLE INTERPRETING URL: bad content type " + + content_type) + continue content = webpage.read().decode(charset) title = str(content).split('