70 lines
2.3 KiB
Lua
70 lines
2.3 KiB
Lua
|
-- 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
|