Как стать автором
Обновить

Библиотека PHP для поиска видео по скриншоту

Время на прочтение3 мин
Количество просмотров5.1K

Проект Video Color

Описание

Перед всеми нами ежедневно встаёт задача поиска информации. Требуется найти текст, изображения, аудио или видео информацию. Чаще всего для поискового запроса используется текст. Реже - изображения. Есть сервисы вроде "Shazam", которые ищут музыку используя запись звука. Мы сосредоточились на создании поискового сервиса, который осуществляет поиск видео. В качестве параметров для запроса мы используем изображения.

Сайт

Сайт находится по адресу www.videocolor.aapsoftware.ru

Список статей

Список видео

Библиотека для поиска

Для поиска видео по скриншоту для сторонних веб-сайтов на PHP была написана библиотека Video Color Search Client.

Есть два варианта получения данной библиотеки:

  • GitHub

  • Packagist.org

GitHub

Для клонирования проекта с GitHub откройте окошко терминала, перейдите в рабочий каталог и выполните следующую команду:

git clone https://github.com/alekseev23/VideoColorSearchClientPHP.git

Packagist.org

Для установки пакета с помощью Composer введите в консоли следующую команду:

php composer.phar require aap_software/video_color_search_client

После её выполнения в каталоге vendor появится подкаталог aap_software.

Использование библиотеки

Тестовый скрипт

  • Откройте окошко терминала

  • Перейдите в каталог проекта, туда где находится файл sample.php

  • Выполните следующую команду

php sample.php test.jpg

В результате работы скрипта появится текстовая информация о фильме. Попробуйте использовать другой скриншот. Где его взять? В Интернете полно кадров из фильмов.

Код примера

Давайте нашем тестовый скрипт example.php и разберём его работу.

<?php
declare(strict_types=1);
require("vendor/autoload.php");
$img = imagecreatefromjpeg("test.jpg");
$search = new AapSoftware\VideoColor\SearchClient();
$obj = $search->get($img);
imagedestroy($img);
if ($obj === null) {
    echo "Server not connected!\n";
} elseif (!$obj->result) {
    echo "Not found\n";
} else {
    var_dump($obj);
}

Сохраняем, копируем в каталог изображение test.jpg и запускаем его:

php example.php

В результате выполнения увидим результат выполнения поискового запроса.

Подробный разбор кода

Включаем режим строгой типизации.

<?php
declare(strict_types=1);

Подключаем нашу библиотеку

require("vendor/autoload.php");

Создаём в памяти изображение из JPEG файла test.jpg

$img = imagecreatefromjpeg("test.jpg");

Создаём экземпляр класса SearchClient.

$search = new AapSoftware\VideoColor\SearchClient();

Выполняем поисковый запрос просто передав наше изображение.

$obj = $search->get($img);

Удаляем ставшее ненужным изображение.

imagedestroy($img);

Анализируем результат и если нет ошибок, то выводим полученную информацию.

if ($obj === null) {
    echo "Server not connected!\n";
} elseif (!$obj->result) {
    echo "Not found\n";
} else {
    var_dump($obj);
}

Замечание 1

Если не использовать автозагрузку классов, то можно написать иначе.

require("src/SearchClient.php");

Замечание 2

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

$obj = $search->get($img,"ru");

Теги:
Хабы:
Всего голосов 10: ↑10 и ↓0+10
Комментарии13

Публикации

Истории

Работа

PHP программист
113 вакансий

Ближайшие события