From 2f4e76747de4f5d3f19ef88cf08d37d65bc89dbc Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 3 Apr 2024 18:34:04 +0200 Subject: [PATCH] filter out duplicate embeds --- src/runners/individualRunner.ts | 14 ++++++++------ src/runners/runner.ts | 3 ++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/runners/individualRunner.ts b/src/runners/individualRunner.ts index 6c7e452..7f93356 100644 --- a/src/runners/individualRunner.ts +++ b/src/runners/individualRunner.ts @@ -59,12 +59,14 @@ export async function scrapeInvidualSource( if (!output) throw new Error('output is null'); - // filter output with only valid embeds that are not disabled - output.embeds = output.embeds.filter((embed) => { - const e = list.embeds.find((v) => v.id === embed.embedId); - if (!e || e.disabled) return false; - return true; - }); + // filter output with only valid embeds that are not disabled, and remove duplicates + output.embeds = output.embeds + .filter((embed) => { + const e = list.embeds.find((v) => v.id === embed.embedId); + if (!e || e.disabled) return false; + return true; + }) + .filter((v, i, a) => a.findIndex((t) => t.embedId === v.embedId) === i); if ((!output.stream || output.stream.length === 0) && output.embeds.length === 0) throw new NotFoundError('No streams found'); diff --git a/src/runners/runner.ts b/src/runners/runner.ts index c3bc9eb..60f3385 100644 --- a/src/runners/runner.ts +++ b/src/runners/runner.ts @@ -112,12 +112,13 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt }; } - // filter disabled and run embed scrapers on listed embeds + // filter disabled, filter out duplicates, run embed scrapers on listed embeds const sortedEmbeds = output.embeds .filter((embed) => { const e = list.embeds.find((v) => v.id === embed.embedId); return e && !e.disabled; }) + .filter((v, i, a) => a.findIndex((t) => t.embedId === v.embedId) === i) .sort((a, b) => embedIds.indexOf(a.embedId) - embedIds.indexOf(b.embedId)); if (sortedEmbeds.length > 0) {