From: Christian Heller <c.heller@plomlompom.de>
Date: Fri, 22 Jan 2016 19:58:28 +0000 (+0100)
Subject: Handle mobile twitter status URLs properly.
X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7Bprefix%7D%7D/test.html?a=commitdiff_plain;h=057a62fe23a19af870b72684e50755c4e93821fc;p=plomlombot-irc.git

Handle mobile twitter status URLs properly.
---

diff --git a/plomlombot.py b/plomlombot.py
index b45c67a..0f738f0 100755
--- a/plomlombot.py
+++ b/plomlombot.py
@@ -109,9 +109,21 @@ def lineparser_loop(io, nickname):
             io.send_line("NOTICE " + target + " :" + msg)
 
         def url_check(msg):
-            matches = re.findall("(https?://[^\s>]+)", msg)
-            for i in range(len(matches)):
-                url = matches[i]
+
+            def handle_url(url):
+
+                def mobile_twitter_hack(url):
+                    re1 = 'https?://(mobile.twitter.com/)[^/]+(/status/)'
+                    re2 = 'https?://mobile.twitter.com/([^/]+)/status/([^\?]+)'
+                    m = re.search(re1, url)
+                    if m and m.group(1) == 'mobile.twitter.com/' \
+                            and m.group(2) == '/status/':
+                        m = re.search(re2, url)
+                        url = 'https://twitter.com/' + m.group(1) + '/status/' \
+                                + m.group(2)
+                        handle_url(url)
+                        return True
+
                 try:
                     r = requests.get(url, timeout=15)
                 except (requests.exceptions.TooManyRedirects,
@@ -119,13 +131,19 @@ def lineparser_loop(io, nickname):
                         requests.exceptions.InvalidURL,
                         requests.exceptions.InvalidSchema) as error:
                     notice("TROUBLE FOLLOWING URL: " + str(error))
-                    continue
+                    return
+                if mobile_twitter_hack(url):
+                    return
                 title = bs4.BeautifulSoup(r.text).title
                 if title:
                     notice("PAGE TITLE: " + title.string.strip())
                 else:
                     notice("PAGE HAS NO TITLE TAG")
 
+            matches = re.findall("(https?://[^\s>]+)", msg)
+            for i in range(len(matches)):
+                handle_url(matches[i])
+
         def command_check(msg):
             if msg[0] != "!":
                 return