diff --git a/src/api/apis/OpenLibraryAPI.ts b/src/api/apis/OpenLibraryAPI.ts index c97adf5..99ade6d 100644 --- a/src/api/apis/OpenLibraryAPI.ts +++ b/src/api/apis/OpenLibraryAPI.ts @@ -19,78 +19,73 @@ export class OpenLibraryAPI extends APIModel { this.types = [MediaType.Book]; } -async searchByTitle(title: string): Promise { - console.log(`MDB | api "${this.apiName}" queried by Title`); + async searchByTitle(title: string): Promise { + console.log(`MDB | api "${this.apiName}" queried by Title`); - const searchUrl = `https://openlibrary.org/search.json?title=${encodeURIComponent(title)}`; + const searchUrl = `https://openlibrary.org/search.json?title=${encodeURIComponent(title)}`; - const fetchData = await fetch(searchUrl); - console.debug(fetchData); - if (fetchData.status !== 200) { - throw Error(`MDB | Received status code ${fetchData.status} from an API.`); - } - const data = await fetchData.json(); + const fetchData = await fetch(searchUrl); + console.debug(fetchData); + if (fetchData.status !== 200) { + throw Error(`MDB | Received status code ${fetchData.status} from an API.`); + } + const data = await fetchData.json(); - console.debug(data); + console.debug(data); - const ret: MediaTypeModel[] = []; + const ret: MediaTypeModel[] = []; - for (const result of data.docs) { - ret.push( - new BookModel({ - title: result.title, - englishTitle: result.title_english ?? result.title, - year: result.first_publish_year, - dataSource: this.apiName, - id: result.cover_edition_key ?? result.edition_key, - } as BookModel) - ); + for (const result of data.docs) { + ret.push( + new BookModel({ + title: result.title, + englishTitle: result.title_english ?? result.title, + year: result.first_publish_year, + dataSource: this.apiName, + id: result.key, + } as BookModel) + ); + } + + return ret; } - return ret; -} + async getById(id: string): Promise { + console.log(`MDB | api "${this.apiName}" queried by ID`); -async getById(id: string): Promise { - console.log(`MDB | api "${this.apiName}" queried by ID`); + const searchUrl = `https://openlibrary.org/search.json?q=key:${encodeURIComponent(id)}`; + const fetchData = await fetch(searchUrl); + console.debug(fetchData); - const searchUrl = `https://openlibrary.org/books/${encodeURIComponent(id)}.json`; - const fetchData = await requestUrl({ - url: searchUrl, - headers: { - 'User-Agent': `${pluginName}/${mediaDbVersion} (${contactEmail})`, - }, - }); + if (fetchData.status !== 200) { + throw Error(`MDB | Received status code ${fetchData.status} from an API.`); + } - console.debug(fetchData); + const data = await fetchData.json(); + console.debug(data); + const result = data.docs[0]; - if (fetchData.status !== 200) { - throw Error(`MDB | Received status code ${fetchData.status} from an API.`); + const model = new BookModel({ + title: result.title, + year: result.first_publish_year, + dataSource: this.apiName, + url: `https://openlibrary.org` + result.key, + id: result.key, + englishTitle: result.title_english ?? result.title, + + author: result.author_name ?? 'unknown', + pages: result.number_of_pages_median ?? 'unknown', + image: `https://covers.openlibrary.org/b/OLID/` + result.cover_edition_key + `-L.jpg` ?? '', + + released: true, + + userData: { + read: false, + lastRead: '', + personalRating: 0, + }, + } as BookModel); + + return model; } - - const result = await fetchData.json; - - const model = new BookModel({ - title: result.title, - year: new Date(result.publish_date).getFullYear().toString(), - dataSource: this.apiName, - url: `https://openlibrary.org` + result.key, - id: result.key.slice(7), - isbn10: result.isbn_10, - englishTitle: result.title_english ?? result.title, - - author: result.authors.key ?? 'unknown', - pages: result.number_of_pages ?? 'unknown', - image: `https://covers.openlibrary.org/b/OLID/` + result.key.slice(7) + `-L.jpg` ?? '', - - released: true, - - userData: { - read: false, - lastRead: '', - personalRating: 0, - }, - } as BookModel); - - return model; -} -} +} \ No newline at end of file