From ddaaaafa3fabbc7bd81d3ec74d2284c3c256097f Mon Sep 17 00:00:00 2001 From: khuxkm fbexl Date: Fri, 14 May 2021 21:25:56 +0000 Subject: [PATCH] Port decode fix and disconnect detection to wikibot --- bot.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/bot.py b/bot.py index c0cb20a..be28ccd 100644 --- a/bot.py +++ b/bot.py @@ -17,8 +17,24 @@ class Socket: if lines[-1]: self._read_buffer=lines[-1] lines.pop(-1) - lines = [line.decode("utf-8") for line in lines] - return lines + out = [] + for line in lines: + # try to decode as UTF-8, then CP1252, then ISO-8859-1 + # if none of them work then just ignore the line + try: + line = line.decode("utf-8") + out.append(line) + except: + try: + line = line.decode("cp1252") + out.append(line) + except: + try: + line = line.decode("iso-8859-1") + out.append(line) + except: + continue + return out def send(self,line): self.sock.send(line.encode("utf-8")) def close(self): @@ -166,9 +182,11 @@ class IRCBot: self.running=True while self.running: lines = self.socket.read() - if lines: - for line in lines: - self.handle_line(line) + if lines is None: # socket dead for some reason + self.running = False + continue # exit loop + for line in lines: + self.handle_line(line) self.socket.close() del self.socket