Added playlist audio download support

pull/68/head
aandrew-me 3 years ago
parent d39e2e6b38
commit b24e60e7d3

@ -46,7 +46,7 @@
<span id="link"></span>
<br><br>
<label id="videoFormat">Select Format </label>
<label id="videoFormat">Select Video Format </label>
<select id="select">
<option value="144">144p</option>
<option value="240">240p</option>
@ -60,6 +60,20 @@
<button class="submitBtn" id="download">Download</button>
<br>
<label id="audioFormat">Select Audio format </label>
<select id="audioSelect">
<option value="mp3">Mp3</option>
<option value="aac">Aac</option>
<option value="m4a">M4a</option>
<option value="opus">Opus</option>
<option value="wav">Wav</option>
<option value="alac">Alac</option>
<option value="flac">Flac</option>
<option value="vorbis">Vorbis (ogg)</option>
</select>
<button class="submitBtn" id="audioDownload">Download</button>
<p id="incorrectMsg"></p>
</div>

@ -1,10 +1,10 @@
{
"dependencies": {
"electron-updater": "^5.2.1",
"electron-updater": "^5.3.0",
"yt-dlp-wrap-extended": "^2.3.15"
},
"name": "ytdownloader",
"version": "3.6.3",
"version": "3.7.0",
"main": "main.js",
"scripts": {
"start": "electron .",

@ -35,7 +35,7 @@ document.addEventListener("keydown", (event) => {
const playlistTxt = "Downloading playlist: ";
const videoIndex = "Downloading video ";
getId("download").addEventListener("click", () => {
function download(type) {
// Whether to use browser cookies or not
if (localStorage.getItem("browser")) {
browser = localStorage.getItem("browser");
@ -50,7 +50,8 @@ getId("download").addEventListener("click", () => {
const date = new Date();
const today =
date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
let playlistDirName = "Playlist_" + today;
let playlistDirName =
"Playlist" + Math.random().toFixed(5).toString().slice(2) + "_" + today;
// Opening folder
let folderLocation = path.join(downloadDir, playlistDirName);
@ -60,32 +61,62 @@ getId("download").addEventListener("click", () => {
getId("options").style.display = "none";
getId("pasteLink").style.display = "none";
getId("playlistName").textContent = i18n.__("Processing") + "...";
const quality = getId("select").value;
const format = `"mp4[height<=${quality}]+m4a/mp4[height<=${quality}]/bv[height<=${quality}]+ba/best[height<=${quality}]/best"`;
let quality, format, downloadProcess;
if (type === "video") {
quality = getId("select").value;
format = `"mp4[height<=${quality}]+m4a/mp4[height<=${quality}]/bv[height<=${quality}]+ba/best[height<=${quality}]/best"`;
} else {
format = getId("audioSelect").value;
}
const controller = new AbortController();
const downloadProcess = ytdlp.exec(
[
"-f",
format,
"--yes-playlist",
"-o",
`"${path.join(
downloadDir,
playlistDirName,
"%(playlist_index)s.%(title)s.%(ext)s"
)}"`,
cookieArg,
browser,
`"${url}"`,
],
{ shell: true, detached: false },
controller.signal
);
if (type === "video") {
downloadProcess = ytdlp.exec(
[
"-f",
format,
"--yes-playlist",
"-o",
`"${path.join(
downloadDir,
playlistDirName,
"%(playlist_index)s.%(title)s.%(ext)s"
)}"`,
cookieArg,
browser,
`"${url}"`,
],
{ shell: true, detached: false },
controller.signal
);
} else {
downloadProcess = ytdlp.exec(
[
"--yes-playlist",
"-x",
"--audio-format",
format,
"-o",
`"${path.join(
downloadDir,
playlistDirName,
"%(playlist_index)s.%(title)s.%(ext)s"
)}"`,
cookieArg,
browser,
`"${url}"`,
],
{ shell: true, detached: false },
controller.signal
);
}
downloadProcess.on("ytDlpEvent", (eventType, eventData) => {
console.log(eventData);
// console.log(eventData);
if (eventData.includes(playlistTxt)) {
playlistName = eventData.split(":")[1].slice(1);
@ -96,7 +127,12 @@ getId("download").addEventListener("click", () => {
if (eventData.includes(videoIndex)) {
count += 1;
const itemTitle = i18n.__("Video") + " " + eventData.split(" ")[3];
let itemTitle;
if (type === "video") {
itemTitle = i18n.__("Video") + " " + eventData.split(" ")[3];
} else {
itemTitle = i18n.__("Audio") + " " + eventData.split(" ")[3];
}
if (count > 1) {
getId(`p${count - 1}`).textContent = i18n.__(
@ -145,6 +181,16 @@ getId("download").addEventListener("click", () => {
openFolder(folderLocation);
};
});
}
// Downloading video
getId("download").addEventListener("click", () => {
download("video");
});
// Downloading audio
getId("audioDownload").addEventListener("click", () => {
download("audio");
});
function openFolder(location) {
@ -189,5 +235,7 @@ getId("preferenceWin").textContent = i18n.__("Preferences");
getId("aboutWin").textContent = i18n.__("About");
getId("homeWin").textContent = i18n.__("Homepage");
getId("linkTitle").textContent = i18n.__("Link:");
getId("videoFormat").textContent = i18n.__("Select Format ");
getId("videoFormat").textContent = i18n.__("Select Video Format ");
getId("audioFormat").textContent = i18n.__("Select Audio Format ");
getId("download").textContent = i18n.__("Download");

@ -64,6 +64,8 @@
"Install and restart now?":"Install and restart now?",
"Restart":"Restart",
"Later":"Later",
"Extract Audio":"Extract Audio"
"Extract Audio":"Extract Audio",
"Select Video Format ":"Select Video Format ",
"Select Audio Format ":"Select Audio Format "
}

Loading…
Cancel
Save