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
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()
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
#!/usr/bin/python import sys import json from sinesp_client import SinespClient sc = SinespClient() result = sc.search(sys.argv[1]) print json.dumps(result)
def get_placa(self, event): placa = self.campo_placa.get() sc = SinespClient() results = sc.search(placa) self.apaga_lstbox() self.escreve_lstbox(results)
def consulta(placa, chat): sc = SinespClient() #print(placa) info = sc.search(placa) retornaPlaca(info, chat)
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)
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)
def Teste1(self): print("Digite placa do carro") placa = input() sc = SinespClient() result = sc.search(placa) print(result)
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)
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'])
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)
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 )
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()
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)