let socket = io();
(() => {
console.log('Starting up');
})();
socket.on('path', async (data) => {
document.getElementById('saveloc').innerText = data;
});
let isDownloading = false;
let VideosToDownload = {};
document.getElementById('VideosToRecord').addEventListener('keyup', (e) => {
if (isDownloading) return;
let current = document.getElementById('VideosToRecord').value;
VideosToDownload = current.split('\n');
let payload = {
ExpectPreview: true,
VideosToDownload: VideosToDownload
};
socket.emit('video-list', payload);
});
let VideoPreview = [];
function renderPreview() {
if (isDownloading) return;
document.getElementById('VideoBox').innerText = '';
for (const [key, value] of Object.entries(VideoPreview)) {
if (document.getElementById(key) == null) {
if (!value.found) {
document.getElementById('VideoBox').innerHTML += `
${key}: Video not found
`;
} else {
document.getElementById('VideoBox').innerHTML += `${key}: ${value.title}
`;
}
}
}
}
function clearPreview() {
document.getElementById('VideoBox').innerText = '';
}
socket.on('video-preview', async (data) => {
if (isDownloading) return;
if (!data || !data.data || data.contents == false) {
clearPreview();
return;
}
VideoPreview = data.data;
renderPreview();
});
document.getElementById('Download').addEventListener('click', async (event) => {
if (isDownloading) return;
socket.emit('download', {
videos: document.getElementById('VideosToRecord').value.split('\n'),
audioOnly: document.getElementById('AudioOnly').checked
});
document.getElementById('VideoBox').innerText = 'Downloading...';
// document.getElementById('VideosToRecord').value = null;
isDownloading = true;
console.log('Asked server for download...');
});
let downloads = [];
let downloadCount = 0;
let completedDownloads = 0;
function renderDownloads() {
document.getElementById('VideoBox').innerText = '';
for (const [key, value] of Object.entries(downloads)) {
document.getElementById('VideoBox').innerHTML += `${value.title}: ${value.percent}
`;
}
}
socket.on('download-count', async (data) => {
downloadCount = data.num;
});
socket.on('download-done', async(data) => {
downloads[data.video] = {title: data.title, percent: 'Complete!'};
renderDownloads();
});
socket.on('download-progress', async (data) => {
downloads[data.video] = data;
renderDownloads();
});
socket.on('queue-concluded', async (data) => {
completedDownloads = 0; downloadCount = 0;
isDownloading = false;
downloads = [];
document.getElementById('VideoBox').innerHTML += "Queue Concluded...";
});