tytd-web/js/new_main.js

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);