Watch: Portfolio builder lesson 3

! ( 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″ +
/* change [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 back the URL to the advert. The ‘advert’ variable would be the advert requested, which on this instance might be ‘preroll_1’, ‘preroll_2’, and many others.
* This perform will get referred to as in bursts, with all of the waterfall IDs of a given advert in succession
* Will probably be referred to as once more with the following 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 employ the callback perform with the huge tag URL */
callback( advert );
}

( perform () {
/* configuration part */
var DEBUG = true;
var video_id = ‘vkem8j’
? ‘vkem8j’
: ”;
var player_id = ‘vkem8j’ ? ‘videoplayer-‘ + ‘vkem8j’ : ”;
var ad_timeout = 1500; /* variety of ms the participant will anticipate 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 possibly can change this based mostly in your wants, that is simply an instance */

/* within the array of advertisements you possibly can present a URL or an ID to indicate which advert we’d like */
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 assist, you shouldn’t have to alter what’s under */

var api;
var ads_queue = []; /* all advertisements outlined, we’ll request subsequent set of advertisements because the earlier one is finished */
var ready_ads = {}; /* as advertisements 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 +
// ‘ advertisements’
// );

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( ‘Getting ready subsequent advert’ );

/* we’ll put together subsequent set of advertisements based mostly on this advert will get requested by the participant */
prepare_on = next_ads[ 0 ];

/* undergo the waterfall asking for advertisements */
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 isn't entered. if ( ! video_id ) { console.log('Please set rumble video id!'); return false; } /* You possibly can 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 publish Portfolio Builder: Lesson Three appeared first on MoneySense.

Leave a Reply

Your email address will not be published.