home · contact · privacy
Improve URL parser regex.
[plomlombot-irc.git] / plomlombot.py
index a47158c302a3341cbe3e3777410b6e073c0a485d..d6feb9377b4e36a1c5af96adb078f480c1c6f5fa 100755 (executable)
@@ -7,6 +7,7 @@ import select
 import time
 import re
 import urllib.request
+import http.client
 import html
 
 # Defaults, may be overwritten by command line arguments.
@@ -99,13 +100,13 @@ def lineparser_loop(io, nickname):
     def act_on_privmsg(tokens):
 
         def url_check(msg):
-            matches = re.findall("(https?://[^\s]+)", msg)
+            matches = re.findall("(https?://[^\s>]+)", msg)
             for i in range(len(matches)):
                 url = matches[i]
                 try:
                     webpage = urllib.request.urlopen(url, timeout=15)
                 except (urllib.error.HTTPError, urllib.error.URLError,
-                        UnicodeError) as error:
+                        UnicodeError, http.client.BadStatusLine) as error:
                     print("TROUBLE FOLLOWING URL: " + str(error))
                     continue
                 charset = webpage.info().get_content_charset()
@@ -141,7 +142,7 @@ def lineparser_loop(io, nickname):
         msg = str.join(" ", tokens[3:])[1:]
         url_check(msg)
 
-    while 1:
+    while True:
         line = io.recv_line()
         if not line:
             continue
@@ -177,7 +178,7 @@ def parse_command_line_arguments():
     return opts
 
 opts = parse_command_line_arguments()
-while 1:
+while True:
     try:
         io = init_session(opts.server, opts.port, opts.timeout, opts.nickname,
                           opts.username, opts.CHANNEL)