147 lines
4.3 KiB
JavaScript
147 lines
4.3 KiB
JavaScript
|
|
const urlField = document.getElementById('download_text_box');
|
|
|
|
const downloadBtn = document.getElementById('download_button');
|
|
|
|
const dlType = document.getElementById('selector');
|
|
|
|
const res = document.getElementById('res_selector');
|
|
|
|
const video_url = document.getElementById('video_link');
|
|
|
|
|
|
const channel_url = document.getElementById('channel_link');
|
|
|
|
|
|
const my_date = document.getElementById('date');
|
|
|
|
const size_len = document.getElementById('size_len');
|
|
|
|
const myViews = document.getElementById('views');
|
|
const myKeywords = document.getElementById('keywords');
|
|
const myDescription = document.getElementById('description');
|
|
const myProgress = document.getElementById('progress_bar');
|
|
const myProgressVal = document.getElementById('progress_value');
|
|
function sec2time(given_seconds){
|
|
var dateObj = new Date(parseInt(given_seconds) * 1000);
|
|
hours = dateObj.getUTCHours();
|
|
minutes = dateObj.getUTCMinutes();
|
|
seconds = dateObj.getSeconds();
|
|
|
|
return hours.toString().padStart(2, '0')
|
|
+ ':' + minutes.toString().padStart(2, '0')
|
|
+ ':' + seconds.toString().padStart(2, '0');
|
|
|
|
}
|
|
function progress2page()
|
|
{
|
|
var xmlhttp = new XMLHttpRequest();
|
|
|
|
|
|
xmlhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && this.status == 200) {
|
|
var myData = JSON.parse(this.responseText);
|
|
var progressStr=myData.Progress.toString() + '%';
|
|
var progressData = myData.Progress;
|
|
var fileLength = formatBytes(myData.Length);
|
|
var title = myData.Saved.Title;
|
|
var uploadDate = new Date(myData.Saved.UploadDate);
|
|
var id = myData.Saved.Id;
|
|
var atitle = myData.Saved.AuthorTitle;
|
|
var acid = myData.Saved.AuthorChannelId;
|
|
var desc = myData.Saved.Description;
|
|
var dur = sec2time(myData.Saved.Duration);
|
|
var views = myData.Saved.Views;
|
|
var likes = myData.Saved.Likes;
|
|
var dislikes = myData.Saved.Dislikes;
|
|
|
|
|
|
myDescription.textContent = desc;
|
|
video_url.textContent = title;
|
|
channel_url.textContent = atitle;
|
|
myViews.textContent = views.toString() + " view(s) - " + likes.toString() + " like(s) - " + dislikes.toString() + " dislikes";
|
|
|
|
channel_url.href = "https://www.youtube.com/channel/" + acid;
|
|
video_url.href = "https://www.youtube.com/watch?v=" + id;
|
|
|
|
my_date.textContent = (uploadDate.getMonth() + 1).toString() + '/' + uploadDate.getDate().toString() + '/' + uploadDate.getFullYear().toString();
|
|
let kw = "";
|
|
myData.Saved.Keywords.forEach((item, index) => {
|
|
if(index == 0)
|
|
{
|
|
kw = item;
|
|
}else{
|
|
kw += ", " + item;
|
|
}
|
|
|
|
});
|
|
|
|
keywords.textContent = kw;
|
|
myProgress.setAttribute("aria-valuenow", progressData.toString());
|
|
myProgress.setAttribute("style", "width: "+ progressData.toString() +"%;" );
|
|
|
|
}
|
|
//if(!(fileLength === undefined || dur ))
|
|
{
|
|
//size_len.textContent = fileLength + " - " + dur;
|
|
}
|
|
};
|
|
xmlhttp.open("GET", "api/Progress", true);
|
|
xmlhttp.send();
|
|
}
|
|
|
|
function formatBytes(a,b=2){if(0===a)return"0 Bytes";const c=0>b?0:b,d=Math.floor(Math.log(a)/Math.log(1024));return parseFloat((a/Math.pow(1024,d)).toFixed(c))+" "+["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][d]}
|
|
downloadBtn.addEventListener('click',()=>{
|
|
|
|
let url =urlField.value;
|
|
|
|
let opt = parseInt(dlType.value);
|
|
|
|
if(opt == 0)
|
|
{
|
|
|
|
var req = new XMLHttpRequest();
|
|
req.open("GET","api/AddVideoRes/" + res.value + '/' + url);
|
|
req.send(null);
|
|
}
|
|
if(opt == 1)
|
|
{
|
|
var req = new XMLHttpRequest();
|
|
req.open("GET","api/AddPlaylistRes/" + res.value + '/' + url);
|
|
req.send(null);
|
|
}
|
|
if(opt == 2)
|
|
{
|
|
var req = new XMLHttpRequest();
|
|
req.open("GET","api/AddChannelRes/" + res.value + '/' + url);
|
|
req.send(null);
|
|
}
|
|
if(opt == 3)
|
|
{
|
|
var req = new XMLHttpRequest();
|
|
req.open("GET","api/AddUserRes/" + res.value + '/' + url);
|
|
req.send(null);
|
|
|
|
}
|
|
if(opt == 4)
|
|
{
|
|
window.open("api/Storage/VideoRes/" + res.value + '/' + yturl(url),"_blank");
|
|
}
|
|
|
|
|
|
});
|
|
function yturl(url){
|
|
if(url.length == 11)
|
|
{
|
|
return url;
|
|
}
|
|
var p = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
|
|
|
|
url = (decodeURIComponent(url));
|
|
return (url.match(p)) ? RegExp.$1 : false ;
|
|
|
|
}
|
|
|
|
|
|
setInterval(progress2page, 3000);
|