Jump to content

Atualização do JSON da caixa


Omesmo

Recommended Posts

pessoal ao que parece para incluir a super 7 a caixa modificou "bagunçou" os arquivos json

bem com isso meus atualizadores pararam de funcionar , eu prefiro o json pq  assim que eles lançam no site o resultado se pode usar, já os arquivos zip podem ficar dias sem atualizar

 

uma pergunta é, será que eles vão voltar a mexer nisso ou como está funcionando vão deixar do jeito que está?

bem eu nem ia mexer nisso mas essa noite perdi o sono por causa dos mosquitos e acabei montando uma função para facilitar a construção de atualizadores procurando palavras

  • Like 2
Link to comment
Share on other sites

como eu tinha falado, a caixa bagunçou mas tbm padronizou o json

falo que bagunçou pq tem um monte de dados de times nos arquivos tipo da mega , super7 entre outras , tem uma ordem bagunçada e caracteres desnecessários soltos

 

padrão usado
"tipoJogo"= nome da loteria

"numero" = numero do sorteio

"dataApuracao"=

"dezenasSorteadasOrdemSorteio"=

"dataProximoConcurso"=

"valorEstimadoProximoConcurso"=

"nomeTimeCoracaoMesSorte" = serve para o time na time mania ou mes do dia de sorte , pq não nomearam como BolaExtra?

 

 

Link to comment
Share on other sites

"listaRateioPremio"= mostra todo o rateio

 

bem com isso fica facil montar um atualizador ou pegar apenas o ultimo resultado de qualquer loteria apenas trocando o link

eu mesmo montei uma função simples que sem precisar de ferramenta json pega e limpa esses dados , até implementei na planilha da super7 para testar

pelo arquivo zip é bem mais rapido, mas fica aquela duvida se eles vão atualizar rapido

claro que não serve para pegar centenas de resultados, nesse caso o certo é usar o zip primeiro ou pegar de outra fonte para ir atualizando pelo json

 

Link to comment
Share on other sites

Só tive coragem de consertar o meu hoje, na prática não mudou muito, eles meio que deixaram o json genérico, servindo de base para todos as loterias deles... Dos dados que pego, a maior mudança foram os números dos sorteios "dezenasSorteadasOrdemSorteio", que ficaram em forma de array.

 

Abraços.

Link to comment
Share on other sites

22 horas atrás, Rany disse:

eles meio que deixaram o json genérico, servindo de base para todos as loterias deles...

acho que pela presa de mostrar o resultado da super 7bagunçaram um pouco , se vc ver tem um monte de dados sobre futebol no arquivo da mega por exemplo

ele poderiam ter colocado palavras chaves melhores que poderiam servir para loterias futuras

tipo "nomeTimeCoracaoMesSorte"  poderia se chamar

"BolasExtras"[sorteio:"01",apresentaçao:"janeiro"]  para a time,[ sorteio: "02",apresentaçao:"america/mg"]

para coisas de times poderia ter colocado uma campo extra como fizeram com o rateio

os campos não utilizáveis só colocar null

e assim tbm colocar uma ordem mais amigavel nos dados

mas ficou melhor agora antes cada loteria tinha uma palavra chave diferente

eu só montei a função mas não apliquei na planilha ainda, só testei na da super 7 e testei o retorno dos dados das outras colocando um numero de sorteio e mandando atualizar até o ultimo, até da federal ficou legal antes era totalmente diferente a forma de pegar os dados

Link to comment
Share on other sites

3 horas atrás, Rany disse:

poderiam fazer muito melhor... Na verdade tudo poderia ser melhor, nem parece que pertecente a uma das maiores instutuições financeiras do pais.

 

realmente, até o site é uma droga, parece que não tem cotrole tecnico de qualidade

 

qual a estrategia vc usou?

eu montei uma função busca palavra bem simples mas se mostrou bem funcional até para pegar dados de html  pq de qualquer forma a gente tem que saber pelo que procurar

 

 

 

Link to comment
Share on other sites

2 horas atrás, Omesmo disse:

qual a estrategia vc usou?

eu montei uma função busca palavra bem simples mas se mostrou bem funcional até para pegar dados de html  pq de qualquer forma a gente tem que saber pelo que procurar

 

Estou tratando como json mesmo, apesar que sua ideia também é muito boa.

 

Não pego muitos dados, pois utilizo apenas número do concurso, data e números sorteados.

 

Trabalho com turbo delphi, segue código que montei:

 

//json lotofacil

JsonStream:= TStringStream.Create('');

IdHTTP1 := TIdHTTP.Create;
IdHTTP1.HandleRedirects := True;
IdHttp1.Get(url, JsonStream);

js := TlkJSON.ParseText(JsonStream.DataString) as TlkJSONobject;

if (Trim(vartostr(js.FieldByIndex[1].Value)) = 'Não foi encontrado nenhum concurso com esta numeração') then
exit;

numerosorteio:= (Trim(vartostr(js.Field['numero'].Value)));
datasorteio:= (Trim(vartostr(js.Field['dataApuracao'].Value)));

resultadosorteio:= TStringlist.Create;

for i:= 0 to 14 do
resultadosorteio.add(Trim(vartostr(js.Field['dezenasSorteadasOrdemSorteio'].Child[i].Value)));

js.Free;

 

Abraços.

Edited by Rany
Link to comment
Share on other sites

37 minutos atrás, Rany disse:

Estou tratando como json mesmo, apesar que sua ideia também é muito boa.

 

Não pego muitos dados, pois utilizo apenas número do concurso, data e números sorteados.

 

Trabalho com turbo delphi, segue código que montei:

no seu caso é o melhor pq provavelmente o parse do json já está incluido no meu no vba teria que  adicionar

e como o parse é apenas uma busca de palavras eu montei eu mesmo por ser bem simples

o bom que se mostrou eficiente para outras coisas como com html

se o arquivo da caixa tivesse uma distribuição organizada poderia se usar divisão em array por caractere chave sem ficar procurando palavras inteiras e ir direto no campo que se deseja

 

Link to comment
Share on other sites

@Ranyreparei que tiraram os arquivos zip e colocaram o html numa pagina

mas a falta de padrão é um agonia

e tem mais o da mega nem da dia de sorte nem o nome da loteria na pagina

 

Concurso  Local  Data do Sorteio  1º número do Sorteio  2º número do Sorteio 
         
Concurso  Local  Data do Sorteio  Coluna 1  Coluna
         
Concurso Data Sorteio Bola1 Bola2 Bola3
         
Concurso Data Sorteio 1ª Dezena 2ª Dezena

3ª Dezena

Link to comment
Share on other sites

  • 7 months later...
Em 18/10/2020 em 11:14, Rany disse:

@Omesmovixe, nem sabia dessa mudança, depois vou dá uma olhada.

 

Obrigado.

Rany, 

 

Algum progresso nessa questão de pegar os resultados diretamente do site da CEF?

 

Preciso de ajuda para fazer o seguinte, em Delphi:

 

1- a rotina em Delphi seria chamada diariamente (de forma automatica) de dentro do programa em  Delphi

2- pegaria os resultados de cada loteria e os colocaria em arquivos TXT no formato que gosto de usar para minhas análises.

3- O formato desejado é: (ex para o Arquivo de resultados da Megasena, sorteio 2376

 

Número do Sorteio | Data do Sorteio | Resultado com as dezenas separadas por um traço '-'

 

2376|29/05/2021|12-14-17-18-19-22

 

Obrigado por qualquer ajuda. Programo em Delphi (só pras estudar as loterias) e tenho nenhuma experiência com Internet  ou Delphi para fazer isso.

Mas aprendo rápido se tiver algum exemplo.

 

 

 

----

 

 

Na verdade, o seu exemplo acima para a Lotofacil é bem tranquilo. Vou testar ele.

Só gostaria de saber como você define a url correta?

 

E as url s das outras loterias? Como vou saber isso, de antemão, por favor?

 

Link to comment
Share on other sites

Em 18/10/2020 em 11:14, Rany disse:

@Omesmovixe, nem sabia dessa mudança, depois vou dá uma olhada.

 

Obrigado.

 

 

Rany,

 

Tentei usar seu código acima para buscar resultados da url atual (maio 2021) da CEF para Lotofacil.

 

// --------------------------------------------------------

procedure TFrmTesteSets.Button1Click(Sender: TObject);
var
  numerosorteio, datasorteio,  url : String;
  IdHTTP1 : TIdHTTP;
  js : TlkJSONObject;
  JsonStream : TStringStream;
  i : Integer;
  resultadosorteio : TStringList;
begin

  //json lotofacil

url := 'http://loterias.caixa.gov.br/wps/portal/loterias/landing/lotofacil/';

JsonStream := TStringStream.Create('');

IdHTTP1 := TIdHTTP.Create;
IdHTTP1.HandleRedirects := True;
IdHttp1.Get(url, JsonStream);

js := TlkJSON.ParseText(JsonStream.DataString) as TlkJSONobject;

if (Trim(vartostr(js.FieldByIndex[1].Value)) = 'Não foi encontrado nenhum concurso com esta numeração') then
exit;

numerosorteio:= (Trim(vartostr(js.Field['numero'].Value)));
datasorteio:= (Trim(vartostr(js.Field['dataApuracao'].Value)));

resultadosorteio:= TStringlist.Create;

for i:= 0 to 14 do
resultadosorteio.add(Trim(vartostr(js.Field['dezenasSorteadasOrdemSorteio'].Child[i].Value)));

js.Free;


end;

 

/// --------------------------------------------------------

 

 

MAS... 

 

Não funcionou na linha que pega os dados da url que "achei" que deveria ser.

 

Portanto, não carregou nada na variável js

 

Alguma dica sobre qual é o erro?

 

 

 

 

 

Link to comment
Share on other sites

@DixieJoe segue código funcional para a lotofácil.

 

var
numerosorteio, datasorteio, resultadosorteio,  url: String;
idhttp1: TIdHTTP;
js: TlkJSONObject; //uso a unit LkJSON v1.07
jsonStream: TStringStream;
i, qtdanumeros: Integer;

begin

//url json lotofacil

url:= 'http://loterias.caixa.gov.br/wps/portal/loterias/landing/lotofacil/!ut/p/a1/04_';
url:= url + 'Sj9CPykssy0xPLMnMz0vMAfGjzOLNDH0MPAzcDbz8vTxNDRy9_Y2NQ13CDA0sTIEKIoEKnN0dPUzMfQwMDEwsjAw8XZw8XMwtfQ0MPM2I02';
url:= url + '-AAzgaENIfrh-FqsQ9wBmoxN_FydLAGAgNTKEK8DkRrACPGwpyQyMMMj0VAcySpRM!/dl5/d5/L2dBISEvZ0FBIS9nQSEh/pw/';
url:= url + 'Z7_61L0H0G0J0VSC0AC4GLFAD2003/res/id=buscaResultado/c=cacheLevelPage/=/?concurso=';
//url:= url + numerodoconcursopretendido; //caso deseje pegar um concurso específico

jsonstream := TStringStream.Create('');

idhttp1 := TIdHTTP.Create;
idhttp1.HandleRedirects := True;
idhttp1.Get(url, JsonStream);

if (Trim(jsonstream.DataString) = '') then begin
idhttp1.free;
jsonstream.free;
exit;
end;

js:= TlkJSON.ParseText(jsonstream.DataString) as TlkJSONobject;

numerosorteio:= js.Field['numero'].Value;
datasorteio:= js.Field['dataApuracao'].Value;

qtdanumeros:= js.Field['dezenasSorteadasOrdemSorteio'].Count;

for i:= 0 to (qtdaNumeros - 1) do
resultadosorteio:= resultadosorteio + copy(js.Field['dezenasSorteadasOrdemSorteio'].Child[i].Value,2,3) + '-';

resultadosorteio:= copy(resultadosorteio,1,length(resultadosorteio)-1);

js.free;
idhttp1.free;
jsonstream.free;

showmessage (numerosorteio + '|' + datasorteio + '|' + resultadosorteio);

//exemplo: 2243|29/05/2021|25-01-21-15-20-18-11-06-08-17-19-05-14-24-10

end;

 

Acredito que o código acima sirva para outras loterias caixa, mudando apenas a url json.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...