maintenance

This commit is contained in:
mProjectsCode 2023-09-28 11:50:39 +02:00
parent 846f7de184
commit 1d76bb8981
7 changed files with 80 additions and 55 deletions

View file

@ -8,6 +8,12 @@ export class APIManager {
this.apis = [];
}
/**
* Queries the basic info for one query string and multiple APIs.
*
* @param query
* @param apisToQuery
*/
async query(query: string, apisToQuery: string[]): Promise<MediaTypeModel[]> {
console.debug(`MDB | api manager queried with "${query}"`);
@ -23,10 +29,21 @@ export class APIManager {
return res;
}
/**
* Queries detailed information for a MediaTypeModel.
*
* @param item
*/
async queryDetailedInfo(item: MediaTypeModel): Promise<MediaTypeModel> {
return await this.queryDetailedInfoById(item.id, item.dataSource);
}
/**
* Queries detailed info for an id from an API.
*
* @param id
* @param apiName
*/
async queryDetailedInfoById(id: string, apiName: string): Promise<MediaTypeModel> {
for (const api of this.apis) {
if (api.apiName === apiName) {

View file

@ -44,37 +44,37 @@ export class MALAPIManga extends APIModel {
for (const result of data.data) {
const type = this.typeMappings.get(result.type?.toLowerCase());
ret.push(
new MangaModel({
subType: type,
title: result.title,
synopsis: result.synopsis,
englishTitle: result.title_english ?? result.title,
alternateTitles: result.titles?.map((x: any) => x.title) ?? [],
year: result.year ?? result.published?.prop?.from?.year ?? '',
dataSource: this.apiName,
url: result.url,
id: result.mal_id,
genres: result.genres?.map((x: any) => x.name) ?? [],
authors: result.authors?.map((x: any) => x.name) ?? [],
chapters: result.chapters,
volumes: result.volumes,
onlineRating: result.score ?? 0,
image: result.images?.jpg?.image_url ?? '',
released: true,
publishedFrom: new Date(result.published?.from).toLocaleDateString() ?? 'unknown',
publishedTo: new Date(result.published?.to).toLocaleDateString() ?? 'unknown',
status: result.status,
userData: {
watched: false,
lastWatched: '',
personalRating: 0,
},
} as MangaModel)
)
ret.push(
new MangaModel({
subType: type,
title: result.title,
synopsis: result.synopsis,
englishTitle: result.title_english ?? result.title,
alternateTitles: result.titles?.map((x: any) => x.title) ?? [],
year: result.year ?? result.published?.prop?.from?.year ?? '',
dataSource: this.apiName,
url: result.url,
id: result.mal_id,
genres: result.genres?.map((x: any) => x.name) ?? [],
authors: result.authors?.map((x: any) => x.name) ?? [],
chapters: result.chapters,
volumes: result.volumes,
onlineRating: result.score ?? 0,
image: result.images?.jpg?.image_url ?? '',
released: true,
publishedFrom: new Date(result.published?.from).toLocaleDateString() ?? 'unknown',
publishedTo: new Date(result.published?.to).toLocaleDateString() ?? 'unknown',
status: result.status,
userData: {
watched: false,
lastWatched: '',
personalRating: 0,
},
} as MangaModel)
);
}
return ret;

View file

@ -15,7 +15,7 @@ export class OpenLibraryAPI extends APIModel {
this.apiDescription = 'A free API for books';
this.apiUrl = 'https://openlibrary.org/';
this.types = [MediaType.Book];
}
}
async searchByTitle(title: string): Promise<MediaTypeModel[]> {
console.log(`MDB | api "${this.apiName}" queried by Title`);
@ -34,15 +34,15 @@ export class OpenLibraryAPI extends APIModel {
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.key,
} as BookModel)
);
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;
@ -87,4 +87,4 @@ export class OpenLibraryAPI extends APIModel {
return model;
}
}
}

View file

@ -57,7 +57,8 @@ export class MediaDbPreviewModal extends Modal {
fileContent = `\n${fileContent}\n`;
try {
await MarkdownRenderer.renderMarkdown(fileContent, fileDiv, '', this.markdownComponent);
// TODO: fix this not rendering the frontmatter any more
await MarkdownRenderer.render(this.app, fileContent, fileDiv, '', this.markdownComponent);
} catch (e) {
console.warn(`mdb | error during rendering of preview`, e);
}

View file

@ -12,7 +12,16 @@ import { MusicReleaseModel } from '../models/MusicReleaseModel';
import { BoardGameModel } from '../models/BoardGameModel';
import { BookModel } from '../models/BookModel';
export const MEDIA_TYPES: MediaType[] = [MediaType.Movie, MediaType.Series, MediaType.Manga, MediaType.Game, MediaType.Wiki, MediaType.MusicRelease, MediaType.BoardGame, MediaType.Book];
export const MEDIA_TYPES: MediaType[] = [
MediaType.Movie,
MediaType.Series,
MediaType.Manga,
MediaType.Game,
MediaType.Wiki,
MediaType.MusicRelease,
MediaType.BoardGame,
MediaType.Book,
];
export class MediaTypeManager {
mediaFileNameTemplateMap: Map<MediaType, string>;

View file

@ -440,7 +440,7 @@ export class ModalHelper {
* then executes the `submitCallback` returning the callbacks result and closing the modal.
*
* @param selectModalOptions the options for the modal, see {@link SELECT_MODAL_OPTIONS_DEFAULT}
* @param submitCallback the callback that gets executed after the modal has been submitted, but after it has been closed
* @param submitCallback the callback that gets executed after the modal has been submitted, but before it has been closed
* @returns the user input or nothing and a reference to the modal.
*/
async openSelectModal(selectModalOptions: SelectModalOptions, submitCallback: (selectModalData: SelectModalData) => Promise<MediaTypeModel[]>): Promise<MediaTypeModel[]> {