Giter Site home page Giter Site logo

evoluxbr / open-cnl Goto Github PK

View Code? Open in Web Editor NEW
21.0 7.0 7.0 9.71 MB

Biblioteca para ler e consultar o banco de dados CNL (Código Nacional de Localidade) seguindo especificações da ANATEL (Agência Nacional de Telecomunicações).

License: Other

Python 99.65% Makefile 0.35%
consultar cnl anatel localidades

open-cnl's Introduction

OpenCNL

Build Status PyPI version

Biblioteca para ler e consultar o banco de dados CNL (Código Nacional de Localidade) seguindo especificações da ANATEL (Agência Nacional de Telecomunicações).

Instalação

pip install open-cnl

Importando a base da ANATEL

Você pode fazer o download do banco de dados atualizado do site da ANATEL e importar para um banco de dados SQLite3.

Terminal

python -m open_cnl.open_cnl_importer ./cnl_anatel.sqlite3

Python

from open_cnl.open_cnl_importer import OpenCNLImporter

open_cnl_importer = OpenCNLImporter('./cnl_anatel.sqlite3')
open_cnl_importer.importar_base()

Exemplo prático

Vamos utilizar como exemplo o telefone da prefeitura municipal de Natal/RN: (84) 3211-8243. Veja este código no arquivo exemplo.py.

from open_cnl.open_cnl import OpenCNL

# Inicializamos a classe que se
# conecta ao banco de dados
cnl = OpenCNL('./cnl_anatel.sqlite3')

# Pesquisando por um número de Natal/RN
localidade = cnl.pesquisar_localidade('843211', '8243')

Os dados retornados estarão num dicionário no seguinte formato:

{
    'prestadora': u'TELEMAR NORTE LESTE S.A.',
    'nome_da_localidade': u'NATAL',
    'hemisferio': u'S',
    'numero_da_faixa_final': u'8999',
    'sigla_cnl_da_area_local': u'NTL',
    'numero_da_faixa_inicial': u'8000',
    'longitude': u'351232',
    'prefixo': u'843211',
    'codigo_da_area_de_tarifacao': u'842',
    'latitude': u'547419',
    'codigo_cnl': u'84000',
    'sigla_uf': u'RN',
    'nome_do_municipio': u'NATAL',
    'sigla_cnl': u'NTL'
}

Caso uma localidade não seja encontrada será retornado o valor None.

JSON

Na inicialização da classe podemos definir o parâmetro as_json como True. O padrão desse argumento é False e quando verdadeiro, permite que os dados sejam retornados em uma string no formato JSON.

from open_cnl.open_cnl import OpenCNL

cnl = OpenCNL('./cnl_anatel.sqlite3')
cnl.pesquisar_localidade('843211', '8243', as_json=True)

Autor

Victor Torres [email protected]

Contribuidores

open-cnl's People

Contributors

stefanyohansson avatar victor-torres avatar vitorjoaofg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-cnl's Issues

Identificar DDD, prefixo e sufixo automaticamente

Utilizar libphonenumbers para isso. Dá pra identificar que é um número fixo e construir prefixo (com DDD) e sufixo automaticamente. Dessa forma podemos passar o número completo como parâmetro ao invés de ter que dividir ele antes.

Disparar exceções quando algo der errado

Atualmente existem vários pedaços do código que não verificam muita coisa, como por exemplo se um arquivo já existe antes de escrever nele. Temos de verificar essas coisas e gerar exceções nesses casos.

Retornar todas as informações da base de dados

Atualmente a biblioteca verifica se dois números (prefixo com ddd + sufixo) fazem parte de uma mesma localidade, ou seja, se uma ligação partindo do primeiro número pro segundo número é do tipo VC1 ou se é do tipo VC2, VC3 ou outro.

O que a biblioteca deveria fazer é disponibilizar uma API para acessar os dados extraídos do banco de dados da ANATEL e o utilizador pode utilizar esses dados da melhor forma possível, inclusive verificando a localidade e modalidade de tarifa entre dois números.

Problema ao extrair zip da base

Um erro é gerado ao extrair o arquivo ZIP da base da anatel

 try:
    arquivo_txt = self.extrair_base_do_arquivo_zip(arquivo_zip)
except Exception:
    raise ErroAoExtrairBaseDaANATEL

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.