const { ipcRenderer } = require("electron"); const { getImage } = require("./song-info"); global.songInfo = {}; ipcRenderer.on("update-song-info", async (_, extractedSongInfo) => { global.songInfo = JSON.parse(extractedSongInfo); global.songInfo.image = await getImage(global.songInfo.imageSrc); }); const injectListener = () => { const oldXHR = window.XMLHttpRequest; function newXHR() { const realXHR = new oldXHR(); realXHR.addEventListener( "readystatechange", () => { if (realXHR.readyState === 4 && realXHR.status === 200 && realXHR.responseURL.includes("/player")) { // if the request contains the song info, send the response to ipcMain ipcRenderer.send("song-info-request", realXHR.responseText); } }, false ); return realXHR; } window.XMLHttpRequest = newXHR; }; module.exports = injectListener;