add genre tags

This commit is contained in:
ld3zian 2025-01-15 15:50:26 -07:00
parent 6079bd3b97
commit a8b95aa752
4 changed files with 145 additions and 35 deletions

View file

@ -1,4 +1,4 @@
import type { Comic } from './types';
import type { Comic, Genre } from './types';
const languageMap = {
"en": "English",
@ -16,6 +16,28 @@ const languages = new Set(Object.keys(languageMap));
const contentTypes = new Set(["sfw", "nsfw"]);
const urlBase = "https://api.comick.fun/chapter";
let genreCache: Genre[] = [];
export async function fetchGenres(): Promise<Genre[]> {
if (genreCache.length > 0) return genreCache;
try {
const response = await fetch('https://api.comick.fun/genre');
if (!response.ok) throw new Error(`Failed to fetch genres: ${response.status}`);
genreCache = await response.json();
return genreCache;
} catch (error) {
console.error('Error fetching genres:', error);
return [];
}
}
export function getGenreNames(genreIds: number[], genres: Genre[]): string[] {
return genreIds
.map(id => genres.find(g => g.id === id)?.name ?? '')
.filter(name => name !== '');
}
export async function fetchComics(language: string = 'en', contentType: string = 'sfw'): Promise<Comic[]> {
try {
const apiUrl = `${urlBase}?lang=${language}&page=1&order=new&accept_erotic_content=${contentType === 'nsfw'}`;