103 lines
2.8 KiB
JavaScript
103 lines
2.8 KiB
JavaScript
|
// Created by xander on 6/21/2021
|
||
|
import videojs from 'video.js';
|
||
|
import 'videojs-ima';
|
||
|
const VERSION = '0.0.1';
|
||
|
|
||
|
const macroUrl =
|
||
|
'https://vast.aniview.com/api/adserver61/vast/?AV_PUBLISHERID=60afcbc58cfdb065440d2426&AV_CHANNELID=60b354389c7adb506d0bd9a4&AV_URL=[URL_MACRO]&cb=[TIMESTAMP_MACRO]&AV_WIDTH=[WIDTH_MACRO]&AV_HEIGHT=[HEIGHT_MACRO]&AV_SCHAIN=[SCHAIN_MACRO]&AV_CCPA=[CCPA_MACRO]&AV_GDPR=[GDPR_MACRO]&AV_CONSENT=[CONSENT_MACRO]&skip=true&skiptimer=5&usevslot=true&hidecontrols=false';
|
||
|
|
||
|
const defaults = {
|
||
|
adTagUrl: macroUrl,
|
||
|
debug: false,
|
||
|
};
|
||
|
|
||
|
const Component = videojs.getComponent('Component');
|
||
|
const registerPlugin = videojs.registerPlugin || videojs.plugin;
|
||
|
|
||
|
class AniviewPlugin extends Component {
|
||
|
constructor(player, options) {
|
||
|
super(player, options);
|
||
|
|
||
|
// Plugin started
|
||
|
if (options.debug) {
|
||
|
this.log(`Created aniview plugin.`);
|
||
|
}
|
||
|
|
||
|
// To help with debugging, we'll add a global vjs object with the video js player
|
||
|
window.aniview = player;
|
||
|
|
||
|
this.player = player;
|
||
|
|
||
|
const google = window.google;
|
||
|
|
||
|
player.ima({
|
||
|
// adTagUrl: macroUrl,
|
||
|
id: 'ad_content_video',
|
||
|
vpaidMode: google.ima.ImaSdkSettings.VpaidMode.INSECURE,
|
||
|
adTagUrl:
|
||
|
'https://vast.aniview.com/api/adserver61/vast/?AV_PUBLISHERID=60afcbc58cfdb065440d2426&AV_CHANNELID=60b354389c7adb506d0bd9a4',
|
||
|
});
|
||
|
|
||
|
// this.player.ads();
|
||
|
// const serverUrl = this.player.ads.adMacroReplacement(macroUrl);
|
||
|
// this.log(serverUrl);
|
||
|
|
||
|
// request ads whenever there's new video content
|
||
|
player.on('contentchanged', () => {
|
||
|
// in a real plugin, you might fetch your ad inventory here
|
||
|
player.trigger('adsready');
|
||
|
});
|
||
|
|
||
|
// Plugin event listeners
|
||
|
player.on('readyforpreroll', (event) => this.onReadyForPreroll(event));
|
||
|
}
|
||
|
|
||
|
onReadyForPreroll(event) {
|
||
|
this.player.ads.startLinearAdMode();
|
||
|
|
||
|
// play your linear ad content
|
||
|
// in this example, we use a static mp4
|
||
|
this.player.src('kitteh.mp4');
|
||
|
|
||
|
// send event when ad is playing to remove loading spinner
|
||
|
this.player.one('adplaying', () => {
|
||
|
this.player.trigger('ads-ad-started');
|
||
|
});
|
||
|
|
||
|
// resume content when all your linear ads have finished
|
||
|
this.player.one('adended', () => {
|
||
|
this.player.ads.endLinearAdMode();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
log(...args) {
|
||
|
if (this.options_.debug) {
|
||
|
console.log(`Aniview Debug:`, JSON.stringify(args));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
videojs.registerComponent('recsys', AniviewPlugin);
|
||
|
|
||
|
const onPlayerReady = (player, options) => {
|
||
|
player.aniview = new AniviewPlugin(player, options);
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Initialize the plugin.
|
||
|
*
|
||
|
* @function plugin
|
||
|
* @param {Object} [options={}]
|
||
|
*/
|
||
|
const plugin = function (options) {
|
||
|
this.ready(() => {
|
||
|
onPlayerReady(this, videojs.mergeOptions(defaults, options));
|
||
|
});
|
||
|
};
|
||
|
|
||
|
plugin.VERSION = VERSION;
|
||
|
|
||
|
registerPlugin('aniview', plugin);
|
||
|
|
||
|
export default plugin;
|