Русский | English
Пакет предназначен для создания URL-адреса для встраиваемого видео и URL-адреса на картинку обложки с различных видеохостингов из URL-адреса видео в любом формате.
Пакет можно использовать как для обработки введенных пользователем данных перед добавлением в базу данных, так и для отображении результата на странице.
В пакет входят классы-обработчики для видео с YouTube, Rutube и VK Video.
При необходимости можно добавить собственные классы обработчики для других видеохостингов.
Установите последнюю версию с помощью composer
composer require vhar/laravel-embed-video
Вызовите метод handle
фасада Vhar\LaravelEmbedVideo\Facades\EmbeVideo
, передав ему в качестве аргумента URL-адрес видео в любом формате.
try {
return EmbedVideo::handle('https://www.youtube.com/watch?v=gpn_4tWz1w8');
} catch (\Exception $exception) {
return ['error' => $exception->getMessage()];
}
Если переданный URL-адрес успешно обработан, метод handle
вернет экземпляр класса \Vhar\LaravelEmbedVideo\EmbedData
, содержащий идентификатор, URL-адрес для встраиваемого видео и URL-адрес на изображение обложки.
{
id: "gpn_4tWz1w8"
video: "https://www.youtube.com/embed/gpn_4tWz1w8"
cover: "https://img.youtube.com/vi/gpn_4tWz1w8/0.jpg"
}
или исключение с сообщением об ошибке, например:
The argument is not valid URL-address to a YouTube video.
Вы также можете вызвать определенный обработчик, используя метод hosting
передав в качестве аргумента псевдонимом доступного обработчика.
try {
return EmbedVideo::hosting('youtube')->handle('https://www.youtube.com/watch?v=gpn_4tWz1w8');
} catch (\Exception $exception) {
return ['error' => $exception->getMessage()];
}
В настоящее время доступны следующие псевдонимы:
youtube
для YouTube;rutube
для Rutube;vkvideo
для VK Video;
Чтобы использовать тесты, добавьте в файл .env
для вашей тестовой среды ключи со URL-адресами любых доступных видео на соответствующих хостингах.
YOUTUBE_VIDEO=''
RUTUBE_VIDEO=''
VK_VIDEO=''
Если ключ отсутствуют или содержат недопустимое значение, тест будет пропущен.
На следующем шаге добавьте блок testsuite
в файл phpunit.xml
.
<testsuites>instance
...
<testsuite name="Embed Video">
<directory suffix="Test.php">./vendor/vhar/laravel-embed-video/tests/</directory>
</testsuite>
</testsuites>
Тесты Embedded video
теперь будут выполняться при запуске php artisan test
.
Создайте класс реализующую интерфейс Vhar\LaravelEmbedVideo\Contracts\EmbedVideoContract
.
В методе handle
создайте код обработки строки URL. Этот метод должен возвращать экземпляр класса \Vhar\LaravelEmbedVideo\EmbedData
содержащий свойсвта с идентификатором (id
), URL-адресом для встраимаевого видео (video
) и URL-адресом изображения обложки (cover
).
public function handle(string $url): EmbedData
{
...
$data = new EmbedData();
return $data->setId($id)->setVideo($embedURL)->setCover($coverURL);
}
Метод availableDomains
должен возвращать массив с именами доменов хостинга для вашего обработчика.
public function allowedDomains(): array
{
return [
'youtu.be',
'youtube.com',
];
}
Добавьте в метод register
провайдера App\Providers\AppServiceProvider
регистрацию вашего обработчика.
class AppServiceProvider extends ServiceProvider
{
public function register(): void
{
...
\Vhar\LaravelEmbedVideo\Facades\VideoHosting::hosting('you_alias', \YouNamespace\YouClassHandlerService::class);
}
}
Теперь вы можете вызвать обработку ссылок из вашего класса, как и для встроенных обработчиков, вызвав метод handle
фасада Vhar\LaravelEmbedVideo\Facades\EmbedVideo
.