Array of KenmeiManga entries.
Object containing total manga, status counts, volume data, average score, and total chapters read.
export function extractMangaMetadata(manga: KenmeiManga[]): {
totalManga: number;
statusCounts: Record<KenmeiStatus, number>;
hasVolumes: boolean;
averageScore: number;
totalChaptersRead: number;
} {
const statusCounts: Record<KenmeiStatus, number> = {
reading: 0,
completed: 0,
on_hold: 0,
dropped: 0,
plan_to_read: 0,
};
let totalScore = 0;
let scoredEntries = 0;
let totalChaptersRead = 0;
let hasVolumesData = false;
for (const entry of manga) {
// Count statuses
statusCounts[entry.status] = (statusCounts[entry.status] ?? 0) + 1;
if (entry.score > 0) {
totalScore += entry.score;
scoredEntries++;
}
totalChaptersRead += entry.chapters_read ?? 0;
if (entry.volumes_read !== undefined || entry.total_volumes !== undefined)
hasVolumesData = true;
}
return {
totalManga: manga.length,
statusCounts,
hasVolumes: hasVolumesData,
averageScore: scoredEntries > 0 ? totalScore / scoredEntries : 0,
totalChaptersRead,
};
}
Extract unique metadata from manga entries. Useful for analyzing the dataset and providing statistics.