def sinesp(self):
     # sc = SinespClient(proxy_address='168.228.28.69', proxy_port=4145)
     sc = SinespClient()
     result = sc.search(self.placa)
     json_result = json.dumps(result)
     y = json.loads(json_result)
     x = str(y["status_message"]).upper()
     return x, y
Exemple #2
0
def pesquisaSituacao(placa):
    try:

        sc = SinespClient()
        resultado = sc.search(placa)

        # print(placa)
        # print(resultado['status_message'])
        # print(resultado)

        if resultado.get('return_code') == '1' or resultado.get('return_code') == '3':
            print(f'\nATENÇÃO *-* Placa {placa} inválida *-* \n Possíveis motivos:\n'
                  '1 - Essa placa não se encontra no servidor da SINESP \n*-* ATENÇÃO *-*'
                  'ESSA PLACA PODE SER FALSA!\n'
                  '2 - A placa não foi identificada corretamente\n')
            arduinoSerial.attentionLED()

        elif (resultado.get('status_code') == '1'):
            print('\n*-* ATENÇÃO *-*\n'
                  f'O veículo placa {placa} está marcado como roubado/furtado segundo o SINESP\n'
                  f'{resultado.get("model")} {resultado.get("color")} {resultado.get("model_year")}\n'
                  f'{resultado.get("plate")} - {resultado.get("city")} - {resultado.get("state")}\n'
                  'Fique atento e chame as autoridades competentes\n'
                  'EM HIPOTESE NENHUMA TENTE AGIR POR CONTA PRÓPRIA!\n')
            arduinoSerial.warningLED()

        elif (resultado.get('status_message') in 'None'):
            print('\n Não foi possível realizar a pesquisa da situação do veículo junto ao SINESP\n'
                  'Verifique a possibilidade de uma atualizaçao na API SinespClient\n'
                  'E torça para uma API oficial ser lançada!')
            arduinoSerial.attentionLED()

        else:
            print(f'\nVeículo placa {placa} regularizado segundo o SINESP\n'
                  'Fique atento as características do veículo cadastradas no SINESP:\n'
                  f'{resultado.get("model")} {resultado.get("color")} {resultado.get("model_year")}\n'
                  f'{resultado.get("plate")} - {resultado.get("city")} - {resultado.get("state")}\n')

    except:
        print('\n Não foi possível realizar a pesquisa da situação do veículo junto ao SINESP\n'
              'Possíveis Erros:\n'
              '1 - Verifique sua conexão com a internet\n'
              '2 - Confira se não há uma atualização na API\n'
              '3 - O aplicativo da SINESP pode estar fora do ar no momento\n'
              '4 - O servidor bloqueou seu acesso devido a muitos acessos seguidos.\n'
              'Nesse caso, o acesso pode se normalizar após algumas horas \n'
              '(talvez seja necessario limpar o cache)\n')

        arduinoSerial.attentionLED()
Exemple #3
0
def main():
    blnKNNTrainingSuccessful = LeitorPlaca.DetectarCaracteres.loadKNNDataAndTrainKNN(
    )
    # tentativa KNN(o vizinho mais proximo, algoritmo) training

    if blnKNNTrainingSuccessful == False:
        # se KNN(o vizinho mais proximo, algoritmo) training não foi bem sucedida
        print("\nerror: KNN traning was not successful\n")
        # mostrar mensagem de erro
        return
        # e fechar programa
    # end if

    print("Executando")
    cap = cv2.VideoCapture(0)

    while (True):
        # Capture frame-by-frame
        ret, imgCenaOriginal = cap.read()

        if imgCenaOriginal is None:
            # se a imagem não foi lida com sucesso
            print("\nErro: camera não lida\n")
            # exibir mensagem de erro de impressão
            # pausar assim que o usuário puder ver a mensagem de erro
            return
            # e fechar programa
        # end if

        listaDePossiveisPlacas = LeitorPlaca.DetectarPlacas.DetectarPlacasInScene(
            imgCenaOriginal)
        # detectar Placas

        listaDePossiveisPlacas = LeitorPlaca.DetectarCaracteres.DetectarCaracteresNasPlacas(
            listaDePossiveisPlacas)
        # detectar caracteres nas Placas

        if len(listaDePossiveisPlacas) != 0:
            # Se entrar aqui lista de possíveis Placas tem pelo menos uma Placa

            # Classificar a lista de possíveis Placas em ordem decrescente (maior número de caracteres para o menos número de caracteres)
            listaDePossiveisPlacas.sort(
                key=lambda possivelPlaca: len(possivelPlaca.strCaracteres),
                reverse=True)

            # Suponha que o local com os caracteres mais reconhecidos é a placa real
            licPlaca = listaDePossiveisPlacas[0]

            # Gravar possivel placa de carro

            if len(licPlaca.strCaracteres) != 0:

                desenharRetanguloVermelhoAoRedorDaPlaca(
                    imgCenaOriginal, licPlaca)

                escreverCaracteresDaPlacaNaImagem(imgCenaOriginal, licPlaca)

                stringData = datetime.datetime.now().strftime(
                    "%Y-%m-%d %H:%M:%S")

                #exibir de novo a imagem, só que alterada. com as inserções
                placaCarro = re.compile('[a-zA-Z]{3}[0-9]{4}')

                if placaCarro.match(licPlaca.strCaracteres):
                    # desenhar um retângulo vermelho em torno de Placa

                    print("\nPlaca lida da imagem = " +
                          licPlaca.strCaracteres + "\n")
                    # escrever o texto da placa para std out
                    print("----------------------------------------")

                    cv2.imwrite("imgOriginal" + stringData + ".png",
                                imgCenaOriginal)
                    cv2.imwrite("imgPlaca" + stringData + ".png",
                                licPlaca.imgPlaca)

                    sc = SinespClient()
                    result = sc.search(licPlaca.strCaracteres)
                    print(result)
                    # gravar essa imagem alterada para o arquivo

                else:
                    print("placa lida: " + licPlaca.strCaracteres)
                    #print ("Placa não identificada, dados gravados")
                    cv2.imwrite("imgTentativaOriginal" + stringData + ".png",
                                imgCenaOriginal)
                    cv2.imwrite(stringData + "-imgTentativaPlaca.png",
                                licPlaca.imgPlaca)
                    cv2.imwrite(stringData + "-imgTentativaThreshold.png",
                                licPlaca.imgThreshold)

    cap.release()
    cv2.destroyAllWindows()

    return
Exemple #4
0
#!/usr/bin/python

import sys
import json
from sinesp_client import SinespClient

sc = SinespClient()
result = sc.search(sys.argv[1])
print json.dumps(result)
Exemple #5
0
 def get_placa(self, event):
     placa = self.campo_placa.get()
     sc = SinespClient()
     results = sc.search(placa)
     self.apaga_lstbox()
     self.escreve_lstbox(results)
Exemple #6
0
def consulta(placa, chat):
    sc = SinespClient()
    #print(placa)
    info = sc.search(placa)
    retornaPlaca(info, chat)
Exemple #7
0
import requests
import json
import sys

from collections import namedtuple
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from sinesp_client import SinespClient
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

sc = SinespClient()

if sys.argv[0]:
    data = sc.search(sys.argv[1])
else:
    data = ''

result = json.dumps(data, indent=4, sort_keys=True).decode('unicode-escape')

print(result)
Exemple #8
0
import json
import sys

from sinesp_client import SinespClient

sc = SinespClient(proxy_address=sys.argv[1], proxy_port=sys.argv[2])
plate = sys.argv[3]
result = sc.search(plate)
json_result = json.dumps(result)
print(json_result)
Exemple #9
0
 def Teste1(self):
     print("Digite placa do carro")
     placa = input()
     sc = SinespClient()
     result = sc.search(placa)
     print(result)
Exemple #10
0
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

alpr = Alpr("br", "openalpr.conf", "runtime_data")

if not alpr.is_loaded():
    print("Erro ao carregar o OpenALPR")
    sys.exit(1)

if len(sys.argv) > 1:
    filepath = str(sys.argv[1])
else:
    print "Erro no caminho do programa."
    sys.exit(1)

alpr.set_top_n(1)
sc = SinespClient()

old = 'ABC1234'
lista = [old]
cap = cv2.VideoCapture(filepath)
while (True):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame', gray)

    results = alpr.recognize_ndarray(gray)
    i = 0
    for plate in results['results']:
        #print(results)
Exemple #11
0
def sinesp(placa):
    sc = SinespClient()
    result = sc.search(placa)
    print(result['model'] + "\n" + result['color'] + "\n" + result['year'] +
          "\n" + result['return_message'] + "\n" + result['status_message'] +
          "\n" + result['chassis'])
Exemple #12
0
import json
import sys

from sinesp_client import SinespClient

sc = SinespClient()
plate = sys.argv[1]
result = sc.search(plate)
json_result = json.dumps(result)
print(json_result)
Exemple #13
0
import datetime
from multiprocessing.dummy import Pool as ThreadPool
from multiprocessing.dummy import Manager
import openalpr_api
from openalpr_api.rest import ApiException
from sinesp_client import SinespClient
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import requests
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

# initiating globals
now = datetime.datetime.now()
sc = SinespClient()
pool = ThreadPool(4)  # number of threads for parallelism
lock = Manager().Lock()


def process_cars(car_images):
    return pool.map(process_car_image, car_images)


def process_car_image(image_path):
    # create an instance of the API class
    api_instance = openalpr_api.DefaultApi()
    secret_key = 'sk_4fb6feea66fb6b5524b2d984'  # str | The secret key used to authenticate your account.  You can view your  secret key by visiting  https://cloud.openalpr.com/
    country = 'br'  # str | Defines the training data used by OpenALPR.  \"us\" analyzes  North-American style plates.  \"eu\" analyzes European-style plates.  This field is required if using the \"plate\" task  You may use multiple datasets by using commas between the country  codes.  For example, 'au,auwide' would analyze using both the  Australian plate styles.  A full list of supported country codes  can be found here https://github.com/openalpr/openalpr/tree/master/runtime_data/config
    recognize_vehicle = 0  # int | If set to 1, the vehicle will also be recognized in the image This requires an additional credit per request  (optional) (default to 0)
    state = ''  # str | Corresponds to a US state or EU country code used by OpenALPR pattern  recognition.  For example, using \"md\" matches US plates against the  Maryland plate patterns.  Using \"fr\" matches European plates against  the French plate patterns.  (optional) (default to )
    return_image = 0  # int | If set to 1, the image you uploaded will be encoded in base64 and  sent back along with the response  (optional) (default to 0)
    topn = 10  # int | The number of results you would like to be returned for plate  candidates and vehicle classifications  (optional) (default to 10)
    prewarp = ''  # str | Prewarp configuration is used to calibrate the analyses for the  angle of a particular camera.  More information is available here http://doc.openalpr.com/accuracy_improvements.html#calibration  (optional) (default to )
Exemple #14
0
 def procura_placa(placa_sinesp):
     vetor = []
     sc = SinespClient()
     results = sc.search(placa_sinesp)
     for result in results.values():
         vetor.append(result)
"""

from sinesp_client import SinespClient
import requests
import json
import csv

# Mineração de dados dos veículos/Piauí
# Criado na data: Quinta-feira - 01/03/2018
# Autor: Emanuel A. Gabriel
# Usando API Pública do SINESP
# Mineração de dados

# Entrada da dados para acesso

busca = SinespClient(proxy_address='proxy.tjpi.local', proxy_port=3128)
dados_do_veiculo = input("Digite a PLACA do Veículo: EX. ABC1234: ")

# Buscando os dados digitados no campo - 'dados_do_veiculo'
resultado = busca.search(dados_do_veiculo)

# Abrindo arquivos - dados_de_veiculos
f = open("veiculos_pi.csv", "w")

situcao = csv.writer(f)

modelo_da_api = '''return_code return_message status_code status_message chassis
             model brand color year model_year plate date city state'''.split(
)

situcao.writerow(modelo_da_api)
# https://github.com/victor-torres/sinesp-client/
# pip install sinesp-client
# Python instalado na versão 2.8.1 ou superior

from sinesp_client import SinespClient
import json
import sys

placa = str(sys.argv[1])

sc = SinespClient()

result = sc.search(placa)
resjson = json.dumps(result)

cfile = "C:\\temp\\placas\\" + placa + ".json"

try:
    arquivo = open(cfile, 'w')
except FileNotFoundError:
    arquivo = open(cfile, 'w')

arquivo.writelines(resjson)
arquivo.close()
Exemple #17
0
def cotacao_task():
    status_pendente = Status.objects.get(name='pendente')
    status_cotado = Status.objects.get(name='cotado')
    cotacoes = None
    cotacoes = CotacaoRequest.objects.all()
    for c in cotacoes:
        if c.status == status_pendente:
            #""" CONSUMO SINESP """
            sc = SinespClient()
            print(c.placa)
            result = sc.search(c.placa)
            print(result)
            cotacao_request_update_1 = CotacaoRequest(
                id=c.id,
                cotacao_type=c.cotacao_type,
                email=c.email,
                cpf=c.cpf,
                placa=c.placa,
                cep=c.cep,
                chassi=result['chassis'],
                modelo=result['model'],
                marca=result['brand'],
                anoFabricacao=result['year'],
                anoModelo=result['model_year'],
                date_created_at=datetime.date.today(),
                hour_created_at=datetime.datetime.now())
            print(cotacao_request_update_1.cpf)
            cotacao_request_update_1.save()

            #""" CONSUMO BIPBOP """
            params = {
                'q':
                "USING 'CRAWLER' SELECT FROM 'FINDER'.'CONSULTA' WHERE 'DOCUMENTO'='{}'"
                .format(cotacao_request_update_1.cpf),
                'apiKey':
                'e3dc8917fdb86bdf654bfd976696024b'
            }
            response = requests.post('https://irql.bipbop.com.br',
                                     params=params)
            infos = xmltodict.parse(response.text)
            infos_json = json.dumps(infos)
            print(infos_json)

            if (infos['BPQL']['body']['xml']['ocorrencia']['codocor'] == '0'):

                print('encontrado')
                dados_cadastro = infos['BPQL']['body']['xml']['cadastro']

                cotacao_request_update_2 = CotacaoRequest(
                    id=cotacao_request_update_1.id,
                    cotacao_type=c.cotacao_type,
                    email=c.email,
                    cpf=c.cpf,
                    placa=c.placa,
                    cep=c.cep,
                    chassi=result['chassis'],
                    modelo=result['model'],
                    marca=result['brand'],
                    anoFabricacao=result['year'],
                    anoModelo=result['model_year'],
                    nome_completo=dados_cadastro['nome'],
                    data_nascimento=dados_cadastro['dtnascimento'],
                    sexo=dados_cadastro['sexo'],
                    date_created_at=datetime.date.today(),
                    hour_created_at=datetime.datetime.now())
                cotacao_request_update_2.save()

                #salvando telefones
                if (infos['BPQL']['body']['xml']['telefones']):
                    dados_telefone = infos['BPQL']['body']['xml']['telefones'][
                        'telefone']
                    if isinstance(
                            infos['BPQL']['body']['xml']['telefones']
                        ['telefone'], list):
                        for i in range(len(dados_telefone)):
                            cotacao_request_update_3 = PhoneList(
                                cotacao_id=cotacao_request_update_2.id,
                                ddd=dados_telefone[i]['ddd'],
                                numero=dados_telefone[i]['numero'])
                            cotacao_request_update_3.save()
                    else:
                        cotacao_request_update_3 = PhoneList(
                            cotacao_id=cotacao_request_update_2.id,
                            ddd=dados_telefone['ddd'],
                            numero=dados_telefone['numero'])
                        cotacao_request_update_3.save()

                #salvando endereços
                if (infos['BPQL']['body']['xml']['enderecos']):
                    dados_endereco = infos['BPQL']['body']['xml']['enderecos'][
                        'endereco']
                    if isinstance(
                            infos['BPQL']['body']['xml']['enderecos']
                        ['endereco'], list):
                        for i in range(len(dados_endereco)):
                            cotacao_request_update_4 = AddressInfos(
                                cotacao_id=cotacao_request_update_2.id,
                                tipo=dados_endereco[i]['tipo'],
                                logradouro=dados_endereco[i]['logradouro'],
                                numero=dados_endereco[i]['numero'],
                                bairro=dados_endereco[i]['bairro'],
                                cidade=dados_endereco[i]['cidade'],
                                estado=dados_endereco[i]['estado'],
                                complemento=dados_endereco[i]['complemento'])
                            cotacao_request_update_4.save()
                    else:
                        cotacao_request_update_4 = AddressInfos(
                            cotacao_id=cotacao_request_update_2.id,
                            tipo=dados_endereco['tipo'],
                            logradouro=dados_endereco['logradouro'],
                            numero=dados_endereco['numero'],
                            bairro=dados_endereco['bairro'],
                            cidade=dados_endereco['cidade'],
                            estado=dados_endereco['estado'],
                            complemento=dados_endereco['complemento'])
                        cotacao_request_update_4.save()

                change_status = CotacaoRequest(
                    id=c.id,
                    status=status_cotado,
                )
                change_status.save(update_fields=["status"])
                print('Cotacao concluida!!')

            else:
                print('não encontrado')
                cotacao_request_update_2 = CotacaoRequest(
                    id=cotacao_request_update_1.id,
                    cotacao_type=c.cotacao_type,
                    email=c.email,
                    cpf=c.cpf,
                    placa=c.placa,
                    cep=c.cep,
                    chassi=result['chassis'],
                    modelo=result['model'],
                    marca=result['brand'],
                    anoFabricacao=result['year'],
                    anoModelo=result['model_year'],
                    date_created_at=datetime.date.today(),
                    hour_created_at=datetime.datetime.now())
                cotacao_request_update_2.save()

                change_status = CotacaoRequest(
                    id=c.id,
                    status=status_cotado,
                )
                change_status.save(update_fields=["status"])
                print('Cotacao concluida!!')

            return Response({'status': 'OK'})

            # #ENVIO DE EMAIL
            # template = Template('cotacao.html')
            # print("email")
            # context = Context({
            #     'email': email,
            #     'cpf': cpf,
            #     'placa': placa,
            #     'cep': cep,
            # })

            # content = render_to_string('cotacao.html', {'context': context })
            # send_email = EmailMessage("Cotação de Seguro Carro: {}".format(placa), content , '*****@*****.**', ['*****@*****.**'], reply_to=[email])
            # send_email.content_subtype = 'html'
            # send_email.send()
            # return Response({'status': 'OK'})

    return Response(status=status.HTTP_200_OK)