Яндекс.Метрика
qr-код - Как-то так стрелка - Как-то так
Ведущий экономист + ... пиктограмма - Как-то Так THIS     Экономическая грамотность и web-решения
Будь в курсе: что, как и почему. Актуальные вещи - своими словами.
Повышайте своё качество с нами - СПЭМ !
Если тебе не нравится то, что ты получаешь, измени то, что ты даешь. © Карлос Кастанеда     KAKTOTAK.BY - услуги по экономическому проектированию и web-разработке (php/js - telegram, WordPress, Laravel, Vue, SEO)    Кооперация - на постоянной основе    Будь в теме   -    ПОДПИШИСЬ      Мои заметки - ЭКОНОМИКА +  и  Справочник WEB-разработчика | php+js+seo   в Telegram   telegram  

Пишем парсер или как скачать все видеоролики с 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-ссылок в базе дынных своего сайта на новые.

автор - Михаленко Р.
M R. Автор - kaktotak.by Специализация: финансово-экономическое проектирование - моделирование бизнеса, инвестиционных проектов реального сектора, анализ и оценка эффективности, оптимизация системы управленческих решений.

Широкий спектр web-компетенций для решения задач бизнеса.

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

А так же - Справочник WEB-разработчика | php+js+seo
Заметки и нативные решения простых локальных задач на PHP, JS. Кое-что про Laravel, WordPress, Vue и SEO.

  Персональная помощь в экономическом проектировании и веб-разработке:

  • Финансово-экономическое моделирование, анализ, учёт, бизнес-планирование
  • Комплексная web-разработка/поддержка проекта в сети (php/js, seo – Laravel, WordPress, Vue, telegram, администрирование, контент, реклама в Яндекс Директ

  telegram или форма обратной связи

Administrator
868
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 - о чём речь
ЭКОНОМИЧЕСКАЯ ГРАМОТНОСТЬ
Хочу Всё Знать. Полезные Советы