Difference between revisions of "PowerShell: Download YouTube Video"

From DanIT
Jump to navigation Jump to search
Line 74: Line 74:
 
</pre>
 
</pre>
  
=Use=
+
=Script=
 +
* A list of available formats for this URL will automatically be shown.
 +
* This script will automatically convert everything to .mp4
 +
 
 +
=Use Script=
 
Open the '''Download.ps1''' file, and answer the following prompts:</br>
 
Open the '''Download.ps1''' file, and answer the following prompts:</br>
  
Line 87: Line 91:
  
 
===Quality===
 
===Quality===
* A list of available formats for this URL will automatically be shown.
+
Enter the ID(s) of the format(s) that you want to download from the list.</br>
Enter the ID(s) of the format(s) that you want to download.</br>
 
 
If you want to download Video and Audio and combine them, enter like: 'Video ID'+'Audio ID'.</br>
 
If you want to download Video and Audio and combine them, enter like: 'Video ID'+'Audio ID'.</br>
 
Leave empty to automatically choose 'bestvideo+bestaudio'.</br>
 
Leave empty to automatically choose 'bestvideo+bestaudio'.</br>
* This script will automatically convert everything to .mp4
 

Revision as of 04:20, 2 April 2025

Overview

Long story short, YouTube makes it not so easy to download their videos.
So regardless what application you use to download them, it is always gonna require or include the following base components.

Setting up this system is IMO the best way to do it for Windows, in terms of balancing security and ease of use and edit.

'yt-dlp'

yt-dlp.exe is a command line application to download from YouTube, and needs to be regularly updated (as YouTube keeps changing the system).
This application is open-source (https://github.com/yt-dlp/yt-dlp/).

'ffmpeg'

ffmpeg.exe is a command line application that is used to convert the videos to .mp4 format (if needed).
This application is open-source (https://github.com/FFmpeg/FFmpeg).

Quality

YouTube devides videos up into multiple components, seperating video from audio, and having different quality levels.

Cookies

Cookies from your browser are sometimes required to download, as YouTube requires identification for restricted videos or users.

Setup

Create a new folder, and put the following in there:

  1. Download yt-dlp.exe from https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe
  2. Download ffmpeg.exe from https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip (found in the 'bin' folder).
  3. Create a new shortcut, with location yt-dlp.exe -U, and name it Update YT-DLP
  4. Create a new folder called Downloads
  5. Open Notepad, copy the PowerShell code below, and save it as Download.ps1
param([string]$URL, [string]$Cookies, [string]$Quality, [string]$Location)

function Download-YoutubeVideo
{
    if(!$URL)
    {
        Write-Host ""; Write-Host "Enter YouTube URL: " -ForegroundColor Yellow -NoNewline; $URL = Read-Host
    }

    if(!$Cookies)
    {
        Write-Host ""; Write-Host "Select Cookies" -ForegroundColor Yellow
        Write-Host "[C] for Chrome, [F] for Firefox, [L] for local cookies.txt, empty to skip: " -ForegroundColor Yellow -NoNewline; $Cookies = Read-Host

        if($Cookies -eq "C") { $CookiesArgs = @('--cookies-from-browser', 'chrome') }
        if($Cookies -eq "F") { $CookiesArgs = @('--cookies-from-browser', 'firefox') }
        if($Cookies -eq "L") { $CookiesArgs = @('--cookies', 'cookies.txt') }
    }

    if(!$Quality)
    {
        ./yt-dlp.exe $CookiesArgs -F $URL

        Write-Host ""; Write-Host "Select Quality" -ForegroundColor Yellow
        Write-Host "Video ID + Audio ID, empty for best: " -ForegroundColor Yellow -NoNewline; $Quality = Read-Host

        if(!$Quality) { $Quality = 'bestvideo+bestaudio' }
    }

    if(!$Location)
    {
        $Location = $PSScriptRoot + '\Downloads'
    }

    ./yt-dlp.exe --format $Quality --merge-output-format mp4 $CookiesArgs --paths $Location --output '%(title)s.%(ext)s' $URL

    Write-Host ""; Write-Host -ForegroundColor Green "Done!"; Write-Host ""

    Remove-Variable * -ErrorAction SilentlyContinue
    Download-YoutubeVideo
}

Download-YoutubeVideo

Script

  • A list of available formats for this URL will automatically be shown.
  • This script will automatically convert everything to .mp4

Use Script

Open the Download.ps1 file, and answer the following prompts:

URL

The link of the YouTube video

Cookies

'C' for extract from Chrome
'F' for extract from Firefox
'L' for extract from local file 'cookies.txt'
Leave empty for attempt to download without cookies

Quality

Enter the ID(s) of the format(s) that you want to download from the list.
If you want to download Video and Audio and combine them, enter like: 'Video ID'+'Audio ID'.
Leave empty to automatically choose 'bestvideo+bestaudio'.