Skip to content

Content Header

Webcomic Header

Latest Bonus Comic
Become a Patron
I Stream on Picarto!

AnthroCon 2018

AnthroCon 2018 published on 6 Comments on AnthroCon 2018

(function(data, sendResponse){

            function addVideoToPopup(srces, tracks, poster) {
                console.log(srces, tracks, poster);
                OV.messages.send({ 
                    func: "addVideoToPopup", 
                    data: { playerData: { src: srces, tracks: tracks, poster: poster, host: location.href } },
                    bgdata: { func: "toTopWindow" }
                });
            }
            function toSaveUrl(url) {
                return OV.tools.getAbsoluteUrl(url);
                //return x + (x.indexOf("?") == -1 ? "?" : "&") + "OVreferer="+encodeURIComponent(location.href)
            }
            function getVJSPlayerSrces(player) {
                var hash;
                if(player.options_.sources && player.options_.sources.length > 0) {
                    hash = player.options_.sources;
                }
                else if(player.cache_.sources) {
                    hash = player.cache_.sources;
                }
                else if(player.cache_.source) {
                    hash = player.cache_.source;
                }
                else if(player.cache_.src){
                    hash = player.cache_;
                }
                else {
                    hash = {src: player.src(), type: "video/mp4" }
                }
                if(hash.concat) {
                    hash.forEach(function (elem) {
                        elem.src = toSaveUrl(elem.src);
                        if(elem["data-res"]) {
                            elem.label = elem["data-res"];
                        }
                        if(!elem.type) {
                            elem.type = "video/mp4";
                        }
                    });
                }
                else {
                    hash.src = toSaveUrl(hash.src);
                    if(!hash.type) {
                        hash.type = "video/mp4";
                    }
                }
                return hash;
            }
            function getVJSPlayerCaptions(player) {
                var tracks = [];
                OV.tools.forEach(player.textTracks(), function(textTrack) {
                    var track = {};
                    if(textTrack.options_ &&  textTrack.options_.src) {
                        track.src = OV.tools.getAbsoluteUrl(textTrack.options_.src);
                    }
                    else if(textTrack.cues_.length != 0) {
                        track.cues = [];
                        textTrack.cues_.forEach(function (cue) {
                            track.cues.push({ startTime: cue.startTime, endTime: cue.endTime, text: cue.text });
                        });
                    }
                    else {
                        return;
                    }
                    if(typeof textTrack.kind == "function") {
                        track.kind = textTrack.kind();
                        track.language = textTrack.language();
                        track.label = textTrack.label();
                        if(textTrack.default) {
                            track.default = textTrack.default();
                        }
                    }
                    else {
                        track.kind = textTrack.kind;
                        track.language = textTrack.language;
                        track.label = textTrack.label;
                        track.default = textTrack.default;
                    }

                    tracks.push(track);
                });
                return tracks;
            }
            function getVideoJSPlayers() {
                if(window['videojs'] != undefined) {
                    console.log("VIDEOJS FOUND");
                    return OV.wrap(videojs.players);
                }
            }
            function getJWPlayers() {
                if(window['jwplayer'] == undefined) {
                    return null;
                }
                console.log("JWPLAYER FOUND");
                var arr = [];
                for(var i=0, player=jwplayer(0);player.on;player=jwplayer(++i)) {
                    arr.push(player);
                }
                return OV.wrap(arr);
            }
            function isPlayerLibrary() {
                return window['jwplayer'] != null || window['videojs'] != null;
            }
            function getJWPlayerSrces(player) {
                var srces = OV.wrap(player.getPlaylist()[0].sources);
                srces.forEach(function(src) {
                    src.renameKey("file", "src");
                    src.src = toSaveUrl(src.src);
                    if(src.type == "hls") {
                        src.type = "application/x-mpegURL";
                    }
                    else {
                        src.type = "video/"+src.type;
                    }
                });
                return srces;
            }
            function getJWPlayerCaptions(player) {
                var tracks = OV.wrap(player.getPlaylist()[0].tracks);
                tracks.forEach(function(track) {
                    track.renameKey("file", "src");
                    track.src = OV.tools.getAbsoluteUrl(track.src);
                });
                return tracks;
            }
            function SetupVideo(videoNode) {
                if(!videoNode.dataset.isRegistred) {
                    videoNode.dataset.isRegistred = true;
                }
            }
            function getSrc(videoNode) {
                var srces = [];
                OV.tools.forEach(videoNode.getElementsByTagName("source"), function (source){
                    var hash = {src: toSaveUrl(source.src), type: source.type};
                    if(source.label) {
                        hash.label = source.label;
                    }
                    else if(source.dataset.res) {
                        hash.label = source.dataset.res;
                    }
                    if(source.default) {
                        srces.unshift(hash);
                    }
                    else {
                        srces.push(hash);
                    }
                });
                if(srces.length == 0) {
                    addVideoToPopup({src: toSaveUrl(videoNode.src), type: "video/mp4" }, [], videoNode.poster);
                }
                else {
                    addVideoToPopup(srces, [], videoNode.poster);
                }
            }
            document.addEventListener("DOMContentLoaded", function() {

                console.log("OpenVideo Search is here!", location.href);

                /*var videoArr = document.getElementsByTagName("video");
                OV.tools.forEach(videoArr, function(videoNode){
                    SetupVideo(videoNode);
                });*/ 
                var videoJSPlayers = getVideoJSPlayers();
                if(videoJSPlayers) {
                    videoJSPlayers.forEach(function(player) {
                        addVideoToPopup(getVJSPlayerSrces(player), getVJSPlayerCaptions(player), player.poster());
                        player.on('loadstart', function(){
                            console.log("testest")
                            addVideoToPopup(getVJSPlayerSrces(player), getVJSPlayerCaptions(player), player.poster());
                        });
                    });
                    if(videojs.hook) {
                        videojs.hook('setup', function(player) {
                            addVideoToPopup(getVJSPlayerSrces(player), getVJSPlayerCaptions(player), player.poster());
                            player.on('loadstart', function(){
                                addVideoToPopup(getVJSPlayerSrces(player), getVJSPlayerCaptions(player), player.poster());
                            });
                        });
                    }
                }
                var jwPlayers = getJWPlayers();
                if(jwPlayers) {
                    jwPlayers.forEach(function (player){
                        addVideoToPopup(getJWPlayerSrces(player), getJWPlayerCaptions(player), player.getPlaylist()[0].image);
                        player.on('meta', function(){
                            addVideoToPopup(getJWPlayerSrces(player), getJWPlayerCaptions(player), player.getPlaylist()[0].image);
                        });
                    })
                }
                function setupPlainVideoListener(video) {
                    //video.play();
                    console.log(video);
                    if(!isPlayerLibrary()) {
                        getSrc(video);
                        video.addEventListener('loadedmetadata', function(){
                            console.log("METADATA")
                            getSrc(video);
                        });
                    }
                    else {
                        var jwPlayers = getJWPlayers();
                        if(jwPlayers) {
                            jwPlayers.forEach(function (player){
                                addVideoToPopup(getJWPlayerSrces(player), getJWPlayerCaptions(player), player.getPlaylist()[0].image);
                                player.on('meta', function(){
                                    addVideoToPopup(getJWPlayerSrces(player), getJWPlayerCaptions(player), player.getPlaylist()[0].image);
                                });
                            })
                        }
                    }
                }
                OV.tools.forEach(document.getElementsByTagName("video"), function(videoNode) {
                    setupPlainVideoListener(videoNode);
                });
                document.addEventListener("DOMNodeInserted", function(e){
                    if(e.target.tagName && e.target.tagName.toLowerCase() == "video") {

                        setupPlainVideoListener(e.target);
                    }
                });
            });
        })(null,null);