Яндекс.Метрика
qr-код - Как-то так стрелка - Как-то так
Ведущий экономист + ... пиктограмма - Как-то Так THIS     АКТУАЛЬНЫЕ ВЕЩИ - СВОИМИ СЛОВАМИ
Персональная помощь в экономическом планировании и WEB
+ WEB = разработка + ремонт + поддержка !

Пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS

Пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS

Есть такая задача:

Скачать все видео с сервера YOUTUBE к себе в систему за раз (в один клик), но не просто, а с привязкой названия urls этих роликов к именам скачиваемых файлов. И на выходе необходимо иметь на своей стороне все видеофайлы с определённого YOUTUBE  канала/плейлиста + информацию по каждому из этих файлов - его имя и url.

К пример, у вас есть свой сайт/ресурс и на его страницах встроены видео не через прямые ссылки своего сервера (когда файлы хранятся на вашем хостинге), а путем интеграции внешних urls через iframe или другой сторонний сервис (fv player и т.п.) в код вашей страницы.

Т.е., есть зависимость от сервера, где хранятся ваши видеоролики, и есть необходимость все их скачать оттуда и перезолить к себе на хостинг (для трансляции их уже со своего «дома») с последующим переименованием в базе данных своего сайта действующих urls на новые, по привязке ссылок YOUTUBE = название скаченного файла.

В силу возможной блокировки YOUTUBE сервиса, для определенных стран постсоветского пространства, данный парсер (скрипт) для некоторых может быть актуален.

Решим данную задачу с помощью серверного языка программирования php и некоторого функционала js.

Итак, Let's go.

Допустим необходимо скачать все видео с канала -https://www.youtube.com/@EnglishEasyPractice/videos

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 1

Переходим на страницу данного канала.

Нам понадобится 2-а скрипта на js.

1-ый - поможет нам через консоль браузера в начале раскрыть всю страницу со всеми роликами, путем автоматической и постепенной вертикальной прокрутки полосы браузера до её конца (чтобы весь DOM код был отображен на странице по мере подгрузки видео).

2-ой - уже непосредственно поможет в самой консоли браузера спарсить (вывести) названия всех urls, title и другую вспомогательную информацию, содержащуюся в коде по каждому видео.

Переходим в консоль разработчика нашего браузера(Google Chome).

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 2

Вставляем в консоль 1-ый скрипт и жмем Enter.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 3

После завершения работы 1-го скрипта (когда вся страница раскроется), вставляем в консоль 2-ой скрипт и жмём Enter.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 4

После проделанных процедур копируем из консоли весь выданный код и вставляем в обычный Excel файл.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 6

Имеем следующее.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 7

Excel файл имеет структуру с необходимыми нам полями – название ролика (title) и url видео.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 8

Сохраняем xlsx себе на компьютер под любым названием.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 9

Теперь переходим к написанию php скрипта, который и должен решить нашу задачу.

Всё будет реализовано в двух созданных php файлах:

  • test_youtube.php
  • video-downloader.php

Содержание файла test_youtube.php

Содержание файла video-downloader.php

Что описывает весь этот код

В test_youtube.php создаем форму html, с помощью которой вначале будем загружать наш файл xlsx на сервер, и кнопку «Скачать всё сразу», кликнув по которой будет осуществляться закачка всего списка спарсенных и выведенных на этой же станице urls.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 12

Т.е. изначально нам необходимо будет загрузить наш файл xlsx на сервер, где и будет происходить работа с ним.

При загрузке файла на сервер скрипт предварительно провалидирует его на безопасность (название, расширения, формат загрузки) после чего с помощью подключенной внешней библиотеки PHPExcel распарсит и преобразует в массив такого плана.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 10

Библиотеку PHPExcel подключим через require_once 'phpexcel/Classes/PHPExcel.php'.

Т.к. у нас установлена версия php 7.4, а более свежая и поддерживаемая библиотека PHPExcel работает начиная с php 8.0, поэтому не будем заморачиваться, а скачаем немного устаревшую версию из архива репозитория и подключим её через require_once, а не через composer. В данном случае это не принципиально.

Далее, с помощью API YOUTUBE и библиотеки php curl (для взаимодействия с API), а так же цикла foreach,  переберём все urls нашего массива и сгенерируем списком на станице (всё в том же файле test_youtube.php ) необходимые ссылки для загрузки (скачивания) видеороликов.

Каждой ссылке присвоим get параметр urln, значение которого и будет обзывать (присваивать наименование) соответствующего файла для скачки. Назовем их, как идентифицируются все стандартные ссылки любого ролика на youtube в виде префикса после знака =.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 11

После того, как ссылки сгенерированы и выведены на странице, клик по любой их них будет передавать get запросом наши данные 2-ому скрипту video-downloader.php, который уже непосредственно с помощью создаваемого http-заголовка и функции readfile будет считывать файл и записывать его в буфер вывода (загрузки).

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 13

Так как мы хотим, чтобы закачка видеороликов осуществлять не по одному (путём клика по каждой ссылке), а одним кликом и всех сразу, напишем js функцию download_everybody() в нашем исходном файле(test_youtube.php), которая будет привязана к событию клика нашей кнопки «Скачать все сразу».

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 14

Данный скрипт просто пробежится по списку всех видеороликов в DOM страницы, с интервалом в 5 секунд (в целях предосторожности возможной блокировки, как YOUTUBE, так и своего хостинга, из-за единовременной отправки большого количества запросов с одного IP), осуществляя клик по каждой их них, тем самыми отправляя её на загрузку.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 15

В итоге все наши файлы по мере закачки окажутся в необходимой для нас папке, указанной через настройки браузера для загрузки файлов по умолчанию.

пишем парсер или как скачать все видеоролики с YOUTUBE в один клик с привязкой имени файла к названию URL-а с помощью PHP + JS - 16

Чтобы браузер «не лёг», желательно всё-таки делить исходный xlsx файл на несколько и загружать их в несколько этапов, чтобы не забить оперативную память системы, а так же обезопаситься от возможной блокировки, из-за большого количества единовременных обращений к серверу с одного IP. Так же, необходимо учесть и квоту YOUTUBE на использование для этих целей своего API по выданному ключу. Как получить ключ для API YOUTUBE, в сети информации хватает.

В итоге, с помощью данного скрипт, мы можем загрузить/скачать все файлы с любого youtube канала/плейлиста, присвоив им уникальные названия (скачиваемых файлов), и тем самым получить необходимую привязку url youtube-ролика = название скачиваемого файла, что в дальнейшем при необходимости может упростить задачу переименования youtube-ссылок в базе дынных своего сайта на новые.

Подписывайтесь на мой телеграмм канал - Мои заметки - ЭКОНОМИКА +

Если у вас есть какая-либо потребность в решении определённой задачи, связанной с созданием, запуском, ремонтом и поддержкой своего интернет-проекта (сайта) в сети, или же экономическим анализом и бизнес-планированием коммерческой деятельности   telegram или форма обратной связи

Administrator
683
0
Имя
E-mail
Рейтинг
Отзыв

Конвертер валют
RUB RUB-icon
USD USD-icon
EUR EUR-icon
CNY CNY-icon
BYN BYN-icon
UAH UAH-icon
KZT KZT-icon
ЗАМЕТКИ ЭКОНОМИСТА
SHORT - о чём речь
ЭКОНОМИЧЕСКАЯ ГРАМОТНОСТЬ
Хочу Всё Знать. Полезные Советы