Проект Video Color

Описание
Перед всеми нами ежедневно встаёт задача поиска информации. Требуется найти текст, изображения, аудио или видео информацию. Чаще всего для поискового запроса используется текст. Реже - изображения. Есть сервисы вроде "Shazam", которые ищут музыку используя запись звука. Мы сосредоточились на создании поискового сервиса, который осуществляет поиск видео. В качестве параметров для запроса мы используем изображения.
Сайт
Сайт находится по адресу www.videocolor.aapsoftware.ru
Список статей
Проблемы поиска кадров в базе данных, связанные с соотношением сторон и их решение
Использование индексных хэшей для ускорения поиска кадров в базе данных
Использование перцептивных хэшей для ускорения поиска кадров в базе данных «VideoColor»
Список видео
Video Color Creator 3.0 (приложение для добавления своих фильмов в базу данных "Video Color")
Поиск видео по изображению и поиск видео по короткому видео фрагменту
Библиотека для поиска
Для поиска видео по скриншоту для сторонних веб-сайтов на 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");