updated image and video replacement logic

This commit is contained in:
dylan 2026-01-01 19:53:45 +00:00
parent 05904356b9
commit df0bc8beab

View file

@ -132,7 +132,12 @@ export default async function now() {
const imageId = `${item.id}-image` const imageId = `${item.id}-image`
const videoId = `${item.id}-video` const videoId = `${item.id}-video`
if (latest.image) { if (latest.image) {
// html image replacement // html image replacement - match by data-service attribute to allow repeated updates
newNow = newNow.replace(
new RegExp(`(<img[^>]*data-service=["']${item.id}["'][^>]*\\bsrc=["'])[^"']*?(["'][^>]*>)`, 'gi'),
`$1${latest.image}$2`,
)
// also handle initial placeholder case
newNow = newNow.replace( newNow = newNow.replace(
new RegExp(`(<img[^>]+src=["'])${imageId}(["'][^>]*>)`, 'gi'), new RegExp(`(<img[^>]+src=["'])${imageId}(["'][^>]*>)`, 'gi'),
`$1${latest.image}$2`, `$1${latest.image}$2`,
@ -143,7 +148,12 @@ export default async function now() {
`$1${latest.image}$2`, `$1${latest.image}$2`,
) )
} else { } else {
// remove img tags if no image available (handle multi-line tags and any attribute order) // remove img tags if no image available - match by data-service attribute
newNow = newNow.replace(
new RegExp(`\\s*<img\\b[^>]*\\bdata-service=["']${item.id}["'][^>]*>\\s*`, 'gis'),
'',
)
// also remove by placeholder src
newNow = newNow.replace( newNow = newNow.replace(
new RegExp(`\\s*<img\\b[^>]*\\bsrc=["']${imageId}["'][^>]*>\\s*`, 'gis'), new RegExp(`\\s*<img\\b[^>]*\\bsrc=["']${imageId}["'][^>]*>\\s*`, 'gis'),
'', '',
@ -156,13 +166,23 @@ export default async function now() {
} }
if (latest.video) { if (latest.video) {
// html video replacement // html video replacement - match by data-service attribute to allow repeated updates
newNow = newNow.replace(
new RegExp(`(<video[^>]*data-service=["']${item.id}["'][^>]*\\bsrc=["'])[^"']*?(["'][^>]*>)`, 'gi'),
`$1${latest.video}$2`,
)
// also handle initial placeholder case
newNow = newNow.replace( newNow = newNow.replace(
new RegExp(`(<video[^>]+src=["'])${videoId}(["'][^>]*>)`, 'gi'), new RegExp(`(<video[^>]+src=["'])${videoId}(["'][^>]*>)`, 'gi'),
`$1${latest.video}$2`, `$1${latest.video}$2`,
) )
} else { } else {
// remove video tags if no video available // remove video tags if no video available - match by data-service attribute
newNow = newNow.replace(
new RegExp(`\\s*<video\\b[^>]*\\bdata-service=["']${item.id}["'][^>]*>[\\s\\S]*?</video>\\s*`, 'gis'),
'',
)
// also remove by placeholder src
newNow = newNow.replace( newNow = newNow.replace(
new RegExp(`\\s*<video\\b[^>]*\\bsrc=["']${videoId}["'][^>]*>[\\s\\S]*?</video>\\s*`, 'gis'), new RegExp(`\\s*<video\\b[^>]*\\bsrc=["']${videoId}["'][^>]*>[\\s\\S]*?</video>\\s*`, 'gis'),
'', '',