Как получить информацию о книге в формате XML/JSON из библиотеки конгресса ISBN
В Библиотеке Конгресса есть сайт для поиска книг ISBN. Простой способ получить информацию о книге - использовать URL-адрес, например:
http://lccn.loc.gov/2009019559/mods
где он возвращает структуру XML, которая может легко анализироваться. Для URL-адреса требуется уникальный номер LCCN в следующем формате:
http://lccn.loc.gov/[lccn]/mods
У меня есть партия книг с ISBN, закодированным в штрих-коде. Как я могу получить / преобразовать ISBN в LCCN, чтобы получить данные XML книги?
2 ответа
Вы можете использовать каталог SRU из Библиотеки Конгресса. Запрос будет выглядеть примерно так:
lx2.loc.gov:210/lcdb?version=1.1&operation=searchRetrieve&query=bath.isbn=[ISBN]&maximumRecords=1&recordSchema=mods
Замена [ISBN] на ISBN, который вы хотите найти
В этом ответе находится элемент LCCN. Тем не менее, каталог уже возвращает MODS, поэтому может не потребоваться что-либо делать вообще.
Вы можете использовать API Google Книг, например: https://www.googleapis.com/books/v1/volumes?q=LCCN2001051058
Ответ в формате JSON. Он включает в себя идентификаторы ISBN-10 и ISBN-13. Вам нужно будет пакетировать запросы, используя ваш любимый язык программирования, в Pharo Smalltalk с парсером PetitJson и Zinc с поддержкой HTTPS это будет:
| parser lccnCollection |
parser := PPParserResource current parserAt: PPJsonParser.
lccnCollection := #('2001051058' '2001051058').
lccnCollection do: [: lccnNumber |
| json jsonObject |
json := (Url absoluteFromText: 'https://www.googleapis.com/books/v1/volumes?q=LCCN' , lccnNumber) retrieveContents contents.
jsonObject := parser parse: json.
" ... retrieve ISSN from jsonObject, etc ... "].
Осторожно, вам может понадобиться ключ API для отправки пакетных запросов в Google.