Browse Source

fix media labels

imwald
Silberengel 3 days ago
parent
commit
f450f74ae7
  1. 3
      src/constants.ts
  2. 17
      src/services/media-extraction.service.ts

3
src/constants.ts

@ -109,7 +109,6 @@ export const FAST_WRITE_RELAY_URLS = [
'wss://relay.damus.io', 'wss://relay.damus.io',
'wss://relay.primal.net', 'wss://relay.primal.net',
'wss://thecitadel.nostr1.com', 'wss://thecitadel.nostr1.com',
'wss://bevo.nostr1.com',
'wss://nos.lol' 'wss://nos.lol'
] ]
@ -117,7 +116,7 @@ export const FAST_WRITE_RELAY_URLS = [
export const GIF_RELAY_URLS = [ export const GIF_RELAY_URLS = [
'wss://relay.damus.io', 'wss://relay.damus.io',
'wss://relay.primal.net', 'wss://relay.primal.net',
'wss://relay.gifbuddy.lol' 'wss://thecitadel.nostr1.com'
] ]
export const SEARCHABLE_RELAY_URLS = [ export const SEARCHABLE_RELAY_URLS = [

17
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) const imetaInfos = getImetaInfosFromEvent(event)
imetaInfos.forEach((info) => { imetaInfos.forEach((info) => {
const cleaned = cleanUrl(info.url)
if (!cleaned || seenUrls.has(cleaned)) return
if ( if (
info.m?.startsWith('image/') || info.m?.startsWith('image/') ||
info.m?.startsWith('video/') || info.m?.startsWith('video/') ||
@ -66,7 +68,8 @@ export function extractAllMediaFromEvent(
isImage(info.url) || isImage(info.url) ||
isMedia(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) => { imetaInfos.forEach((imeta) => {
const imetaUrl = cleanUrl(imeta.url)
allMedia.forEach((media, index) => { allMedia.forEach((media, index) => {
// Try to find matching imeta info if (imetaUrl === media.url) {
if (cleanUrl(imeta.url) === media.url && imeta.m) { allMedia[index] = { ...media, ...imeta, url: media.url }
allMedia[index] = { ...media, m: imeta.m }
} else { } else {
// Try to get imeta from media upload service // Try to get imeta from media upload service
const tag = mediaUpload.getImetaTagByUrl(media.url) const tag = mediaUpload.getImetaTagByUrl(media.url)
if (tag) { if (tag) {
const parsedImeta = getImetaInfoFromImetaTag(tag, event.pubkey) const parsedImeta = getImetaInfoFromImetaTag(tag, event.pubkey)
if (parsedImeta) { if (parsedImeta) {
allMedia[index] = parsedImeta allMedia[index] = { ...media, ...parsedImeta, url: media.url }
} }
} }
} }

Loading…
Cancel
Save