1const SCHEDULE_URL = 'https://embed.vrapro.hu/json/?radio=6egls0eefa9a5747eab2dab995b81d8d&plugin=broadcasterweek&next='; 2const SCHEDULE_DAYS = ['hétfÅ', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat', 'vasárnap']; 3 4function scheduleEscape(text) { 5 const div = document.createElement('div'); 6 div.textContent = text == null ? '' : text; 7 return div.innerHTML; 8} 9 10// IdÅbélyeg átváltása a rádió idÅzónájára 11function scheduleDate(timestamp, timezone) { 12 return new Date(Date.parse(new Date(timestamp * 1000).toLocaleString('en-US', { timeZone: timezone }))); 13} 14 15function scheduleItem(show, time) { 16 const avatar = show.avatar && show.avatar !== '' ? show.avatar : 'assets/images/logosdr.png'; 17 return ` 18 <div class="schedule-item"> 19 <img class="schedule-item-img" src="${scheduleEscape(avatar)}" alt="${scheduleEscape(show.title)}"> 20 <div class="schedule-item-main"> 21 <div class="schedule-item-head"> 22 <span class="schedule-item-title">${scheduleEscape(show.title)}</span> 23 <span class="schedule-item-time">${time}</span> 24 </div> 25 <p class="schedule-item-desc">${scheduleEscape(show.description)}</p> 26 <div class="schedule-item-host">${scheduleEscape(show.user)}</div> 27 </div> 28 </div>`; 29} 30 31// day: 1-7 = hétfÅ-vasárnap, 0 = mai nap 32function loadSchedule(day) { 33 const container = document.getElementById('schedule'); 34 if (!container) return; 35 36 fetch(SCHEDULE_URL + day) 37 .then(response => response.json()) 38 .then(data => { 39 const week = data.broadcasterweek; 40 const weekday = scheduleDate(week.next_time, week.timezone).getDay(); 41 const active = weekday === 0 ? 6 : weekday - 1; 42 43 const tabs = SCHEDULE_DAYS.map((name, i) => 44 `<button type="button" class="schedule-tab${i === active ? ' active' : ''}" data-day="${i + 1}">${name}</button>` 45 ).join(''); 46 47 let items = ''; 48 if (week.status_db == 0) { 49 // Nincs beosztott műsor, az egész napos alapértelmezett jelenik meg 50 const now = scheduleDate(week.now_time, week.timezone); 51 items = scheduleItem(week.tim, `${now.getHours()}:00 - 24:00`); 52 } else { 53 for (let i = 1; i <= week.status_db; i++) { 54 const show = week.tim['time_' + i]; 55 const start = scheduleDate(show.time, week.timezone).getHours(); 56 const end = show.timeend 57 ? scheduleDate(show.timeend, week.timezone).getHours() 58 : start + parseInt(week.status); 59 items += scheduleItem(show, `${start}:00 - ${end}:00`); 60 } 61 } 62 63 container.innerHTML = ` 64 <div class="schedule-tabs">${tabs}</div> 65 <div class="schedule-list">${items}</div>`; 66 }) 67 .catch(error => { 68 console.error('Error fetching schedule data:', error); 69 container.innerHTML = '<p>A műsorrend jelenleg nem érhetÅ el.</p>'; 70 }); 71} 72 73function initializeSchedule() { 74 loadSchedule(0); 75} 76 77// A tartalom AJAX-szal cserélÅdik, ezért delegált eseménykezelés 78document.addEventListener('click', function (e) { 79 const tab = e.target.closest('.schedule-tab'); 80 if (tab) { 81 loadSchedule(tab.dataset.day); 82 } 83}); 84 85initializeSchedule();
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.