From 76399a110f6f87bac241808b424b42c1cf324132 Mon Sep 17 00:00:00 2001 From: nemunaire Date: Sun, 7 Sep 2014 23:55:40 +0200 Subject: [PATCH] New module books: related to #65 --- modules/books.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 modules/books.py diff --git a/modules/books.py b/modules/books.py new file mode 100644 index 0000000..8a429c6 --- /dev/null +++ b/modules/books.py @@ -0,0 +1,39 @@ +# coding=utf-8 + +"""Looking for books""" + +import urllib.request + +from hooks import hook +from tools import web + +nemubotversion = 3.4 + +def load(context): + if not CONF or not CONF.hasNode("goodreadsapi") or not CONF.getNode("goodreadsapi").hasAttribute("key"): + print ("You need a Goodreads API key in order to use this " + "module. Add it to the module configuration file:\n\nGet one at " + "https://www.goodreads.com/api/keys") + return None + +def search_book(title): + response = web.getXML("https://www.goodreads.com/search.xml?key=%s&q=%s" % (CONF.getNode("goodreadsapi")["key"], urllib.parse.quote(title))) + if response is not None: + return response.getNode("search").getNode("results").getNodes("work") + else: + return [] + +@hook("cmd_hook", "book") +def cmd_book(msg): + if len(msg.cmds) < 2: + raise IRCException("please give me a title to search") + + title = " ".join(msg.cmds) + res = Response(msg.sender, channel=msg.channel, + title="%s" % (title), count=" (%d more books)") + + books = search_book(title) + for book in books: + res.append_message("%s, writed by %s" % (book.getNode("best_book").getNode("title").getContent(), book.getNode("best_book").getNode("author").getNode("name").getContent())) + return res