https://www.fritz.de/programm/musikstreams/vorlagen/layout/_jcr_co…/property_0.js/v=1617789444222.js
1! function () { 2 /* Selektor für Player-Links */ 3 var LINK_CLS = 'a.startOnDemand'; 4 5 /* URL-Template zur Streambox. Enthält Variablen für Sendungsname, Tag und Uhrzeit */ 6 var STREAMBOX_URL = 'http://www.fritz.de/livestream/liveplayer_{programme}.htm/day={datetime}.html'; 7 8 /* Link zur Hilfsübersicht mit Logiken zu den jeweils aktuellen Audio-Files */ 9 var STREAMS_JSN = window.location.href.split('.de/')[0] + '.de/content/rbb/frz/hilfsteaser/musikstreams.cq5fwk.jsn.jsn?nocache'; 10 11 /* GröÃe des zu generierenden Pop-Ups */ 12 var POPUP_SIZE = '450,560'; 13 14 /* Links mit jQuery selektieren */ 15 var $links = $(LINK_CLS); 16 17 $links.click(function (e) { 18 e.preventDefault(); 19 20 /* Gewünschte Sendung über Klassennamen auslesen */ 21 var linkSettings = $(this).attr('class').split(' '); 22 23 /* Sendungsname ist das zweite Attribut */ 24 var programmeName = linkSettings[1]; 25 26 /* Der Tag ist das dritte Attribut */ 27 var dayName = linkSettings[2]; 28 29 if (programmeName && dayName) { 30 /* Wenn beide Pflicht-Attribute vorhanden sind, fortfahren */ 31 getLastProgramme(programmeName, dayName); 32 }; 33 34 return false; 35 }); 36 37 /** 38 * Findet das Datum der jeweils letzten Sendung anhand der Referenzen in der Hilfsübersicht 39 * @param {*} programmeName 40 * Name der Sendung 41 * @param {*} dayName 42 * Name des gewünschten Tages 43 */ 44 function getLastProgramme(programmeName, dayName) { 45 /* Hilfsübersicht abrufen */ 46 $.ajax({ 47 url: STREAMS_JSN, 48 async: false, 49 dataType: 'json', 50 data: {}, 51 success: function (data) { 52 /* Datenstruktur der Ãbersicht validieren und zur richtigen Position finden */ 53 if (data.middleColumnList && data.middleColumnList.teaserbox) { 54 var boxes = data.middleColumnList.teaserbox; 55 var groups = {}; 56 var boxIdx = -1; 57 var groupIdx = -1; 58 var i = 0; 59 var j = 0; 60 var dateTimeArr = []; 61 var dateStr = ''; 62 var timeStr = ''; 63 var dateTimeStr = ''; 64 65 /* Die richtige Box anhand des Sendungsnamens finden */ 66 for (i = 0; i < boxes.length; i++) { 67 if (boxes[i].boxHeadline.toLowerCase() === programmeName.toLowerCase()) { 68 // richtige Box gefunden! 69 boxIdx = i; 70 } 71 } 72 73 /* Wenn die richtige Box gefunden wurde ... */ 74 if (boxIdx >= 0 && boxes[boxIdx].teasergroup) { 75 groups = boxes[boxIdx].teasergroup; 76 77 /* ... den richtigen Gruppenteaser anhand des Tagesnamens finden */ 78 for (j = 0; j < groups.length; j++) { 79 if (groups[j].manualteaserTitle.toLowerCase() === dayName.toLowerCase()) { 80 // richtigen Gruppenteaser gefunden! 81 groupIdx = j; 82 } 83 } 84 } 85 86 /* Wenn Box und Gruppenteaser gefunden wurden und dort ein Teaser aus der Logik existiert... */ 87 if (boxIdx >= 0 && groupIdx >= 0 && groups[groupIdx].manualteaser && groups[groupIdx].manualteaser[0]) { 88 /* Neu: ... Datum und Uhrzeit über manualteaserDateTime auslesen */ 89 dateTimeArr = groups[groupIdx].manualteaser[0].manualteaserDateTime.split(' '); 90 dateStr = dateTimeArr[0].replace(/\./g, '').substr(0,4); 91 timeStr = dateTimeArr[1].replace(/\:/g, '').substr(0,4); 92 dateTimeStr = dateStr + timeStr; 93 } 94 95 openStreamBox(programmeName, dateTimeStr); 96 } 97 } 98 }); 99 } 100 101 function openStreamBox(programmeName, dateTimeStr) { 102 /* Spezifikationen anhand der definierten width und height festlegen */ 103 var specs = 'width=' + POPUP_SIZE.split(',')[0] + ', height=' + POPUP_SIZE.split(',')[1]; 104 105 /* URL für Streambox zusammenbauen */ 106 var url = STREAMBOX_URL.replace('{programme}', programmeName.toLowerCase()); 107 url = url.replace('{datetime}', dateTimeStr); 108 109 // console.log('openStreamBox', programmeName, day, progTime, url); 110 111 /* Fenster öffnen */ 112 window.open(url, '_blank', specs); 113 }; 114}();
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.