- Клонируем репозиторий
- Для удобства работы создаем симлинки в
~/bin/
для файлов./common/{osm_validate,osm_test_validator}
Для запуска валидации даём команду osm_validate
, где указываем валидатор и регион:
osm_validate sberbank RU-MOS
Допустим мы хотим создать новый валидатор с именем mbank
:
-
Создаем файл в папке
parser
с именем валидатора:mbank.php
-
В нём должен быть класс
mbank
, унаследованный отValidator
-
В классе задаём домен
$domain
, откуда будут скачиваться страницы -
Задаём список
$url
в форматерегион => url
-
В
$fields
прописываем поля, которые собираемся извлекать со страниц, если задано какое-то значение, то оно считается константой для всех объектов -
Устанавливаем
$filter
- фильтр объектов из базы OSM, это массив - первый параметртег=значение
, второй - фильтр по подстроке -
Создаем функцию
parse
, в которую передается первым параметром текст, в этой функции нужно распарсить страницу, создать объекты:$o = $this->makeObject($obj); // отфильтровываем нужные поля у объекта $this->addObject($o); // добавляем в базу для последующего анализа
Для проверки валидатора запускаем osm_test_validator
:
osm_test_validator sberbank RU-MOS
В случае успеха будет выведено кол-во объектов и первый объект в списке. Для вывода всех объектов, добавьте ключ --all
.
Ключ --all
удобно использовать совместно с grep
, чтобы отфильтровать только определенные поля и визуально оценить правильность работы:
osm_test_validator sberbank RU-MOS --all | grep opening_hours
- При валидации создаются gzip сжатые Javascript файлы в папке
data
. В файлахрегион/валидатор.js.gz
находятся данные из OSM, в файлахвалидатор/регион.js.gz
находятся реальные данные с сайтов. - Для распаковки всех
*.js.gz
можно запуститьcommon/ungzipOsmArchives
, предварительно поправив в нем путь к валидатору.