Pull to refresh

Закачка видео с 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 скрипт. Он все скачает за один заход и сохранит в нужную папку.

Спасибо за внимание. Надеюсь, кому нибудь данная информация будет полезна.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.