Způsobí rozmach genAI energetickou krizi?
- by Computerworld
- Sep 26, 2024
- 0 Comments
- 0 Likes Flag 0 Of 5
`
thumbWrap += `
`;
youtubeIframe.after(document.createRange().createContextualFragment(thumbWrap));
youtubeIframe.style.display = 'none';
const youtubeThumb = document.getElementById('ytPrerollThumb')
let prerollAdInitialized = false;
document.addEventListener('DOMContentLoaded', handleInitScroll, false);
window.addEventListener('scroll', handleInitScroll, false);
function handleInitScroll() {
if (prerollAdInitialized === false) {
const containerOffset = document.getElementById('ytPrerollThumb').getBoundingClientRect();
const windowHeight = window.innerHeight;
if (containerOffset.top 0.0) {
prerollAdInitialized = true;
console.log('Preroll: INIT');
setTimeout(() => {
youtubeThumb.remove();
playPrerollAd();
}, 2000);
document.removeEventListener('DOMContentLoaded', handleInitScroll, false);
window.removeEventListener('scroll', handleInitScroll, false);
}
}
}
}
let adsManager;
let adsLoader;
let adDisplayContainer;
let iinfoPrerollPosition;
let iinfoVastUrlIndex = 0;
let iinfoVastUrlIndexMuted = 0;
let prerollCurrent = 0;
let adVolume = 0;
let prerollWidth = 480;
let prerollHeight = 320;
let prerollDocument;
let videoContent;
let prerollLastError = 303;
let prerollContainer;
let prerollPaused = false;
function playPrerollAd() {
youtubeIframe.after(document.createRange().createContextualFragment(videoEl));
iinfoPrerollPosition = document.getElementById('iinfoPrerollPosition');
document.getElementById('preroll-iframe').srcdoc = '
';
document.getElementById('preroll-iframe').onload = function () {
setupIframe();
}
prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0];
}
function setupIframe() {
prerollDocument = document.getElementById('preroll-iframe').contentWindow.document;
let el = prerollDocument.createElement('style');
prerollDocument.head.appendChild(el);
el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}";
videoContent = prerollDocument.getElementById('contentElement');
videoContent.style.display = 'none';
videoContent.volume = 1;
videoContent.muted = false;
const playPromise = videoContent.play();
if (playPromise !== undefined) {
playPromise.then(function () {
console.log('PREROLL sound allowed');
// setUpIMA(true);
videoContent.volume = 0;
videoContent.muted = true;
setUpIMA(false);
}).catch(function () {
console.log('PREROLL sound forbidden');
videoContent.volume = 0;
videoContent.muted = true;
setUpIMA(false);
});
}
}
function setupDimensions() {
prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480);
prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320);
}
function setUpIMA(sound) {
google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true);
google.ima.settings.setLocale('cs');
google.ima.settings.setNumRedirects(10);
// Create the ad display container.
createAdDisplayContainer();
// Create ads loader.
adsLoader = new google.ima.AdsLoader(adDisplayContainer);
// Listen and respond to ads loaded and error events.
adsLoader.addEventListener(
google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,
onAdsManagerLoaded, false);
adsLoader.addEventListener(
google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false);
// An event listener to tell the SDK that our content video
// is completed so the SDK can play any post-roll ads.
const contentEndedListener = function () {
adsLoader.contentComplete();
};
videoContent.onended = contentEndedListener;
// Request video ads.
const adsRequest = new google.ima.AdsRequest();
/*adsRequest.adTagUrl = 'https://pubads.g.doubleclick.net/gampad/ads?' +
'iu=/21775744923/external/single_preroll_skippable&sz=640x480&' +
'ciu_szs=300x250%2C728x90&gdfp_req=1&' +
'output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=';*/
adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex];
if (sound) {
adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex];
console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]);
prerollCurrent = 0;
videoContent.muted = false;
videoContent.volume = 1;
} else {
adsRequest.adTagUrl = iinfoVastUrlsMuted[iinfoVastUrlIndexMuted];
console.log('Preroll advert: ' + iinfoVastUrlsMuted[iinfoVastUrlIndexMuted]);
prerollCurrent = 1;
videoContent.muted = true;
videoContent.volume = 0;
}
// Specify the linear and nonlinear slot sizes. This helps the SDK to
// select the correct creative if multiple are returned.
// adsRequest.linearAdSlotWidth = prerollWidth;
// adsRequest.linearAdSlotHeight = prerollHeight;
adsRequest.nonLinearAdSlotWidth = 0;
adsRequest.nonLinearAdSlotHeight = 0;
adsLoader.requestAds(adsRequest);
}
function createAdDisplayContainer() {
// We assume the adContainer is the DOM id of the element that will house
// the ads.
prerollDocument.getElementById('videoContent').style.display = 'none';
adDisplayContainer = new google.ima.AdDisplayContainer(
prerollDocument.getElementById('adContainer'), videoContent);
}
function unmutePrerollAdvert() {
adVolume = !adVolume;
if (adVolume) {
adsManager.setVolume(0.3);
prerollDocument.getElementById('adMuteBtn').innerHTML = '
';
} else {
adsManager.setVolume(0);
prerollDocument.getElementById('adMuteBtn').innerHTML = '
';
}
}
function onAdsManagerLoaded(adsManagerLoadedEvent) {
// Get the ads manager.
const adsRenderingSettings = new google.ima.AdsRenderingSettings();
adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true;
adsRenderingSettings.loadVideoTimeout = 12000;
// videoContent should be set to the content video element.
adsManager =
adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings);
// Add listeners to the required events.
adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError);
adsManager.addEventListener(
google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested);
adsManager.addEventListener(
google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,
onContentResumeRequested);
adsManager.addEventListener(
google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent);
// Listen to any additional events, if necessary.
adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent);
adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent);
adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent);
playAds();
}
function playAds() {
// Initialize the container. Must be done through a user action on mobile
// devices.
videoContent.load();
adDisplayContainer.initialize();
// setupDimensions();
try {
// Initialize the ads manager. Ad rules playlist will start at this time.
adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL);
// Call play to start showing the ad. Single video and overlay ads will
// start at this time; the call will be ignored for ad rules.
adsManager.start();
// window.addEventListener('resize', function (event) {
// if (adsManager) {
// setupDimensions();
// adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL);
// }
// });
} catch (adError) {
// An error may be thrown if there was a problem with the VAST response.
// videoContent.play();
}
}
function onAdEvent(adEvent) {
const ad = adEvent.getAd();
console.log('Preroll event: ' + adEvent.type);
switch (adEvent.type) {
case google.ima.AdEvent.Type.LOADED:
if (!ad.isLinear()) {
videoContent.play();
}
prerollDocument.getElementById('adContainer').style.width = '100%';
prerollDocument.getElementById('adContainer').style.maxWidth = '640px';
prerollDocument.getElementById('adContainer').style.height = '360px';
break;
case google.ima.AdEvent.Type.STARTED:
window.addEventListener('scroll', onActiveView);
if (ad.isLinear()) {
intervalTimer = setInterval(
function () {
// Example: const remainingTime = adsManager.getRemainingTime();
// adsManager.pause();
},
300); // every 300ms
}
prerollDocument.getElementById('adMuteBtn').style.display = 'block';
break;
case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:
if (ad.isLinear()) {
clearInterval(intervalTimer);
}
if (prerollLastError === 303) {
playYtVideo();
}
break;
case google.ima.AdEvent.Type.COMPLETE:
if (ad.isLinear()) {
clearInterval(intervalTimer);
}
playYtVideo();
break;
}
}
function onAdError(adErrorEvent) {
console.log(adErrorEvent.getError());
prerollLastError = adErrorEvent.getError().getErrorCode();
if (!loadNext()) {
playYtVideo();
}
}
function loadNext() {
if (prerollCurrent === 0) {
iinfoVastUrlIndex++;
if (iinfoVastUrlIndex 0.0) {
if (prerollPaused) {
adsManager.resume();
prerollPaused = false;
}
return true;
} else {
if (!prerollPaused) {
adsManager.pause();
prerollPaused = true;
}
}
}
return false;
}
function playYtVideo() {
iinfoPrerollPosition.remove();
youtubeIframe.style.display = 'block';
youtubeIframe.src += '&autoplay=1&mute=1';
}
}
Mohlo by vás zajÃmat
Please first to comment
Related Post
Stay Connected
Tweets by elonmuskTo get the latest tweets please make sure you are logged in on X on this browser.
Sponsored
Popular Post
Middle-Aged Dentist Bought a Tesla Cybertruck, Now He Gets All the Attention He Wanted
32 ViewsNov 23 ,2024
Tesla: Buy This Dip, Energy Growth And Margin Recovery Are Vastly Underappreciated
28 ViewsJul 29 ,2024