36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
|
import json
|
||
|
import Utils
|
||
|
|
||
|
URL_GOOGLEBOOKS = "https://www.googleapis.com/books/v1/volumes"
|
||
|
|
||
|
class Module(object):
|
||
|
_name = "ISBN"
|
||
|
def __init__(self, bot):
|
||
|
self.bot = bot
|
||
|
bot.events.on("received").on("command").on("isbn").hook(
|
||
|
self.isbn, help="Get book information from a provided ISBN",
|
||
|
min_args=1)
|
||
|
|
||
|
def isbn(self, event):
|
||
|
isbn = event["args_split"][0]
|
||
|
if len(isbn) == 10:
|
||
|
isbn = "978%s" % isbn
|
||
|
isbn = isbn.replace("-", "")
|
||
|
page = Utils.get_url(URL_GOOGLEBOOKS, get_params={
|
||
|
"q": "isbn:%s" % isbn, "country": "us"}, json=True)
|
||
|
if page:
|
||
|
if page["totalItems"] > 0:
|
||
|
book = page["items"][0]["volumeInfo"]
|
||
|
title = book["title"]
|
||
|
sub_title = book["subtitle"]
|
||
|
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))
|
||
|
else:
|
||
|
event["stderr"].write("Unable to find book")
|
||
|
else:
|
||
|
event["stderr"].write("Failed to load results")
|