Альтернативные варианты получения тИЦ

Не буду повторяться, и разъяснять какими стандартными способами, можно получить значение тИЦ. В своём скрипте у меня присутствует функция getBarCY(), ну а парсить search.yaca.yandex.ru/yca/cy/ch/ваш_url я вообще считаю чем-то уж очень не перспективным. Хотя, как вариант тоже можно использовать.

Что же ещё можно придумать для получения данного параметра с более-менее стабильным результатом? Как вариант, в январе 2008 года, я предложил решения позволяющее распознать циферки на КУевой кнопке: http://yandex.ru/cycounter?ваш_url — это было действительно круто. Дело в том, что эта кнопка имеет разного цвета подкладки (background), а шрифт сглаживается. Таким образом, появляется проблема создания шаблонов распознания символов. Что я сделал? Выделил черные пиксели и создал единые для всех подкладок шаблоны распознавания символов. Все работало просто великолепно… до недавнего времени.

Что произошло и почему первая версия скрипта больше не работает? Дело в том, что шрифт КУевых кнопок стал слегка более прозрачным и/или поменялся алгоритм сглаживания. Так или иначе, при текущей ситуации, основываться только на черных пикселях уже не получается. Для решения проблемы пришлось учитывать ряд градиентов по RGB в приделах от 0 до 100. При контрасте подкладок и символов это вполне допустимо. Однако, единого шаблона получить не удалось. Пришлось создавать приблизительные матрицы каждого символа и поля распознания. Затем, введя процент соответствия $pcompar (он у меня равен 85%) выискивать наиболее похожие совпадения. Таким образом, скрипт, с определённой степенью вероятности, распознаёт циферки и выдает тИЦ.

Как и первая версия, скрипт работает только с хостами, т.е. для отдельных страниц и/или каталогов он возвращает 0. В остальном, все как и прежде.

$cym = new cym;
echo 'cy: <b>'.$cym->getCY('/').'</b>';

Метки: