feat(DNBApi): add api from deutsche national bibliothek

This commit is contained in:
0ry5 2024-09-25 21:33:17 +02:00
parent 46198913b1
commit 65e9aa2e0b
9 changed files with 1942 additions and 422 deletions
frontend/src/pages/Main/utils

View file

@ -0,0 +1,29 @@
import { XMLParser } from "fast-xml-parser";
import { Book } from "../../../types/Book";
export const tryDeutscheNationalBibliothekApi = async (
isbn: string
): Promise<Pick<Book, "published" | "title"> | undefined> => {
const parser = new XMLParser();
const foundBooks = parser.parse(
await (
await fetch(
"https://services.dnb.de/sru/dnb?version=1.1&operation=searchRetrieve&query=" +
isbn
)
).text()
);
const foundBook =
foundBooks.searchRetrieveResponse?.records?.record?.recordData?.[
"rdf:RDF"
]?.["rdf:Description"];
if (!!foundBook) {
return {
published: foundBook["dcterms:issued"],
title: foundBook["dc:title"],
};
}
return undefined;
};