console.log("Check new wallpaper"); // sync before do anything, avoid duplicated update await api.waitUntilSynced(); /* Run the fetch request in the backend to avoid CORS in frontend */ var [didUpdate, imageUrl, imageMessage] = await api.runAsyncOnBackendWithManualTransactionHandling(async () => { async function fetchBingImage() { try { // `mkt` param does not work here, Bing return the result based on your IP address const response = await fetch(`https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1`); if (!response.ok) { throw new Error('Network response was not ok'); } var data = await response.json(); return data; } catch (error) { log.error('Bing image fetch error:', error); throw error; } } var didUpdate = false; var bingDailyNote = await api.searchForNote(`#BingDailyNote`); var data = await fetchBingImage(); var newUrl = `https://www.bing.com${data.images[0].url}`; var cssText = await bingDailyNote.getContent(); var regex = /(--background-image-url:\s*url\(")([^"]+)("\);)/; var match = cssText.match(regex); if (match) { var oldUrl = match[2]; // replace if not equal if (oldUrl != newUrl) { cssText = cssText.replace(oldUrl, newUrl); bingDailyNote.setContent(cssText); didUpdate = true; } } return [didUpdate, newUrl, data.images[0].title + ' -- ' + data.images[0].copyright]; }, []) console.log(imageUrl); console.log(imageMessage); await api.waitUntilSynced(); /* apply new image */ if (didUpdate) { document.documentElement.style.setProperty('--background-image-url', `url(${imageUrl})`); } if (config.showMessage) { if (window.glob?.device === "mobile") { api.showMessage(imageMessage, 3000); } else { api.showMessage(imageMessage, 5000); } }