X-Git-Url: https://plomlompom.com/repos/?p=plomlombot-irc.git;a=blobdiff_plain;f=plomlombot.py;h=0f738f0003e5c8dca674e97b2df0bde7c9b9c460;hp=4befc396de3539871b95c1442bcbfd77b9e259b4;hb=057a62fe23a19af870b72684e50755c4e93821fc;hpb=25eb45ae6cb294744e92406acfa9fe931550ffcb diff --git a/plomlombot.py b/plomlombot.py index 4befc39..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 @@ -145,6 +163,10 @@ def lineparser_loop(io, nickname): quotesfile.close() notice("ADDED QUOTE #" + str(len(lines) - 1)) elif tokens[0] == "quote": + if len(tokens) > 2 or \ + (len(tokens) == 2 and not tokens[1].isdigit()): + notice("SYNTAX: !quote [int]") + return if not os.access(quotesfile_name, os.F_OK): notice("NO QUOTES AVAILABLE") return @@ -152,7 +174,14 @@ def lineparser_loop(io, nickname): lines = quotesfile.readlines() quotesfile.close() lines = lines[1:] - i = random.randrange(len(lines)) + if len(tokens) == 2: + i = int(tokens[1]) + if i == 0 or i > len(lines): + notice("THERE'S NO QUOTE OF THAT INDEX") + return + i = i - 1 + else: + i = random.randrange(len(lines)) notice("QUOTE #" + str(i + 1) + ": " + lines[i]) sender = ""