From b11d5b0a8d204ed3db401c0eedb8da25e4076131 Mon Sep 17 00:00:00 2001 From: Steven Vandevelde Date: Sat, 10 Feb 2024 11:24:04 +0100 Subject: [PATCH] chore: show music-metadata errors as warnings in browser console --- src/Javascript/processing.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Javascript/processing.ts b/src/Javascript/processing.ts index e04b7e56..b2f3ab32 100644 --- a/src/Javascript/processing.ts +++ b/src/Javascript/processing.ts @@ -5,7 +5,7 @@ // Audio processing, getting metadata, etc. import type { IAudioMetadata } from "music-metadata"; -import type { MediaInfo, MediaInfoType } from "mediainfo.js"; +import type { MediaInfoType } from "mediainfo.js"; import * as Uint8arrays from "uint8arrays"; import { transformUrl } from "./urls"; @@ -74,13 +74,21 @@ export async function getTags( tokenizer.rangeRequestClient.resolvedUrl = undefined; } - const mmResult = await musicMetadata.parseFromTokenizer(tokenizer, { skipCovers: !covers }).catch(() => null); + const mmResult = await musicMetadata.parseFromTokenizer( + tokenizer, + { skipCovers: !covers } + ).catch(err => { + console.warn(err) + return null + }); + const mmTags = mmResult && pickTagsFromMusicMetadata(filename, mmResult); if (mmTags) return mmTags; const miResult = await (await mediaInfoClient(covers)) .analyzeData(getSize(headUrl), readChunk(getUrl)) .catch((_) => null); + const miTags = miResult && pickTagsFromMediaInfo(filename, miResult); if (miTags) return miTags; @@ -160,6 +168,8 @@ function pickTagsFromMediaInfo(filename: string, result: MediaInfoType): Tags | : null; if (!artist && !title) return null; + + // TODO: Encoding issues with mediainfo.js if (artist?.includes("�") || album?.includes("�") || title?.includes("�")) return null if (artist && artist.includes(" / ")) { -- 2.51.2