New playlist mode and style changes for progress

pull/127/head
Andrew 3 years ago
parent 2fac50678e
commit 41ec5c3bb9

@ -109,7 +109,7 @@ body {
color: var(--text); color: var(--text);
margin: 10px auto; margin: 10px auto;
border-radius: 10px; border-radius: 10px;
padding: 20px 10px; padding: 10px;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
@ -131,7 +131,10 @@ body {
width: 90%; width: 90%;
} }
} }
.itemIconBox{
display:flex;
flex-direction: column;
}
.itemIcon { .itemIcon {
max-width: 160px; max-width: 160px;
max-height: 90px; max-height: 90px;
@ -141,6 +144,7 @@ body {
.itemTitle { .itemTitle {
font-family: sans-serif; font-family: sans-serif;
padding:5px;
} }
.itemBody { .itemBody {
height: 90%; height: 90%;
@ -155,6 +159,12 @@ body {
margin-top: 10px; margin-top: 10px;
font-family: sans-serif; font-family: sans-serif;
} }
.progressBar{
width:90%;
}
.itemSpeed{
padding:10px 5px 5px 5px;
}
.itemClose { .itemClose {
position: absolute; position: absolute;
top: 5px; top: 5px;
@ -167,6 +177,7 @@ body {
.itemType { .itemType {
font-style: italic; font-style: italic;
margin-top: 5px; margin-top: 5px;
margin: top 8px;
} }
#closeHidden { #closeHidden {

@ -79,31 +79,50 @@ function pasteLink() {
const parsed = JSON.parse(stdout); const parsed = JSON.parse(stdout);
console.log(parsed); console.log(parsed);
let items = ""; let items = "";
parsed.entries.forEach((entry) => { // If correct playlist url is used
const randId = Math.random().toFixed(10).toString().slice(2); if (parsed.entries) {
parsed.entries.forEach((entry) => {
if (entry.channel) { const randId = Math.random()
items += ` .toFixed(10)
<div class="item" id="${randId}"> .toString()
<img src="${ .slice(2);
entry.thumbnails[3].url
}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous"> if (entry.channel) {
items += `
<div class="itemBody"> <div class="item" id="${randId}">
<div class="itemTitle">${entry.title}</div> <img src="${
<div>${formatTime(entry.duration)}</div> entry.thumbnails[3].url
<input type="checkbox" class="playlistCheck" id="c${randId}"> }" alt="No thumbnail" class="itemIcon" crossorigin="anonymous">
<div class="itemBody">
<div class="itemTitle">${entry.title}</div>
<div>${formatTime(entry.duration)}</div>
<input type="checkbox" class="playlistCheck" id="c${randId}">
</div>
</div> </div>
</div> `;
`; }
} });
}); getId("data").innerHTML = items;
getId("data").innerHTML = items; getId("loadingWrapper").style.display = "none";
getId("loadingWrapper").style.display = "none"; }
// If correct playlist url is not used
else {
getId("loadingWrapper").style.display = "none";
getId("incorrectMsg").textContent = i18n.__(
"Incompatible URL. Please provide a playlist URL"
);
getId("errorDetails").innerHTML = `
<strong>URL: ${clipboardText}</strong>
<br><br>
${error}
`;
getId("errorDetails").title = i18n.__("Click to copy");
getId("errorBtn").style.display = "inline-block";
}
} }
} }
); );
} }
getId("pasteLink").addEventListener("click", (e) => { getId("pasteLink").addEventListener("click", (e) => {

@ -209,9 +209,9 @@ function defaultVideoToggle() {
defaultWindow = localStorage.getItem("defaultWindow"); defaultWindow = localStorage.getItem("defaultWindow");
} }
if (defaultWindow == "video") { if (defaultWindow == "video") {
selectVideo() selectVideo();
} else { } else {
selectAudio() selectAudio();
} }
} }
@ -530,13 +530,14 @@ getId("videoDownload").addEventListener("click", (event) => {
const randId = Math.random().toFixed(10).toString().slice(2); const randId = Math.random().toFixed(10).toString().slice(2);
const item = ` const item = `
<div class="item" id="${randId}"> <div class="item" id="${randId}">
<div class="itemIconBox">
<img src="${ <img src="${
thumbnail || "../assets/images/thumb.png" thumbnail || "../assets/images/thumb.png"
}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous"> }" alt="No thumbnail" class="itemIcon" crossorigin="anonymous">
<span class="itemType">${i18n.__("Video")}</span>
</div>
<div class="itemBody"> <div class="itemBody">
<div class="itemTitle">${title}</div> <div class="itemTitle">${title}</div>
<div class="itemType">${i18n.__("Video")}</div>
<p>${i18n.__("Download pending")}</p> <p>${i18n.__("Download pending")}</p>
</div> </div>
</div> </div>
@ -588,11 +589,12 @@ getId("audioDownload").addEventListener("click", (event) => {
const item = ` const item = `
<div class="item" id="${randId}"> <div class="item" id="${randId}">
<div class="itemIconBox">
<img src="${thumbnail}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous"> <img src="${thumbnail}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous">
<span class="itemType">${i18n.__("Video")}</span>
</div>
<div class="itemBody"> <div class="itemBody">
<div class="itemTitle">${title}</div> <div class="itemTitle">${title}</div>
<div class="itemType">${i18n.__("Video")}</div>
<p>${i18n.__("Download pending")}</p> <p>${i18n.__("Download pending")}</p>
</div> </div>
</div> </div>
@ -643,11 +645,12 @@ getId("extractBtn").addEventListener("click", () => {
const item = ` const item = `
<div class="item" id="${randId}"> <div class="item" id="${randId}">
<div class="itemIconBox">
<img src="${thumbnail}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous"> <img src="${thumbnail}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous">
<span class="itemType">${i18n.__("Video")}</span>
</div>
<div class="itemBody"> <div class="itemBody">
<div class="itemTitle">${title}</div> <div class="itemTitle">${title}</div>
<div class="itemType">${i18n.__("Video")}</div>
<p>${i18n.__("Download pending")}</p> <p>${i18n.__("Download pending")}</p>
</div> </div>
</div> </div>
@ -827,18 +830,22 @@ function download(
const newItem = ` const newItem = `
<div class="item" id="${randomId}"> <div class="item" id="${randomId}">
<div class="itemIconBox">
<img src="${
thumb1 || thumbnail || "../assets/images/thumb.png"
}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous">
<span class="itemType">${
type === "video" ? i18n.__("Video") : i18n.__("Audio")
}</span>
</div>
<img src="../assets/images/close.png" onClick="fadeItem('${randomId}')" class="itemClose"}" id="${ <img src="../assets/images/close.png" onClick="fadeItem('${randomId}')" class="itemClose"}" id="${
randomId + ".close" randomId + ".close"
}"> }">
<img src="${
thumb1 || thumbnail || "../assets/images/thumb.png"
}" alt="No thumbnail" class="itemIcon" crossorigin="anonymous">
<div class="itemBody"> <div class="itemBody">
<div class="itemTitle">${newTitle}</div> <div class="itemTitle">${newTitle}</div>
<div class="itemType">${ <strong class="itemSpeed" id="${randomId + "speed"}"></strong>
type === "video" ? i18n.__("Video") : i18n.__("Audio")
}</div>
<div id="${randomId + "prog"}" class="itemProgress"></div> <div id="${randomId + "prog"}" class="itemProgress"></div>
</div> </div>
</div> </div>
@ -999,11 +1006,12 @@ function download(
getId(randomId + "prog").textContent = getId(randomId + "prog").textContent =
i18n.__("Processing") + "..."; i18n.__("Processing") + "...";
} else { } else {
getId(randomId + "prog").textContent = `${i18n.__( getId(randomId + "speed").textContent = `${i18n.__("Speed")}: ${
"Progress"
)}: ${progress.percent}% ${i18n.__("Speed")}: ${
progress.currentSpeed || 0 progress.currentSpeed || 0
}`; }`;
getId(
randomId + "prog"
).innerHTML = `<progress class="progressBar" min=0 max=100 value=${progress.percent}>`;
} }
// const items = JSON.parse(localStorage.getItem("itemList")); // const items = JSON.parse(localStorage.getItem("itemList"));
@ -1020,6 +1028,7 @@ function download(
getId(randomId + "prog").textContent = i18n.__("Downloading..."); getId(randomId + "prog").textContent = i18n.__("Downloading...");
}) })
.once("close", (code) => { .once("close", (code) => {
getId(randomId + "speed").textContent = ""
currentDownloads--; currentDownloads--;
console.log("Closed with code " + code); console.log("Closed with code " + code);
if (code == 0) { if (code == 0) {

Loading…
Cancel
Save