Закачка видео с youtube с помощью php

Здравствуйте, уважаемые коллеги.

Будучи счастливым отцом семейства, передо мной довольно долго стояла задача поиска интересных мультиков для своих чад на просторах ютуба, с последующей скачкой роликов для показа детям на телевизоре.

Задача сама по себе не сложная. Основной труд составляет процесс сохранения роликов: нужно скопипастить ссылку, найти соответствующий сервис, воспользоваться им, скачать выданный ролик. Все это довольно нудно и скучно. Поэтому было решено сделать инструмент который будет закачивать ролики, примерно как wget по списку url из файла.

Я довольно давно знал о существовании программы youtube-dl. Программа умеет скачивать ролики с гигантского количества сайтов, в том числе и с ютуба и делает она это хорошо. Изначально инструмент работает из под *nix, но, к счастью, есть версия и для windows.

Один большой минус: не умеет работать со списком url.

Будучи немного знаком с языком программирования php решил научить yutube-dl работать со списком url при помощи php-cli.

Итак:

1. Скачана последняя версия php (7.0.32)

2. В переменные окружения добавлен путь к php.exe для того что бы запускать скрипты просто из командной строки. Например
php /path/to/script.php


3. Написан вот такой скрипт:

<?php
include (colors.class.php');
$colors = new Colors();

$options = [
	'-f best',
	'-o /path/to/uploads/%(title)s.%(ext)s'
];

$list = file('path/to/list.txt');

foreach($list as $i => $url){
	echo $colors->getColoredString('Загрузка ' . $url, "green", null);
	$command = 'youtube-dl ' . implode(' ', $options) . ' ' . $url;
	exec($command);
}

echo $colors->getColoredString(PHP_EOL."Очистка списка".PHP_EOL, "red", null);
fopen("/path/to/list.txt", "w");
echo $colors->getColoredString("Готово", "green", null);
?>

youtube-dl.exe кладем рядом со скриптом.
list.txt — список url вида youtube.com/watch?v=xxxxxx, каждый url с новой строки.
colors.class.php — класс для раскраски сообщений скрипта (он не обязателен).

youtube-dl запускается с параметром -f best, что означает поиск и скачку лучшего по качеству видео и аудио ролика.

Вот и все. Теперь можно в процессе просмотра мультиков складывать нужные url в файл, а потом один раз запустить php скрипт. Он все скачает за один заход и сохранит в нужную папку.

Спасибо за внимание. Надеюсь, кому нибудь данная информация будет полезна.
Теги:
youtube, php, php-cli

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.