mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-03-11 22:15:35 +00:00
fix: bad null handling
This commit is contained in:
parent
5ddfc8338e
commit
8523232899
2 changed files with 21 additions and 6 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ui",
|
||||
"version": "6.3.41",
|
||||
"version": "6.3.42",
|
||||
"license": "BUSL-1.1",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@9.14.4",
|
||||
|
|
|
|||
|
|
@ -10,6 +10,19 @@ import { videoRx } from '$lib/utils'
|
|||
|
||||
export type ResolvedFile = TorrentFile & {metadata: { episode: string | number | undefined, parseObject: AnitomyResult, media: Media, failed: boolean }}
|
||||
|
||||
async function toResolvedFile (file: TorrentFile, media: Media): Promise<ResolvedFile> {
|
||||
const parseObject = (await anitomyscript([file.name]))[0]!
|
||||
return {
|
||||
...file,
|
||||
metadata: {
|
||||
episode: parseObject.episode_number[0] ?? undefined,
|
||||
parseObject,
|
||||
media,
|
||||
failed: false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function resolveFilesPoorly (promise: Promise<{media: Media, id: string, episode: number, files: TorrentFile[]}| null>) {
|
||||
const list = await promise
|
||||
|
||||
|
|
@ -36,9 +49,11 @@ export async function resolveFilesPoorly (promise: Promise<{media: Media, id: st
|
|||
|
||||
let targetAnimeFiles = resolvedFiles.filter(file => file.metadata.media.id && file.metadata.media.id === list.media.id)
|
||||
|
||||
if (!targetAnimeFiles.length) {
|
||||
const max = highestOccurence(resolvedFiles, file => file.metadata.parseObject.anime_title[0] ?? '').metadata.parseObject.anime_title
|
||||
targetAnimeFiles = resolvedFiles.filter(file => file.metadata.parseObject.anime_title === max)
|
||||
if (!targetAnimeFiles.length && resolvedFiles.length) {
|
||||
const max = highestOccurence(resolvedFiles, file => file.metadata.parseObject.anime_title[0] ?? '')?.metadata.parseObject.anime_title[0]
|
||||
targetAnimeFiles = resolvedFiles.filter(file => file.metadata.parseObject.anime_title[0] === max)
|
||||
} else {
|
||||
targetAnimeFiles = await Promise.all(videoFiles.map(file => toResolvedFile(file, list.media)))
|
||||
}
|
||||
|
||||
targetAnimeFiles.sort((a, b) => Number(a.metadata.episode) - Number(b.metadata.episode))
|
||||
|
|
@ -118,13 +133,13 @@ const TYPE_EXCLUSIONS = ['ED', 'ENDING', 'NCED', 'NCOP', 'OP', 'OPENING', 'PREVI
|
|||
// }
|
||||
|
||||
// find element with most occurences in array according to map function
|
||||
function highestOccurence <T> (arr: T[] = [], mapfn = (a: T) => ''): T {
|
||||
function highestOccurence <T> (arr: T[] = [], mapfn = (a: T) => ''): T | undefined {
|
||||
return arr.reduce<{sums: Record<string, number>, max?: T}>((acc, el) => {
|
||||
const mapped = mapfn(el)
|
||||
acc.sums[mapped] = (acc.sums[mapped] ?? 0) + 1
|
||||
acc.max = (acc.max !== undefined ? acc.sums[mapfn(acc.max)]! : -1) > acc.sums[mapped] ? acc.max : el
|
||||
return acc
|
||||
}, { sums: {}, max: undefined }).max as T
|
||||
}, { sums: {}, max: undefined }).max
|
||||
}
|
||||
|
||||
const postfix: Record<number, string> = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue