diff --git a/extensions/youtube-downloader/CHANGELOG.md b/extensions/youtube-downloader/CHANGELOG.md index ee791b5e1c68a..3393a5830a1a2 100644 --- a/extensions/youtube-downloader/CHANGELOG.md +++ b/extensions/youtube-downloader/CHANGELOG.md @@ -1,5 +1,10 @@ # YouTube Downloader Changelog +## [Add audio and video format selection] - {PR_MERGE_DATE} + +- Add show advanced options checkbox +- Add audio and video format selection + ## [Improvement] - 2025-02-17 - Add an experimental preference option for forcing IPv4 to solve some network issues diff --git a/extensions/youtube-downloader/package.json b/extensions/youtube-downloader/package.json index 462344e593bf4..e1d1471ebd7e5 100644 --- a/extensions/youtube-downloader/package.json +++ b/extensions/youtube-downloader/package.json @@ -12,7 +12,8 @@ "ridemountainpig", "xmorse", "litomore", - "anwarulislam" + "anwarulislam", + "kickthedragon" ], "categories": [ "Applications", diff --git a/extensions/youtube-downloader/src/index.tsx b/extensions/youtube-downloader/src/index.tsx index f22c007eeff3c..0ed370cb013ee 100644 --- a/extensions/youtube-downloader/src/index.tsx +++ b/extensions/youtube-downloader/src/index.tsx @@ -22,7 +22,9 @@ import { DownloadOptions, isValidHHMM, isYouTubeURL, parseHHMM, preferences } fr export default function DownloadVideo() { const [error, setError] = useState(0); - + const [showAdvancedOptions, setShowAdvancedOptions] = useState(false); + const [selectedFormat, setSelectedFormat] = useState(""); + const audioFormats = ["mp3", "wav", "aac", "flac", "ogg"]; const { handleSubmit, values, itemProps, setValue, setValidationError } = useForm({ initialValues: { url: "", @@ -32,7 +34,15 @@ export default function DownloadVideo() { options.push("--ffmpeg-location", preferences.ffmpegPath); options.push("-f", "bv*[ext=mp4][vcodec^=avc]+ba[ext=m4a]/b[ext=mp4]"); - + if (selectedFormat) { + if (audioFormats.includes(selectedFormat)) { + options.push("--extract-audio"); + options.push("--audio-format", selectedFormat); + } else { + options.push("--recode-video", selectedFormat); + } + options.push("--no-keep-video"); + } // if (!values.startTime && values.endTime) { // options.push("--download-sections"); // options.push(`*0:00-${values.endTime}`); @@ -258,6 +268,28 @@ export default function DownloadVideo() { placeholder="https://www.youtube.com/watch?v=xRMPKQweySE" {...itemProps.url} /> + + {showAdvancedOptions && ( + + + + + + + + + + + + + + + + + + + + )} {/**/} {/*