- Клонируем репозиторий
- Для удобства работы создаем симлинки в
~/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, предварительно поправив в нем путь к валидатору.