Watch: Portfolio builder lesson 5
! ( perform ( r, u, m, b, l, e ) {
( r._Rumble = b ),
r[ b ] ||
( r[ b ] = perform () {
( r[ b ]._ = r[ b ]._ || [] ).push( arguments );
if ( r[ b ]._.size == 1 ) {
( l = u.createElement( m ) ),
( e = u.getElementsByTagName( m )[ 0 ] ),
( l.async = 1 ),
( l.src=”https://rumble.com/embedJS/ulkdw1″ +
/* exchange [PUBID] */ ( arguments[ 1 ].video
? ‘.’ + arguments[ 1 ].video
: ” ) +
‘/?url=” +
encodeURIComponent( location.href ) +
“&args=” +
encodeURIComponent(
JSON.stringify( [].slice.apply( arguments ) )
) ),
e.parentNode.insertBefore( l, e );
}
} );
} )( window, doc, “script’, ‘Rumble’ );
/* On this perform you come the URL to the advert. The ‘advert’ variable would be the advert requested, which on this instance could be ‘preroll_1’, ‘preroll_2’, and many others.
* This perform will get known as in bursts, with all of the waterfall IDs of a given advert in succession
* It will likely be known as once more with the subsequent advert unit 5 seconds after the primary waterfall advert is required by the participant within the present advert
*/
perform request_ad( advert, callback ) {
// console.log( ‘put together advert ‘ + advert );
/* when advert is prepared you utilize the callback perform with the huge tag URL */
callback( advert );
}
( perform () {
/* configuration part */
var DEBUG = true;
var video_id = ‘vkemar’
? ‘vkemar’
: ”;
var player_id = ‘vkemar’ ? ‘videoplayer-‘ + ‘vkemar’ : ”;
var ad_timeout = 1500; /* variety of ms the participant will await an advert, not the identical as prebid timeout */
var player_div = doc.getElementById( player_id );
var autoplay_control=”2″;
var mute_control=””;
var setup_ads = perform () {
/* arrange advert factors for every new video, you may change this primarily based in your wants, that is simply an instance */
/* within the array of adverts you may present a URL or an ID to suggest which advert we want */
insert_ad( 0, [
‘https://pubads.g.doubleclick.net/gampad/ads?iu=/57452754/Rumble_Video&description_url=http%3A%2F%2Fmoneysense.ca&tfcd=0&npa=0&sz=400×300%7C640x480&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=”,
] );
// insert_ad( “25%’, [ ‘midroll_25_1’ ] );
// if ( player_div.clientWidth > 600 ) {
// insert_ad( ‘50%’, [ ‘midroll_50_big_1’, ‘midroll_50_big_2’ ] );
// } else {
// insert_ad( ‘50%’, [ ‘midroll_50_1’ ] );
// }
};
/* Don’t change under: code implementing prebid help, you shouldn’t have to vary what’s under */
var api;
var ads_queue = []; /* all adverts outlined, we’ll request subsequent set of adverts because the earlier one is finished */
var ready_ads = {}; /* as adverts turn into prepared, we’ll populate this for the participant to make use of */
var prepare_on;
var loaded_new_video = perform () {
if ( DEBUG )
// console.log( ‘Organising advert cuepoints’ );
ready_ads = {};
ads_queue = [];
api.clearAds();
setup_ads();
prepare_next_ads();
};
var insert_ad = perform ( timecode, waterfall ) {
// if ( DEBUG )
// console.log(
// ‘insert_ad timecode: ‘ +
// timecode +
// ‘ , waterfall: ‘ +
// waterfall.size +
// ‘ adverts’
// );
ads_queue.push( waterfall );
api.insertAd( timecode, waterfall );
};
var ads_request = perform ( advert ) {
var id = advert.url;
var timeout;
// if ( DEBUG ) console.log( ‘participant is prepared for: ‘ + id );
if ( prepare_on && prepare_on == id ) {
prepare_on = false;
setTimeout( perform () {
prepare_next_ads();
}, 5000 );
}
if ( typeof ready_ads[ id ] == ‘string’ ) {
/* advert is prepared, let the participant use it */
return ready_ads[ id ];
}
ready_ads[ id ] = perform ( url ) {
if ( timeout ) {
clearTimeout( timeout );
timeout = 0;
}
advert.callback( url );
ready_ads[ id ] = true;
};
timeout = setTimeout( perform () {
// if ( DEBUG ) console.log( ‘Advert : ‘ + id + ‘ has timed out’ );
ready_ads[ id ] = true;
advert.callback( false );
}, ad_timeout );
/* ask the participant to attend */
return true;
};
var prepare_next_ads = perform () {
if ( ads_queue.size == 0 ) return;
var next_ads = ads_queue.shift();
// if ( DEBUG ) console.log( ‘Making ready subsequent advert’ );
/* we’ll put together subsequent set of adverts primarily based on this advert will get requested by the participant */
prepare_on = next_ads[ 0 ];
/* undergo the waterfall asking for adverts */
for ( i = 0; i < next_ads.size; i++ ) {
simple_request_ad( next_ads[ i ] );
}
};
var simple_request_ad = perform ( id ) {
request_ad( id, perform ( url ) {
ad_ready( id, url );
} );
};
var ad_ready = perform ( id, url ) {
if ( typeof ready_ads[ id ] == 'perform' ) {
/* seems just like the participant is already ready for an advert */
ready_ads[ id ]( url.md );
} else if ( ready_ads[ id ] ) {
/* already an advert outlined with that id, or the participant timed out on it */
return;
}
/* have it prepared for the participant when its wanted */
ready_ads[ id ] = url;
};
// Not load something if video id just isn't entered.
if ( ! video_id ) {
console.log('Please set rumble video id!');
return false;
}
/* You'll be able to configure the participant as you see match, simply go away the player_id and api strains intact */
if ( autoplay_control ) {
Rumble( 'play', {
video: video_id,
div: player_id,
autoplay: '2',
api: perform ( api_object ) {
/* the next four strains are required and shouldn't be modified */
api = api_object;
if ( ! mute_control ) {
api.mute();
} else {
api.unmute();
}
api.on( 'loadVideo', loaded_new_video );
api.on( 'adRequest', ads_request );
loaded_new_video();
},
} );
} else {
Rumble( 'play', {
video: video_id,
div: player_id,
api: perform ( api_object ) {
/* the next four strains are required and shouldn't be modified */
api = api_object;
if ( ! mute_control ) {
api.mute();
} else {
api.unmute();
}
api.on( 'loadVideo', loaded_new_video );
api.on( 'adRequest', ads_request );
loaded_new_video();
},
} );
}
} )();
The submit Portfolio Builder: Lesson 5 appeared first on MoneySense.