Difference between revisions of "PowerShell: Download YouTube Video"
m |
m |
||
| Line 1: | Line 1: | ||
==Components== | ==Components== | ||
| − | These parts are needed to Make Your Own '''YouTube Downloader'''</br> | + | These parts are needed to ''Make Your Own'' '''YouTube Downloader''':</br> |
===Interface=== | ===Interface=== | ||
| Line 9: | Line 9: | ||
Required to download Video and Audio from YouTube.</br> | Required to download Video and Audio from YouTube.</br> | ||
"yt-dlp.exe" is an [https://github.com/yt-dlp/yt-dlp open-source] command line application, and can be downloaded from: https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe</br> | "yt-dlp.exe" is an [https://github.com/yt-dlp/yt-dlp open-source] command line application, and can be downloaded from: https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe</br> | ||
| − | |||
| + | Needs to be regularly updated (as YouTube keeps changing their system).</br> | ||
You can make an Update-button by creating a shortcut to: <code>\yt-dlp\yt-dlp.exe -U</code> | You can make an Update-button by creating a shortcut to: <code>\yt-dlp\yt-dlp.exe -U</code> | ||
| Line 24: | Line 24: | ||
Sometimes required, as YouTube requires account identification on restricted videos or restricted client IPs.</br> | Sometimes required, as YouTube requires account identification on restricted videos or restricted client IPs.</br> | ||
| + | </br> | ||
==Script== | ==Script== | ||
'''Folder Layout'''</br> | '''Folder Layout'''</br> | ||
| Line 102: | Line 103: | ||
'''Leave empty''' to choose [https://github.com/yt-dlp/yt-dlp#format-selection 'bestvideo+bestaudio'].</br> | '''Leave empty''' to choose [https://github.com/yt-dlp/yt-dlp#format-selection 'bestvideo+bestaudio'].</br> | ||
| + | |||
| + | </br> | ||
| + | The script will automatically start over after the download has finished.</br> | ||
Revision as of 02:45, 18 April 2026
Contents
Components
These parts are needed to Make Your Own YouTube Downloader:
Interface
The Download-YoutubeVideo.ps1 script.
Useful to have a simple menu that uses all components in one place.
yt-dlp
Required to download Video and Audio from YouTube.
"yt-dlp.exe" is an open-source command line application, and can be downloaded from: https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe
Needs to be regularly updated (as YouTube keeps changing their system).
You can make an Update-button by creating a shortcut to: \yt-dlp\yt-dlp.exe -U
FFmpeg
Required to merge Video and Audio, and to convert formats.
"ffmpeg.exe" is an open-source command line application, and can be downloaded from: https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip
Node.js
Required to simulate a JavaScript environment, so YouTube does not think you are a bot.
"node.exe" is an open-source command line application, and can be downloaded from: https://nodejs.org/en/download
Cookies
Sometimes required, as YouTube requires account identification on restricted videos or restricted client IPs.
Script
PowerShell
param([string]$URL, [string]$Cookies, [string]$Formats, [string]$Location)
function Download-YoutubeVideo
{
if(!$URL)
{
Write-Host "`n-URL <URL>" -ForegroundColor Yellow
Write-Host "Enter YouTube URL: " -ForegroundColor Yellow -NoNewline; $URL = Read-Host
}
if(!$Cookies)
{
Write-Host "`n-Cookies <[C]hrome> <[F]irefox> <[L]ocal> (empty to Skip)" -ForegroundColor Yellow
Write-Host "Select Cookies: " -ForegroundColor Yellow -NoNewline; $Cookies = Read-Host
switch -Regex ($Cookies)
{
'^C' { $Args += @('--cookies-from-browser', 'chrome') }
'^F' { $Args += @('--cookies-from-browser', 'firefox') }
'^L' { $Args += @('--cookies', 'cookies.txt') }
}
}
if(!$Formats)
{
Write-Host "`nLoading all available formats..." -ForegroundColor Yellow
./yt-dlp/yt-dlp.exe --quiet --no-warnings --js-runtimes "node:$PSScriptRoot\node\node.exe" $Args --list-formats $URL
Write-Host "`n-Formats <[Video ID] + [Audio ID]> (empty for Best video and audio)" -ForegroundColor Yellow
Write-Host "Select Format ID(s): " -ForegroundColor Yellow -NoNewline; $Formats = Read-Host
if(!$Formats) { $Formats = 'bestvideo+bestaudio' }
$Args += @('--format', "$Formats")
}
if(!$Location)
{
$Location = $PSScriptRoot + '\Downloads'
$Args += @('--paths', $Location)
}
Write-Host "`nDownloading started..." -ForegroundColor Yellow
./yt-dlp/yt-dlp.exe --js-runtimes "node:$PSScriptRoot\node\node.exe" --ffmpeg-location "$PSScriptRoot\ffmpeg\ffmpeg.exe" --merge-output-format mp4 --output '%(title)s.%(ext)s' $Args $URL
Write-Host -ForegroundColor Green "`nDone!"
Remove-Variable * -ErrorAction SilentlyContinue # -Exclude 'Cookies'
Download-YoutubeVideo
}
Download-YoutubeVideo
Use
Run the Download-YoutubeVideo.ps1 script, and answer the following prompts:
-URL
Enter the <URL> link of the YouTube video.
-Cookies
<C> to extract from Chrome
<F> to extract from Firefox
<L> to extract from local file 'cookies.txt'
Leave empty to download without cookies.
-Formats
A list of available Video and Audio Format ID's for this URL will be shown.
Enter the <Video Format ID> + <Audio Format ID>
Leave empty to choose 'bestvideo+bestaudio'.
The script will automatically start over after the download has finished.

