diff --git a/index.js b/index.js
index 22e48dd..c69279d 100644
--- a/index.js
+++ b/index.js
@@ -132,7 +132,12 @@ export default async function now() {
const imageId = `${item.id}-image`
const videoId = `${item.id}-video`
if (latest.image) {
- // html image replacement
+ // html image replacement - match by data-service attribute to allow repeated updates
+ newNow = newNow.replace(
+ new RegExp(`(
]*data-service=["']${item.id}["'][^>]*\\bsrc=["'])[^"']*?(["'][^>]*>)`, 'gi'),
+ `$1${latest.image}$2`,
+ )
+ // also handle initial placeholder case
newNow = newNow.replace(
new RegExp(`(
]+src=["'])${imageId}(["'][^>]*>)`, 'gi'),
`$1${latest.image}$2`,
@@ -143,7 +148,12 @@ export default async function now() {
`$1${latest.image}$2`,
)
} 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*
]*\\bdata-service=["']${item.id}["'][^>]*>\\s*`, 'gis'),
+ '',
+ )
+ // also remove by placeholder src
newNow = newNow.replace(
new RegExp(`\\s*
]*\\bsrc=["']${imageId}["'][^>]*>\\s*`, 'gis'),
'',
@@ -156,13 +166,23 @@ export default async function now() {
}
if (latest.video) {
- // html video replacement
+ // html video replacement - match by data-service attribute to allow repeated updates
+ newNow = newNow.replace(
+ new RegExp(`(