Created
November 28, 2016 14:13
-
-
Save StefanYohansson/35edd13898d1f5b1d8b2c172c871778e to your computer and use it in GitHub Desktop.
exportar tabela Fipe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var marcas = $('#selectMarcacarro option'); | |
| var modelos = []; | |
| var modelos_ano = {}; | |
| var marcas_list = {}; | |
| marcas.each((i,e) => { | |
| if (e.value != '') | |
| marcas_list[e.value] = { | |
| name: $(e).html(), | |
| modelos: {} | |
| }; | |
| }); | |
| function consultaMarca(marca) { | |
| return new Promise((resolve, reject) => { | |
| return $.ajax({ | |
| url: 'http://veiculos.fipe.org.br/api/veiculos/ConsultarModelos', | |
| method: 'POST', | |
| data: { | |
| codigoTipoVeiculo: 1, | |
| codigoTabelaReferencia: 198, | |
| codigoModelo: '', | |
| codigoMarca: marca, | |
| ano: '', | |
| codigoTipoCombustivel: '', | |
| anoModelo: '', | |
| modeloCodigoExterno: '' | |
| } | |
| }).done(resolve); | |
| }); | |
| } | |
| function consultaModelo(marca, modelo) { | |
| return new Promise((resolve, reject) => { | |
| $.ajax({ | |
| url: 'http://veiculos.fipe.org.br/api/veiculos/ConsultarAnoModelo', | |
| method: 'POST', | |
| data: { | |
| codigoTipoVeiculo: 1, | |
| codigoTabelaReferencia: 198, | |
| codigoModelo: modelo, | |
| codigoMarca: marca, | |
| ano: '', | |
| codigoTipoCombustivel: '', | |
| anoModelo: '', | |
| modeloCodigoExterno: '' | |
| } | |
| }).done(resolve); | |
| }); | |
| } | |
| var saveData = (function () { | |
| var a = document.createElement("a"); | |
| document.body.appendChild(a); | |
| a.style = "display: none"; | |
| return function (data, fileName) { | |
| var json = JSON.stringify(data), | |
| blob = new Blob([json], {type: "octet/stream"}), | |
| url = window.URL.createObjectURL(blob); | |
| a.href = url; | |
| a.download = fileName; | |
| a.click(); | |
| window.URL.revokeObjectURL(url); | |
| }; | |
| }()); | |
| function export_fip(veiculos) { | |
| saveData(veiculos, 'veiculos.json'); | |
| } | |
| function main() { | |
| return new Promise((resolve, reject) => { | |
| var markas = Object.keys(marcas_list); | |
| var funcs = markas.map((marca) => { | |
| return consultaMarca(marca); | |
| }); | |
| Promise.all( funcs ).then( | |
| (res) => { | |
| var pairs = []; | |
| var modelos = res.map((r, idx) => { | |
| modelos_ano = {}; | |
| const { Modelos, Anos } = r; | |
| var modelos = Modelos.map((modelo, id) => { | |
| modelos_ano[modelo.Value] = { | |
| name: modelo.Label, | |
| anos: {} | |
| }; | |
| pairs.push([markas[idx], modelo.Value]); | |
| return modelo.Value; | |
| }); | |
| marcas_list[markas[idx]]['modelos'] = modelos_ano; | |
| return modelos; | |
| }); | |
| modelos = [].concat.apply([], modelos); | |
| var orig_modelos = modelos; | |
| modelos = modelos.map(modelo => consultaModelo(pairs.filter(p => p[1] == modelo)[0][0], modelo)); | |
| Promise.all( modelos ).then((mestre_grilo) => { | |
| var anos = mestre_grilo.map((r, index) => { | |
| var anos = r.reduce((acc, ano) => { | |
| acc[ano.Value] = ano.Label; | |
| return acc; | |
| }, {}); | |
| marcas_list[pairs.filter(p => p[1] == orig_modelos[index])[0][0]]['modelos'][orig_modelos[index]]['anos'] = anos; | |
| return anos; | |
| }); | |
| resolve(marcas_list); | |
| }); | |
| }, | |
| () => console.log('deu ruim') | |
| ); | |
| }); | |
| } | |
| main().then((veiculos) => { | |
| export_fip(veiculos); | |
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #/usr/lib/perl | |
| use strict; | |
| use warnings; | |
| use lib qw(..); | |
| use JSON qw( ); | |
| use Data::Dumper; | |
| my $filename = 'veiculos.json'; | |
| my $json_text = do { | |
| open(my $json_fh, "<:encoding(UTF-8)", $filename) | |
| or die("Can't open \$filename\": $!\n"); | |
| local $/; | |
| <$json_fh> | |
| }; | |
| my $json = JSON->new; | |
| my $data = $json->decode($json_text); | |
| foreach my $key (keys %$data) | |
| { | |
| print "-- =======================================================================" . "\n"; | |
| print "INSERT INTO marcas (id, nome) VALUES (" . $key . ", '" . $data->{$key}->{"name"} . "');" . "\n"; | |
| foreach my $modelo (keys %{$data->{$key}->{"modelos"}}) | |
| { | |
| print "INSERT INTO modelos (id, marca_id, nome) VALUES (" . $modelo . ", " . $key . ", '" . $data->{$key}->{"modelos"}->{$modelo}->{"name"} . "');" . "\n"; | |
| foreach my $ano (keys %{$data->{$key}->{"modelos"}->{$modelo}->{"anos"}}) | |
| { | |
| print "INSERT INTO anos (id, modelo_id, nome) VALUES (" . $ano . ", " . $modelo . ", '" . $data->{$key}->{"modelos"}->{$modelo}->{"anos"}->{$ano} . "');" . "\n"; | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Perl dependencies