From f450f74ae7cff2f3e566c6d1cf2a0a55d2bfc684 Mon Sep 17 00:00:00 2001 From: Silberengel Date: Sun, 15 Mar 2026 22:25:10 +0100 Subject: [PATCH] fix media labels --- src/constants.ts | 3 +-- src/services/media-extraction.service.ts | 17 ++++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index 6ea0a215..e9168360 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -109,7 +109,6 @@ export const FAST_WRITE_RELAY_URLS = [ 'wss://relay.damus.io', 'wss://relay.primal.net', 'wss://thecitadel.nostr1.com', - 'wss://bevo.nostr1.com', 'wss://nos.lol' ] @@ -117,7 +116,7 @@ export const FAST_WRITE_RELAY_URLS = [ export const GIF_RELAY_URLS = [ 'wss://relay.damus.io', 'wss://relay.primal.net', - 'wss://relay.gifbuddy.lol' + 'wss://thecitadel.nostr1.com' ] export const SEARCHABLE_RELAY_URLS = [ diff --git a/src/services/media-extraction.service.ts b/src/services/media-extraction.service.ts index ebf58152..286a716b 100644 --- a/src/services/media-extraction.service.ts +++ b/src/services/media-extraction.service.ts @@ -56,9 +56,11 @@ export function extractAllMediaFromEvent( }) } - // 1. Extract from imeta tags + // 1. Extract from imeta tags (keep full metadata: alt, dim, blurHash, etc.) const imetaInfos = getImetaInfosFromEvent(event) imetaInfos.forEach((info) => { + const cleaned = cleanUrl(info.url) + if (!cleaned || seenUrls.has(cleaned)) return if ( info.m?.startsWith('image/') || info.m?.startsWith('video/') || @@ -66,7 +68,8 @@ export function extractAllMediaFromEvent( isImage(info.url) || isMedia(info.url) ) { - addMedia(info.url, info.pubkey, info.m) + seenUrls.add(cleaned) + allMedia.push({ ...info, url: cleaned }) } }) @@ -109,19 +112,19 @@ export function extractAllMediaFromEvent( } } - // 5. Try to match content URLs with imeta tags for better metadata + // 5. Try to match content URLs with imeta tags for better metadata (alt, dim, blurHash, m) imetaInfos.forEach((imeta) => { + const imetaUrl = cleanUrl(imeta.url) allMedia.forEach((media, index) => { - // Try to find matching imeta info - if (cleanUrl(imeta.url) === media.url && imeta.m) { - allMedia[index] = { ...media, m: imeta.m } + if (imetaUrl === media.url) { + allMedia[index] = { ...media, ...imeta, url: media.url } } else { // Try to get imeta from media upload service const tag = mediaUpload.getImetaTagByUrl(media.url) if (tag) { const parsedImeta = getImetaInfoFromImetaTag(tag, event.pubkey) if (parsedImeta) { - allMedia[index] = parsedImeta + allMedia[index] = { ...media, ...parsedImeta, url: media.url } } } }