1const runWaterfall = window['@andrepolischuk/video-ad-sdk'].runWaterfall; 2let adUnit; 3let done = []; 4let x = 0; 5 6function randomString(length) { 7 const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:.-_|#+'; 8 var result = ''; 9 for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)]; 10 return result; 11} 12 13function getPrerollUrlBySlug(slug) { 14 const baseUrl = 'https://rds.deliveryengine.adswizz.com/vast/4.0/request/alias/' 15 let prerollUrl = ''; 16 if(new Date(slug)!='Invalid Date'){ 17 slug='branko'; 18 } 19 switch (slug) { 20 case 'bossa-club': 21 case 'Bossa Club': 22 prerollUrl = 'bossa-club-preroll' 23 break; 24 case '100-secondi-di-rds-con-enrico-mentana': 25 case '100 secondi di RDS con Enrico Mentana': 26 prerollUrl = 'enrico-mentana-preroll' 27 break; 28 case '100-made-in-italy': 29 case '100% Made In Italy': 30 prerollUrl = 'made-in-italy-preroll' 31 break; 32 case 'branko': 33 case 'Oroscopo di Branko': 34 prerollUrl = 'oroscopo-di-branco-preroll' 35 break; 36 case 'lifestyle': 37 prerollUrl = 'lifestyle-preroll' 38 break; 39 // case '100-secondi-di-rds-con-enrico-mentana': 40 case 'Segreti in tavola': 41 prerollUrl = 'segreti-in-tavola-preroll' 42 break; 43 default: 44 prerollUrl = 'dimensione-suono-soft-preroll' 45 break; 46 } 47 return baseUrl + prerollUrl; 48} 49 50window.requestAdRun = (adTag, mediaElement, videoAdContainer, fplayer, id, src) => { 51 let triggerEvent; 52 if (fplayer) { 53 triggerEvent = fplayer.trigger; 54 } else { 55 triggerEvent = function (name) { 56 const event = document.createEvent('Event'); 57 event.initEvent(name, true, true); 58 mediaElement.dispatchEvent(event); 59 } 60 } 61 if (id && typeof done[id] === 'undefined') { 62 done[id] = 0; 63 } else { 64 return; 65 } 66 67 if (!src) { 68 src = mediaElement.src; 69 } 70 let paramsString = ''; 71 let params = {}; 72 // params['listenerId'] = '5b95683f142900ff7758a318b17314c1'; 73 params['listenerId'] = window.com_adswizz_synchro_listenerid || randomString(32); 74 params['sessionId'] = randomString(32); 75 paramsString += '?' + jQuery.param(params); 76 adTag += paramsString; 77 const resumeContent = () => { 78 mediaElement.play(); 79 80 mediaElement.removeEventListener('contentloadedmetadata', resumeContent); 81 mediaElement.removeEventListener('canplay', resumeContent); 82 }; 83 const onError = (evt) => { 84 console.log('### onError', evt); 85 triggerEvent('ima_ad_error'); 86 }; 87 const onAdReady = (newAdUnit) => { 88 adUnit = newAdUnit; 89 console.log('### onAdReady', adUnit); 90 triggerEvent('ima_ad_loaded'); 91 92 const evtHandler = (evt) => console.log(`### ${evt.type}`, evt.adUnit); 93 94 [ 95 'pause', 96 'resume', 97 'finish', 98 'impression', 99 'start', 100 'skip', 101 'firstQuartile', 102 'midpoint', 103 'thirdQuartile', 104 'complete' 105 ].forEach((evtType) => { 106 adUnit.on(evtType, evtHandler); 107 }); 108 adUnit.on('resume', (e) => { 109 triggerEvent('ima_ad_started'); 110 done[id]++; 111 }); 112 adUnit.on('skip', () => { 113 triggerEvent('ima_ad_skipped'); 114 }); 115 }; 116 const onRunFinish = (evt) => { 117 console.log('### onRunFinish', evt); 118 videoAdContainer.classList.remove('active'); 119 triggerEvent('ima_ad_complete'); 120 if (mediaElement.src === src) { 121 mediaElement.play(); 122 } else { 123 mediaElement.addEventListener('contentloadedmetadata', resumeContent); 124 mediaElement.addEventListener('canplay', resumeContent); 125 if (fplayer) { 126 fplayer.load(src); 127 } else { 128 mediaElement.src = src; 129 } 130 131 } 132 }; 133 134 videoAdContainer.classList.add('active'); 135 mediaElement.pause(); 136 mediaElement.currentTime = 0; 137 138 console.log('### adTag', adTag); 139 140 runWaterfall(adTag, videoAdContainer, { 141 onAdReady, 142 onError, 143 onRunFinish, 144 timeout: 15000, 145 videoElement: mediaElement 146 }); 147}; 148 149window.onBeforePlayAmplitude = function () { 150 console.log('before_play'); 151 const amplitudeIdx = Amplitude.getActiveIndex(); 152 let amplitudeElement = jQuery(`div[amplitude-song-index=${amplitudeIdx}]`); 153 let page = location.pathname.split('/').reverse().find(i => i != ''); 154 let isNews = location.pathname.split('/').find(i => i != '')=='news'; 155 if(amplitudeElement.closest('.brano').length) { 156 return; 157 } 158 let urlAudioPreroll; 159 if(isNews){
160 let category = amplitudeElement.closest('.container').find('.title').text(); 161 urlAudioPreroll = getPrerollUrlBySlug(category); 162 }else if (page) { 163 urlAudioPreroll = getPrerollUrlBySlug(page); 164 amplitudeElement = jQuery(`div[amplitude-song-index=${amplitudeIdx}]`); 165 } else { 166 try { 167 let category = amplitudeElement.closest('.objPodcast').find('.titolo h4').text(); 168 if(!category){ 169 category = amplitudeElement.closest('.containerInterna').find('.title').text() 170 }else if (!category && amplitudeElement.closest('.slick-slide').length) { 171 category = 'branko'; 172 } 173 urlAudioPreroll = getPrerollUrlBySlug(category); 174 } catch (error) { 175 console.warn(error); 176 } 177 } 178 if (!urlAudioPreroll) { 179 return; 180 } 181 const audio = Amplitude.audio(); 182 const audioContainer = jQuery('<div style="display:none;"></div>'); 183 audioContainer.append(audio); 184 jQuery('body').append(audioContainer); 185 const adCont = jQuery('<div class="rds-ad-container"></div>')[0]; 186 jQuery(audioContainer).append(adCont); 187 let audioElement = audio; 188 requestAdRun(urlAudioPreroll, audioElement, adCont, null, 'AmplitudeAudio', null); 189 const playButton = amplitudeElement.find('.playBtn'); 190 const loader = amplitudeElement.find('.loader'); 191 const videoButton = jQuery(document.querySelectorAll(".fancybox\\.iframe")); 192 const buttonsToBlock = jQuery('.livePlay, .livePlay *, .listenLive, .playBtn, .fancybox.iframe, .fluxChange'); 193 jQuery(audio).on("ima_ad_loaded", function (e, api, ad) { 194 console.log("Amplitude ima_ad_loaded"); 195 playButton.hide(); 196 loader.removeClass('hidden'); 197 prerollRunning = true; 198 buttonsToBlock.css("pointer-events", "none"); 199 buttonsToBlock.css('opacity', '0.6'); 200 videoButton.css("pointer-events", "none"); 201 videoButton.css('opacity', '0.6'); 202 }).on("ima_ad_started", function (e, api, ad) { 203 console.log("Amplitude ima_ad_started"); 204 playButton.hide(); 205 loader.removeClass('hidden'); 206 prerollRunning = true; 207 buttonsToBlock.css("pointer-events", "none"); 208 buttonsToBlock.css('opacity', '0.6'); 209 videoButton.css("pointer-events", "none"); 210 videoButton.css('opacity', '0.6'); 211 }).on("ima_ad_skipped", function (e, api, ad) { 212 loader.addClass('hidden'); 213 playButton.show(); 214 prerollRunning = false; 215 buttonsToBlock.css("pointer-events", "auto"); 216 buttonsToBlock.css('opacity', '1'); 217 videoButton.css("pointer-events", "auto"); 218 videoButton.css('opacity', '1'); 219 }).on("ima_ad_complete", function (e, api, ad) { 220 console.log("Amplitude ima_ad_complete"); 221 loader.addClass('hidden'); 222 playButton.show(); 223 prerollRunning = false; 224 buttonsToBlock.css("pointer-events", "auto"); 225 buttonsToBlock.css('opacity', '1'); 226 videoButton.css("pointer-events", "auto"); 227 videoButton.css('opacity', '1'); 228 }).on("ima_ad_error", function (e) { 229 console.log("Amplitude ima_ad_error"); 230 loader.addClass('hidden'); 231 playButton.show(); 232 prerollRunning = false; 233 buttonsToBlock.css("pointer-events", "auto"); 234 buttonsToBlock.css('opacity', '1'); 235 videoButton.css("pointer-events", "auto"); 236 videoButton.css('opacity', '1'); 237 }) 238} 239
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.