diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/auto_mode.py | 18 | ||||
| -rw-r--r-- | modules/books.py (renamed from modules/isbn.py) | 36 | ||||
| -rw-r--r-- | modules/commands.py | 4 | ||||
| -rw-r--r-- | modules/set.py | 8 | ||||
| -rw-r--r-- | modules/trakt.py | 10 | ||||
| -rw-r--r-- | modules/youtube.py | 6 |
6 files changed, 58 insertions, 24 deletions
diff --git a/modules/auto_mode.py b/modules/auto_mode.py new file mode 100644 index 00000000..3fbdc96c --- /dev/null +++ b/modules/auto_mode.py @@ -0,0 +1,18 @@ + + +class Module(object): + def __init__(self, bot): + self.bot = bot + bot.events.on("channel").on("mode").hook(self.on_mode) + bot.events.on("received").on("join").hook(self.on_join) + + def on_mode(self, event): + if event["channel"].get_setting("auto-mode", False): + remove = event["remove"] + channel = event["channel"] + mode = event["mode"] + args = event["args"] + + def on_join(self, event): + if event["channel"].get_setting("auto-mode", False): + pass diff --git a/modules/isbn.py b/modules/books.py index 67870520..c78e381f 100644 --- a/modules/isbn.py +++ b/modules/books.py @@ -1,7 +1,9 @@ -import json +import json, re import Utils URL_GOOGLEBOOKS = "https://www.googleapis.com/books/v1/volumes" +URL_BOOKINFO = "https://books.google.co.uk/books?id=%s" +REGEX_BOOKID = re.compile("id=([\w\-]+)") class Module(object): _name = "ISBN" @@ -10,26 +12,38 @@ class Module(object): bot.events.on("received").on("command").on("isbn").hook( self.isbn, help="Get book information from a provided ISBN", min_args=1) + bot.events.on("received").on("command").on("book").hook( + self.book, help="Get book information from a provided title", + min_args=1) - def isbn(self, event): - isbn = event["args_split"][0] - if len(isbn) == 10: - isbn = "978%s" % isbn - isbn = isbn.replace("-", "") + def get_book(self, query, event): page = Utils.get_url(URL_GOOGLEBOOKS, get_params={ - "q": "isbn:%s" % isbn, "country": "us"}, json=True) + "q": query, "country": "us"}, json=True) if page: if page["totalItems"] > 0: book = page["items"][0]["volumeInfo"] + print(book) title = book["title"] - sub_title = book["subtitle"] + sub_title = (", %s" % book.get("subtitle") + ) if book.get("subtitle") else "" authors = ", ".join(book["authors"]) date = book["publishedDate"] rating = book["averageRating"] - #language = book["language"] - event["stdout"].write("%s - %s (%s), %s (%s/5.0)" % ( - title, authors, date, sub_title, rating)) + id = re.search(REGEX_BOOKID, book["infoLink"]).group(1) + info_link = URL_BOOKINFO % id + event["stdout"].write("%s - %s (%s)%s %s (%s/5.0)" % ( + title, authors, date, sub_title, info_link, rating)) else: event["stderr"].write("Unable to find book") else: event["stderr"].write("Failed to load results") + + def isbn(self, event): + isbn = event["args_split"][0] + if len(isbn) == 10: + isbn = "978%s" % isbn + isbn = isbn.replace("-", "") + self.get_book("isbn:%s" % isbn, event) + + def book(self, event): + self.get_book(event["args"], event) diff --git a/modules/commands.py b/modules/commands.py index 3ea4a4e0..cfdfc5a6 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -88,7 +88,6 @@ class Module(object): return log = target.log - log.skip_next() module_name = hook.function.__self__._name stdout, stderr = StdOut(module_name, target), StdErr(module_name, @@ -99,6 +98,7 @@ class Module(object): for returned in returns: if returned: stderr.write(returned).send() + log.skip_next() return args_split = list(filter(None, event["message_split"][args_index:])) min_args = hook.kwargs.get("min_args") @@ -117,6 +117,8 @@ class Module(object): target.last_stdout = stdout stderr.send() target.last_stderr = stderr + log.skip_next() + def channel_message(self, event): command_prefix = event["channel"].get_setting("command_prefix", diff --git a/modules/set.py b/modules/set.py index 3628ab8d..456e4b5a 100644 --- a/modules/set.py +++ b/modules/set.py @@ -26,14 +26,14 @@ class Module(object): def postboot_channelset(self, event): self._postboot_set(self.channel_settings, event) - def _set(self, settings, event): + def _set(self, settings, event, target): if len(event["args_split"]) > 1: setting = event["args_split"][0].lower() if setting in settings: value = " ".join(event["args_split"][1:]) value = settings[setting]["validate"](value) if not value == None: - event["target"].set_setting(setting, value) + target.set_setting(setting, value) event["stdout"].write("Saved setting") else: event["stderr"].write("Invalid value") @@ -45,11 +45,11 @@ class Module(object): event["stdout"].write("Available settings: %s" % ( ", ".join(settings.keys()))) def set(self, event): - self._set(self.settings, event["user"], event) + self._set(self.settings, event, event["user"]) def channel_set(self, event): if event["target"].mode_or_above(event["user"].nickname, "o"): - self._set(self.channel_settings, event) + self._set(self.channel_settings, event, event["target"]) else: event["stderr"].write("You do not have the modes required") diff --git a/modules/trakt.py b/modules/trakt.py index 94538b8f..b488ad40 100644 --- a/modules/trakt.py +++ b/modules/trakt.py @@ -29,12 +29,9 @@ class Module(object): "trakt-api-version": "2", "trakt-api-key": self.bot.config["trakt-api-key"]}, json=True, code=True) - if page: + if page[0]: code, page = page - if code == 204: - event["stderr"].write( - "%s is not watching anything" % username) - else: + if code == 200: type = page["type"] if type == "movie": title = page["movie"]["title"] @@ -58,5 +55,8 @@ class Module(object): URL_TRAKTSLUG % ("shows", slug))) else: print("ack! unknown trakt media type!") + else: + event["stderr"].write( + "%s is not watching anything" % username) else: event["stderr"].write("Failed to load results") diff --git a/modules/youtube.py b/modules/youtube.py index 3c766db8..8cdd2b36 100644 --- a/modules/youtube.py +++ b/modules/youtube.py @@ -58,9 +58,9 @@ class Module(object): video_duration += "%s:" % match.group(1)[:-1].zfill(2 ) if match.group(1) else "" video_duration += "%s:" % match.group(2)[:-1].zfill(2 - ) if match.group(2) else "" + ) if match.group(2) else "00:" video_duration += "%s" % match.group(3)[:-1].zfill(2 - ) if match.group(3) else "" + ) if match.group(3) else "00" return "%s (%s) uploaded by %s, %s views (%s%s%s%s) %s" % ( video_title, video_duration, video_uploader, "{:,}".format( int(video_views)), video_likes, ARROW_UP, ARROW_DOWN, video_dislikes, @@ -72,7 +72,7 @@ class Module(object): if event["args"]: search = event["args"] else: - last_youtube = event["channel"].log.find(REGEX_YOUTUBE) + last_youtube = event["log"].find(REGEX_YOUTUBE) if last_youtube: video_id = re.search(REGEX_YOUTUBE, last_youtube.message).group(1) if search or video_id: |
