PowerShell · 07.11.2022

Одним пакетом с Yt-dlp

Скрипт не актуален! Актуальную версию скрипта можно скачать здесь!

Метод скачивания контента с видеохостингов с использованием линклиста мною уже рассматривался в посте, посвящённом утилите YouTube-dl (тык).

Строго говоря, это переосмысление PS1 скрипта, упомянутого в предыдущем посте. Я умышленно разделил по двум сценариям скачивание аудиопотока и полноценного видеофайла с хостингов и добавил команду для считывания ссылок из линклиста.

Если эти скрипты находятся в одной папке — они будут обращаться к одному файлу linklist.txt.

Напоминаю, что рядом со скриптами должны находится файлы yt-dlp.exe и ffmpeg.exe, в противном случае волшебства не будет.

Скрипт для скачивания аудиодорожек в формате mp3 (в файл встраивается thumbnail ролика):

## Шапка скрипта ##
[System.Console]::Title = "Пакетное скачивание аудио с помощью yt-dlp"

## Создание файла для формирования списка ##
try { 
      # Проверка наличия файла #
      $filename = "linklist.txt"
      $testtxt = Test-Path $filename
      if ($testtxt) { Start-Process notepad.exe -ArgumentList $filename -Wait }
      else { Write-Host "Скопируйте ссылки на ролики в файл linklist.txt" -ForegroundColor Cyan
             New-Item -Path $filename -ItemType File -ErrorAction Ignore | Out-Null 
             Start-Process notepad.exe -ArgumentList $filename -Wait
             Write-Host "Файл со списком ссылок готов!" -ForegroundColor Cyan }
    }
catch { Write-Host "Ошибка создания файла для списка ссылок!" -ForegroundColor Red }

## Скачивание аудиофайлов ##
$cmd = "-x --audio-format mp3 --audio-quality 0 --embed-thumbnail --batch-file $filename -o audio\%(title)s.%(ext)s" 
Start-Process -FilePath yt-dlp.exe -ArgumentList $cmd -Wait -NoNewWindow

## Ожидание действий от пользователя ##
Read-Host "Нажмите Enter для выхода..."

Скрипт для скачивания видеофайлов:

## Шапка скрипта ##
[System.Console]::Title = "Пакетное скачивание видео с помощью yt-dlp"

## Создание файла для формирования списка ##
try { 
      # Проверка наличия файла #
      $filename = "linklist.txt"
      $testtxt = Test-Path $filename
      if ($testtxt) { Start-Process notepad.exe -ArgumentList $filename -Wait }
      else { Write-Host "Скопируйте ссылки на ролики в файл linklist.txt" -ForegroundColor Cyan
             New-Item -Path $filename -ItemType File -ErrorAction Ignore | Out-Null 
             Start-Process notepad.exe -ArgumentList $filename -Wait
             Write-Host "Файл со списком ссылок готов!" -ForegroundColor Cyan }
    }
catch { Write-Host "Ошибка создания файла для списка ссылок!" -ForegroundColor Red }

## Скачивание видеофайлов  ##
$cmd = "-f bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best --merge-output-format mp4 --batch-file $filename -o video\%(title)s.%(ext)s" 
Start-Process -FilePath yt-dlp.exe -ArgumentList $cmd -Wait -NoNewWindow

## Ожидание действий от пользователя ##
Read-Host "Нажмите Enter для выхода..."