home · contact · privacy
Use request library to simplify page retrieval code.
authorChristian Heller <c.heller@plomlompom.de>
Tue, 19 Jan 2016 21:05:49 +0000 (22:05 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 19 Jan 2016 21:05:49 +0000 (22:05 +0100)
plomlombot.py
requirements.txt [new file with mode: 0644]

index 9e9d0a44ce21bc1d07204dcb9780c54ac1b31d0e..f7c7e32899704b705baf8b8ca49ea16c0fd7ccb3 100755 (executable)
@@ -6,8 +6,7 @@ import datetime
 import select
 import time
 import re
-import urllib.request
-import http.client
+import requests
 import html
 import html.parser
 
@@ -129,26 +128,14 @@ def lineparser_loop(io, nickname):
             matches = re.findall("(https?://[^\s>]+)", msg)
             for i in range(len(matches)):
                 url = matches[i]
-                request = urllib.request.Request(url, headers={
-                    "User-Agent": "plomlombot"
-                })
                 try:
-                    webpage = urllib.request.urlopen(request, timeout=15)
-                except (urllib.error.HTTPError, urllib.error.URLError,
-                        UnicodeError, http.client.BadStatusLine) as error:
+                    r = requests.get(url, timeout=15)
+                except (requests.exceptions.TooManyRedirects,
+                        requests.exceptions.ConnectionError,
+                        requests.exceptions.InvalidSchema) as error:
                     notice("TROUBLE FOLLOWING URL: " + str(error))
                     continue
-                charset = webpage.info().get_content_charset()
-                if not charset:
-                    notice("TROUBLE READING PAGE TITLE: no charset in header")
-                    continue
-                content_type = webpage.info().get_content_type()
-                if content_type not in ('text/html', 'text/xml',
-                                        'application/xhtml+xml'):
-                    notice("TROUBLE READING PAGE TITLE: bad content type "
-                           + content_type)
-                    continue
-                content = webpage.read().decode(charset)
+                content = r.text
                 title = HTMLParser(content, "title").data
                 title = html.unescape(title)
                 notice("PAGE TITLE FOR URL: " + title)
diff --git a/requirements.txt b/requirements.txt
new file mode 100644 (file)
index 0000000..ca0dee4
--- /dev/null
@@ -0,0 +1 @@
+requests==2.9.1