В предыдущем посте (тык) уже обсуждался скрипт для скачивания видео с сервиса YouTube, но с обработкой исключительно одной ссылки.
На этот раз попробуем провести скачивание ряда роликов, ссылки на которые будут хранится в текстовом документе. Этот метод может быть предпочтителен, когда нужно «бросить на скачивание» энное количество роликов без необходимости сохранения разрозненных ссылок. Учитывая, что YouTube-DL поддерживает докачку, можно запускать скрипт в случае обрыва соединения или потери скорости (а такое бывает частенько при использовании утилиты).
В процессе скриптотворчества получилось вот такое чудо:
## Шапка скрипта ##
[System.Console]::Title = "Скачать видео из списка ссылок"
## Скачивание YouTube-DL ##
$getytdl = "https://www.youtube-dl.org/downloads/latest/youtube-dl.exe"
Import-Module BitsTransfer
$testutdl = Test-Path youtube-dl.exe
if (!$testutdl){ Write-Host "Файл youtube-dl.exe не найден!" -ForegroundColor Red
Write-Host "Запуск процесса скачивания." -ForegroundColor Red
Start-BitsTransfer -Source $getytdl -Destination $PSScriptRoot }
## Создание файла для формирования списка ##
try {
# Проверка наличия файла #
$filename = "videolist.txt"
$testtxt = Test-Path $filename
if ($testtxt) { Start-Process notepad.exe -ArgumentList $filename -Wait }
else { Write-Host "Скопируйте ссылки на ролики в файл videolist.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 }
## Процесс скачивания ##
Write-Host
Write-Host "Начало процесса скачивания:"$(Get-Date) -ForegroundColor Cyan
$cmd = "-f best -a $filename --no-check-certificate -o /video/%(title)s.%(ext)s --console-title"
Start-Process -FilePath youtube-dl.exe -ArgumentList $cmd -Wait -NoNewWindow
Write-Host "Окончание процесса скачивания:"$(Get-Date) -ForegroundColor Cyan
## Ожидание действий от пользователя ##
Read-Host "Нажмите Enter для выхода..."
Из очевидных минусов: удалять файл videolist.txt придётся вручную, а при обнаружении файла videolist.txt notepad.exe откроется в любом случае. Последняя опция была добавлена для выверки ссылок или добавления новых.