diff --git a/assets/images/thumb.png b/assets/images/thumb.png new file mode 100644 index 0000000..16447f0 Binary files /dev/null and b/assets/images/thumb.png differ diff --git a/src/renderer.js b/src/renderer.js index 49fb35f..833c09b 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -39,6 +39,7 @@ let downloadDir = ""; // Global variables let title, onlyvideo, id, thumbnail, ytdlp, duration, extractFormat; +let audioExtensionList = []; let rangeCmd = ""; let subs = ""; let subLangs; @@ -235,6 +236,7 @@ getId("pasteUrl").addEventListener("click", () => { // Getting video info async function getInfo(url) { + audioExtensionList = []; let selected = false; onlyvideo = false; let audioIsPresent = false; @@ -343,6 +345,7 @@ async function getInfo(url) { defaultVideoFormat = format.height; } + // Going through audio list if ( format.audio_ext !== "none" || (format.acodec !== "none" && format.video_ext === "none") @@ -352,6 +355,9 @@ async function getInfo(url) { audioSize = Number(format.filesize || format.filesize_approx) / 1000000; + if (!audioExtensionList.includes(format.audio_ext)) { + audioExtensionList.push(format.audio_ext); + } } } for (let format of formats) { @@ -511,7 +517,7 @@ getId("videoDownload").addEventListener("click", (event) => { const randId = Math.random().toFixed(10).toString().slice(2); const item = `
- No thumbnail + No thumbnail
${title}
@@ -785,6 +791,7 @@ function download( ext = getId("audioFormatSelect").value.split("|")[1]; } } + console.log("video extension:", ext); // localStorage.setItem("itemList", ""); // let itemList = []; @@ -809,7 +816,7 @@ function download( randomId + ".close" }"> No thumbnail
@@ -852,20 +859,32 @@ function download( filename += letter; } filename = filename.slice(0, 100); + if (filename[0] === ".") { + filename = filename.slice(1, 100); + } console.log("Filename:", filename); let audioFormat; if (ext === "mp4") { - audioFormat = "m4a"; + if (!audioExtensionList.length == 0) { + if (audioExtensionList.includes("m4a")) { + audioFormat = "+m4a"; + } else { + audioFormat = "+ba"; + } + } else { + audioFormat = ""; + } } else { - audioFormat = "ba"; + audioFormat = "+ba"; } const controller = new AbortController(); controllers[randomId] = controller; console.log(rangeOption + " " + rangeCmd); + console.log(`-f ${format_id}${audioFormat}`); if (type === "video" && onlyvideo) { // If video has no sound, audio needs to be downloaded @@ -876,11 +895,13 @@ function download( range1 || rangeOption, range2 || rangeCmd, "-f", - `${format_id}+${audioFormat}`, + `${format_id}${audioFormat}`, "-o", `"${path.join(downloadDir, filename + `.${ext}`)}"`, "--ffmpeg-location", ffmpeg, + "--downloader", + `'m3u8:${ffmpeg}'`, subs1 || subs, subs2 || subLangs, "--no-playlist", @@ -910,6 +931,8 @@ function download( `"${path.join(downloadDir, filename + `.${extractExt}`)}"`, "--ffmpeg-location", ffmpeg, + "--downloader", + `'m3u8:${ffmpeg}'`, "--no-playlist", cookieArg, browser, @@ -923,6 +946,8 @@ function download( } // If downloading only audio or video with audio else { + console.log("downloading only audio or video with audio"); + downloadProcess = ytdlp.exec( [ range1 || rangeOption, @@ -933,6 +958,8 @@ function download( `"${path.join(downloadDir, filename + `.${ext}`)}"`, "--ffmpeg-location", ffmpeg, + "--downloader", + `'m3u8:${ffmpeg}'`, subs1 || subs, subs2 || subLangs, "--no-playlist",