PageSourceSearch

https://www.fritz.de/programm/musikstreams/vorlagen/layout/_jcr_co…/property_0.js/v=1617789444222.js

js fritz.de collected 2026-10-02 07:34:26 UTC 4,740 bytes, 114 lines download raw bytes

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.