import re
import Utils

REGEX_URL = re.compile("https?://\S+", re.I)

class Module(object):
    def __init__(self, bot, events, exports):
        events.on("received").on("command").on("title", "t").hook(
            self.title, help="Get the title of the provided or most "
            "recent URL.", usage="[URL]")

    def title(self, event):
        url = None
        if len(event["args"]) > 0:
            url = event["args_split"][0]
        else:
            url = event["buffer"].find(REGEX_URL)
            if url:
                url = re.search(REGEX_URL, url.message).group(0)
        if not url:
            event["stderr"].write("No URL provided/found.")
            return
        soup = Utils.get_url(url, soup=True)
        if not soup:
            event["stderr"].write("Failed to get URL.")
            return
        title = soup.title
        if title:
            title = title.text.replace("\n", " ").replace("\r", ""
                ).replace("  ", " ").strip()
            event["stdout"].write(title)
        else:
            event["stderr"].write("No title found.")