$(document).ready(function(){
var downloadFile = function(remoteLink,onProgress,onSuccess){
if(!onProgress)onProgress = function(){}
if(!onSuccess)onSuccess = function(){}
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = (evt.loaded / evt.total * 100).toFixed(2);
onProgress(percentComplete)
}
}, false)
xhr.addEventListener('readystatechange', function(e) {
if(xhr.readyState == 2 && xhr.status == 200) {
// Download is being started
}
else if(xhr.readyState == 3) {
// Download is under progress
}
else if(xhr.readyState == 4) {
onSuccess(xhr.response)
// Downloaing has finished
// request.response holds the file data
}
})
xhr.responseType = 'blob'
// Downloading a JPEG file
xhr.open('get', remoteLink)
xhr.send()
}
var downloadBulkVideos = function(videos,onProgress,onSuccess){
var fileBuffers = {}
var numberOfCompletedDownloads = 0
var getVideo = function(video){
var url = video.href
downloadFile(url,function(percent){
if(onProgress)onProgress(video,percent)
},function(buffer){
++numberOfCompletedDownloads
fileBuffers[url] = Object.assign(video,{buffer: buffer})
console.log(fileBuffers[url] )
console.log(videos.length, numberOfCompletedDownloads)
if(videos.length === numberOfCompletedDownloads){
if(onSuccess)onSuccess(fileBuffers)
}else{
getVideo(videos[numberOfCompletedDownloads])
}
})
}
getVideo(videos[numberOfCompletedDownloads])
}
var saveFile = function(blob, filename) {
console.log(blob,filename)
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
const a = document.createElement('a');
document.body.appendChild(a);
const url = window.URL.createObjectURL(blob);
a.href = url;
a.download = filename;
a.click();
setTimeout(() => {
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
}, 0)
}
}
var zipVideosAndDownload = function(videos,onSuccess){
var zip = new JSZip();
var zipFileName = `ShinobiVideos_${$.ccio.timeObject(new Date()).format('YYYY-MM-DDTHH-mm-ss')}.zip`
var foldersCreated = {}
var downloadBars = {}
var progressBarHtml = []
var videosCopy = Object.assign(videos,{})
$.each(videosCopy,function(n,video){
var fileZipName = `${$.ccio.timeObject(video.time).format('YYYY-MM-DDTHH-mm-ss')}.${video.ext}`
var fileId = video.ke + video.mid + moment(video.time).format('YYYY-MM-DDTHH-mm-ss')
video.fileId = fileId
video.fileZipName = fileZipName
if(!foldersCreated[video.ke]){
foldersCreated[video.ke] = {}
foldersCreated[video.ke]._zipFolder = zip.folder(video.ke)
}
if(!foldersCreated[video.ke][video.mid]){
foldersCreated[video.ke][video.mid] = {}
foldersCreated[video.ke][video.mid]._zipFolder = foldersCreated[video.ke]._zipFolder.folder(video.mid)
}
progressBarHtml.push(`