diff --git a/videoskip.html b/videoskip.html index fd30f83..3afdac5 100644 --- a/videoskip.html +++ b/videoskip.html @@ -389,19 +389,20 @@

Instructions

if (isError) { return } - - var fileURL = URL.createObjectURL(file) - videoNode.src = fileURL; - ready(function(){ - cuts = PF_SRT.parse(skipBox.value); - setActions(); - makeTimeLabels() - }) + loadVideoURL(URL.createObjectURL(file)); } - var inputNode = document.querySelector('input') + var inputNode = document.getElementById('videoFile') inputNode.addEventListener('change', playSelectedFile, false) })(); +function loadVideoURL(url){ + var videoNode = document.querySelector('video') + videoNode.src = url; + cuts = PF_SRT.parse(skipBox.value); + setActions(); + makeTimeLabels() +} + var displayMessage = function (message, isError) { var element = document.querySelector('#videoMsg') element.innerHTML = message @@ -430,32 +431,47 @@

Instructions

} //loads the skip file -function loadFileAsURL(){ +function loadSkipsFromFile(){ var fileToLoad = skipFile.files[0], fileReader = new FileReader(); fileReader.onload = function(fileLoadedEvent){ - var URLFromFileLoaded = fileLoadedEvent.target.result; var extension = fileToLoad.name.slice(-4); if(extension == ".skp"){ - var data = URLFromFileLoaded.split('data:image/jpeg;base64,'); //separate skips and offsets from screenshot - var data1 = data[0].split('{'); //separate skips from offsets - name = fileToLoad.name.slice(0,-4).replace(/ \[[a-z0-9\-]*\]/,''); //remove extension and service list - skipBox.value = data1[0].trim(); - if(data1[1]) offsets = JSON.parse('{' + data1[1].trim()); //make offsets object - if(data[1]) screenShot.src = 'data:image/jpeg;base64,' + data[1] //extract screenshot + loadSkipsData(fileLoadedEvent.target.result); }else{ boxMsg.textContent = "wrong file type" } boxMsg.textContent = 'This is the content of file: ' + fileToLoad.name; - ready(function(){ - cuts = PF_SRT.parse(skipBox.value); - setSliders(); - applyOffset() //this includes setActions at the end - }) }; fileReader.readAsText(fileToLoad) } +function loadSkipsFromURL(url){ + fetch(url) + .then(response => response.text()) + .then(loadSkipsData) + .catch(error => { + alert(`Failed to load skips from ${url}: "${error}"`); + }); +} + +function loadSkipsData(skips_data){ + var data, screenshot; + [data, screenshot] = skips_data.split('data:image/jpeg;base64,'); //separate skips and offsets from screenshot + var skips, offsets_json; + [skips, offsets_json] = data.split('{'); //separate skips from offsets + skipBox.value = skips.trim(); + if(offsets) offsets = JSON.parse('{' + offsets_json.trim()); //make offsets object + if(screenshot){ + screenShot.src = 'data:image/jpeg;base64,' + screenshot; //extract screenshot + } else { + screenShot.src = ''; //clear any previous screenshot + } + cuts = PF_SRT.parse(skipBox.value); + setSliders(); + applyOffset() //this includes setActions at the end +} + //similar, for loading subtitles; includes option to generate skips for profanity function loadSubs(){ var fileToLoad = subFile.files[0], @@ -1364,7 +1380,7 @@

Instructions

filters.addEventListener('change', setActions); -skipFile.addEventListener('change', loadFileAsURL); +skipFile.addEventListener('change', loadSkipsFromFile); /* //loads other websites from a select option list function loadPage(){ @@ -1508,6 +1524,20 @@

Instructions

dragElement(screenShot); blurBox.style.display = 'none' + +ready(function(){ + // Automatically load the video and skips files from the URL parameters if + // they were provided. + const params = new URLSearchParams(window.location.search); + const video = params.get("video"); + if (video !== null ) { + loadVideoURL(video); + } + const skips = params.get("skips"); + if (skips !== null ) { + loadSkipsFromURL(skips); + } +}); - \ No newline at end of file +