Библиотека PHP для поиска видео по скриншоту
Проект 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 и разберём его работу.
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
В результате выполнения увидим результат выполнения поискового запроса.
Подробный разбор кода
Включаем режим строгой типизации.
Подключаем нашу библиотеку
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");