Проект 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");