Тем, кто работает с телефонией, приложениями связанных со звонками и т.п. время от времени приходится сталкиваться с вопросами: «а можно определять с какого региона этот звонок?» и «а этот номер какого мобильного оператора?»
В общем-то, ответы найти легко. На сайте Федерального агентства связи есть данные о ресурсе нумерации всех операторов связи. Заходишь на сайт, скачиваешь нужный CSV файл и находишь нужную информацию.
Но ведь можно автоматизировать этот поиск? Конечно. И многие аккуратно парсят этот CSV и складывают к себе в базу данных. А затем используют. Я тоже так делаю.
Но недавно с моим коллегой мы решили немного это упаковать и сделать npm для быстрого подключения ресурса нумерации к проекту на node.js.
Ссылка на гитхаб, ссылка на npm.
Далее немного деталей.
В npm уже лежат 4 файла в JSON для быстрого поиска данных по номеру. Это преобразованные в JSON из CSV данные с сайта Федерального агентства связи РФ. Имеют ту же структуру, что и CSV: код, диапазон номеров, количество номеров в диапазоне, название оператора и регион.
Поиск по номеру заключается в поиске нужного диапазона в файле и предоставлении данных по этому диапазону.
Пример использования numcap
var numcap = require('numcap');
var finder = new numcap();
finder.getData("8 (391) 274-50-00", function (err, data) {
console.log(data);
});
/*
Output data object:
{ code: '391',
begin: '2745000',
end: '2745399',
capacity: '400',
operator: 'Мобилон Телекоммуникации',
region: 'Красноярск |Красноярский край' }
*/
Утилита ncli.js
В комплекте идет консольная утилита ncli.js, которая может пригодиться в следующих случаях.
1. Обновление данных. Данные на сайте обновляются примерно раз в месяц, поэтому периодически нужно актуализировать данные.
2. Перенос данных в Mongo DB. Использование файлов медленнее, чем использование базы данных mongo, поэтому данные JSON файлов можно перенести в mongo.
Описание опций утилиты есть в readme проекта.
Надеюсь, пригодится вам в ваших разработках. Принимаются конструктивные предложения по улучшению и дополнительному функционалу.
P.S. Во время подготовки утилиты по скачиванию CSV файлов мой коллега Александр заметил, что в паспорте открытых данных неверно указаны ссылки на эти данные. Федеральное агентство связи достаточно оперативно внесло корректировки в паспорт открытых данных по ресурсу нумерации.
Автор: antirek