This repository has been archived on 2021-04-24. You can view files and clone it, but cannot push or open issues or pull requests.
Mikubot/plugins/google_books.lua
2015-11-12 17:42:03 +01:00

70 lines
2.3 KiB
Lua
Raw Blame History

-- This is a proprietary plugin, property of Andreas Bielawski, (c) 2015 <andi (dot) b (at) outlook (dot) de>
-- DO NOT USE WITHOUT PERMISSION
do
local BASE_URL = 'https://www.googleapis.com/books/v1'
local function get_books_data (term)
local url = BASE_URL..'/volumes?q='..term..'&maxResults=3&fields=totalItems,items%28volumeInfo%28title,authors,publisher,publishedDate,pageCount,canonicalVolumeLink%29,saleInfo%28country,listPrice%29%29'
local res,code = https.request(url)
if code ~= 200 then return "HTTP-FEHLER" end
local data = json:decode(res)
return data
end
local function send_books_data(data, receiver)
local text = ""
for book in pairs(data.items) do
text = text..'"'..data.items[book].volumeInfo.title..'"'
if data.items[book].volumeInfo.publisher == nil and data.items[book].volumeInfo.pageCount ~= nil then
text = text..'\n'..data.items[book].volumeInfo.authors[1]..', '
else
text = text..'\n'..data.items[book].volumeInfo.authors[1]..''
end
if data.items[book].volumeInfo.authors[1] == data.items[book].volumeInfo.publisher then data.items[book].volumeInfo.publisher = nil end
if data.items[book].volumeInfo.publisher then
if data.items[book].volumeInfo.pageCount then
text = text..', '..data.items[book].volumeInfo.publisher..', '
else
text = text..', '..data.items[book].volumeInfo.publisher
end
end
if data.items[book].volumeInfo.pageCount then
text = text..data.items[book].volumeInfo.pageCount..' Seiten'
end
if data.items[book].volumeInfo.publishedDate then
text = text..', erschienen '..data.items[book].volumeInfo.publishedDate
end
if data.items[book].saleInfo.listPrice then
text = text..'\nPreis: '..data.items[book].saleInfo.listPrice.amount..' '..data.items[book].saleInfo.listPrice.currencyCode
end
text = text..'\n'..data.items[book].volumeInfo.canonicalVolumeLink
text = text..'\n\n'
end
send_large_msg(receiver, text, ok_cb, false)
end
local function run(msg, matches)
local term = URL.escape(matches[1])
local data = get_books_data(term)
local receiver = get_receiver(msg)
send_books_data(data, receiver)
end
return {
description = "Sucht nach B<>chern in Google Books.",
usage = "/books [Suchbegriff]: Sucht nach B<>chern in Google Books",
patterns = {"^/books (.*)$"},
run = run
}
end