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
示例#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()
# 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()
示例#4
0
import json
import sys

from sinesp_client import SinespClient

sc = SinespClient()
plate = "QWE2323"
result = sc.search(plate)
json_result = json.dumps(result)
print(json_result)
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)
# Fechando a conexãoreturn_code
f.close()

# Exibir os resultados
示例#6
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
示例#7
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)
示例#8
0
 def get_placa(self, event):
     placa = self.campo_placa.get()
     sc = SinespClient()
     results = sc.search(placa)
     self.apaga_lstbox()
     self.escreve_lstbox(results)
示例#9
0
def consulta(placa, chat):
    sc = SinespClient()
    #print(placa)
    info = sc.search(placa)
    retornaPlaca(info, chat)
示例#10
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)
示例#11
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)
示例#12
0
 def Teste1(self):
     print("Digite placa do carro")
     placa = input()
     sc = SinespClient()
     result = sc.search(placa)
     print(result)
示例#13
0
    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)
        i += 1
        x = plate['candidates'][0]['plate']

        if (old != x):
            if not (x in lista):
                lista.append(x)
                print("Placa: %s" % x)
                resultado = sc.search(x)
                print(
                    "Cidade: %s\nEstado: %s\nMarca: %s\nModelo: %s\nCor: %s\nAno de Fabricacao: %s\nChassi: %s\nStatus: %s\nRetorno: %s\n\n"
                    %
                    (resultado['city'], resultado['state'], resultado['brand'],
                     resultado['model'], resultado['color'],
                     resultado['model_year'], resultado['chassis'],
                     resultado['status_message'], resultado['return_message']))

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
alpr.unload()
示例#14
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'])
示例#15
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)
示例#16
0
 def procura_placa(placa_sinesp):
     vetor = []
     sc = SinespClient()
     results = sc.search(placa_sinesp)
     for result in results.values():
         vetor.append(result)