1document.addEventListener('DOMContentLoaded', () => { 2 window.RQST_UI.init(); 3 window.RQST_COVERS.init(); 4 window.RQST_PLAYER.init(); 5 6 // El arranque queda secuenciado: primero se resuelve la programación y se 7 // muestra su carátula durante 10 segundos. La propia agenda dispara después 8 // la primera lectura de metadata, evitando el parpadeo default â externa â programa. 9 window.RQST_SCHEDULE.init(); 10 11 // El ciclo normal comienza después de que el arranque editorial haya terminado. 12 setTimeout(() => { 13 window.RQST_METADATA.update(1); 14 window.RQST_METADATA.update(2); 15 setInterval(() => { 16 window.RQST_METADATA.update(1); 17 window.RQST_METADATA.update(2); 18 }, 15000); 19 }, 30000); 20 21 const timedMinutes = new Set([0, 1, 15, 30, 45]); 22 const nowAtStartup = new Date(); 23 let lastBoundaryKey = timedMinutes.has(nowAtStartup.getMinutes()) 24 ? `${nowAtStartup.getFullYear()}-${nowAtStartup.getMonth()}-${nowAtStartup.getDate()}-${nowAtStartup.getHours()}-${nowAtStartup.getMinutes()}` 25 : ''; 26 27 function checkTimedCover() { 28 const now = new Date(); 29 const minute = now.getMinutes(); 30 if (!timedMinutes.has(minute)) return; 31 32 const key = `${now.getFullYear()}-${now.getMonth()}-${now.getDate()}-${now.getHours()}-${minute}`; 33 if (key === lastBoundaryKey) return; 34 lastBoundaryKey = key; 35 36 const durationMs = window.RQST_CONFIG.temporaryCoverMs || 10000; 37 38 [1, 2].forEach(signalId => { 39 let src; 40 let sourceText; 41 42 if (minute === 0) { 43 src = window.RQST_CONFIG.hourCover; 44 sourceText = 'RQST Hora'; 45 } else if (minute === 30) { 46 src = window.RQST_CONFIG.halfHourCover; 47 sourceText = 'RQST Media hora'; 48 } else { 49 src = window.RQST_COVERS.getProgramCover(signalId).src; 50 sourceText = 'RQST Programa'; 51 } 52 53 window.RQST_COVERS.showTemporaryCover(signalId, src, { 54 durationMs, 55 sourceText 56 }); 57 }); 58 59 setTimeout(() => { 60 window.RQST_METADATA.update(1); 61 window.RQST_METADATA.update(2); 62 }, durationMs + 100); 63 } 64 65 setInterval(checkTimedCover, 1000); 66});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.