[gnucash-br] Problemas para configurar o Tesouro.pm

Bruno Rocha bruno.raven em gmail.com
Dom Jan 3 22:26:42 EST 2021


 Boa noite pessoal,

Estive dando uma verificada aqui ..

Sou somente um curioso, aprendendo um pouco de PERL tentando entender o
script que o Adriano enviou..

Aparentemente realizaram alterações nos nomes das viariáveis no arquivo
JSON que era pesquisado pelo tesouro.pm

a busca realizada pelo arquivo enviado era realizada da seguinte forma na
linha 157, abri o arquivo JSON referenciado na linha 43 *my $TESOURO_URL =
("https://www.tesourodireto.com.br//json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json
<https://www.tesourodireto.com.br//json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json>");
*e percebi uma alteração na estrutura. ]

Solucionei o problema dos preços substituindo a pesquisa à nova variavel
conforme abaixo:

if((uc $titulo) eq (uc $symbol)){
    $quoter->store_date(\%info, $symbol,{ eurodate => $dia});
    $info{$symbol, "last"}  = $busca->{'TrsrBd'}{'untrRedVal'};
    $info{$symbol, "name"} = $busca->{'TrsrBd'}{'nm'};
    *$info{$symbol, "price"} = $busca->{'TrsrBd'}{'untrInvstmtVal'};*
    $info{$symbol, "success"} = 1;
    $info{$symbol, "method"} = "tesouro";
    $info{$symbol, "symbol"} = $symbol;
    $info{$symbol, "currency"} = "BRL";
    $info{$symbol, "source"} = $TESOURO_MAINURL;
    $info{$symbol, "errormsg"} = "";
    last;
}

Como disse, nao sou especialista somente verifiquei o problema dos preços
.. outros problemas podem ter surgido e eu nem percebido .. vamos aguardar
os mais experientes..

Abraço a todos.

Em qua., 30 de dez. de 2020 às 18:33, Adriano <adrianoss em gmail.com>
escreveu:

> A propósito, hoje o módulo está dando erro aqui. Não tentei debugar, pois
> como é fim de ano deve ter alguma coisa diferente no site do Tesouro.
>
> Semana que vem eu vou atrás se continuar sem funcionar.
>
> Em qua., 30 de dez. de 2020 às 18:27, Adriano <adrianoss em gmail.com>
> escreveu:
>
>> Agora segue o arquivo que editei.
>>
>> Em qua., 30 de dez. de 2020 às 18:26, Adriano <adrianoss em gmail.com>
>> escreveu:
>>
>>> Yulli, Rafael, eu tive uns problemas com conexão no módulo Tesouro.pm, e
>>> mandei uma mensagem sobre isso um tempo atrás, com a solução que funcionou
>>> para mim.
>>>
>>> Agora vi que a minha mensagem ficou retida para aprovação, acho que
>>> vocês não receberam. Então copio o conteúdo abaixo. Vou mandar em duas
>>> partes, para diminuir o tamanho.
>>>
>>> Primeira parte, só o texto. O arquivo editado mando em seguida.
>>>
>>>
>>> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>> Rafael, obrigado pelo arquivo.
>>>
>>> Mas eu comparei aqui e é o mesmo que eu tinha. Então o problema era em
>>> outro lugar.
>>>
>>> Mas nada com um bom sábado pela manhã para consertar essas coisas...
>>>
>>> Resumindo, editei o tesouro.pm (anexo) e agora funciona para mim.
>>>
>>> A versão completa segue abaixo.
>>>
>>> Como você disse que funcionava para você, mas eu tenho um erro que
>>> parecia ser no acesso ao site, pesquisei um pouco e encontrei,
>>> primeiramente, isso:
>>> https://stackoverflow.com/questions/49411569/perl-getstore-gives-error-500-but-can-downlaod-via-wget-or-web-browser.
>>> <https://stackoverflow.com/questions/49411569/perl-getstore-gives-error-500-but-can-downlaod-via-wget-or-web-browser> Na
>>> resposta mais abaixo do link, o usuário sugere um código para detalhar o
>>> erro. Então usei o código, levemente alterado como abaixo, no
>>> https://www.onlinegdb.com/online_perl_compiler
>>> <https://www.onlinegdb.com/online_perl_compiler:>:
>>>
>>> use LWP::Protocol::https;
>>> use LWP::UserAgent qw();
>>> my $ua = LWP::UserAgent->new;
>>> my $res = $ua->get('
>>> https://www.tesourodireto.com.br//json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json'
>>> );
>>> if ($res->is_error) {
>>> printf(
>>> "get failed.\nStatus: %s\nContent:\n%s\n\nFull response:\n%s\n",
>>> $res->status_line,
>>> $res->content,
>>> $res->as_string
>>> )
>>> }
>>>
>>> O resultado foi esse:
>>>
>>> get failed.
>>> Status: 500 Can't connect to www.tesourodireto.com.br:443
>>> Content:
>>> Can't connect to www.tesourodireto.com.br:443
>>>
>>> LWP::Protocol::https::Socket: getaddrinfo: Name or service not known at
>>> /usr/share/perl5/LWP/Protocol/http.pm line 41.
>>>
>>>
>>> Full response:
>>> 500 Can't connect to www.tesourodireto.com.br:443
>>> Content-Type: text/plain
>>> Client-Date: Sat, 12 Dec 2020 11:53:53 GMT
>>> Client-Warning: Internal response
>>>
>>> Can't connect to www.tesourodireto.com.br:443
>>>
>>> LWP::Protocol::https::Socket: getaddrinfo: Name or service not known at
>>> /usr/share/perl5/LWP/Protocol/http.pm line 41.
>>>
>>> Então usei o comando "curl
>>> https://www.tesourodireto.com.br//json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json",
>>> que indicou erro de certificado:
>>>
>>> curl: (60) SSL certificate problem: unable to get local issuer
>>> certificate
>>> More details here: https://curl.haxx.se/docs/sslcerts.html
>>>
>>> curl failed to verify the legitimacy of the server and therefore could
>>> not
>>> establish a secure connection to it. To learn more about this situation
>>> and
>>> how to fix it, please visit the web page mentioned above.
>>>
>>> Como seu código já tinha uma opção para ignorar a verificação do
>>> certificado, fiz o mesmo no curl:
>>>
>>> curl -k
>>> https://www.tesourodireto.com.br//json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json
>>>
>>> Com o seguinte resultado:
>>>
>>> curl: (35) error:141A318A:SSL routines:tls_process_ske_dhe:dh key too
>>> small
>>>
>>> Aí eu achei isso aqui:
>>> https://stackoverflow.com/questions/36417224/openssl-dh-key-too-small-error
>>> <https://stackoverflow.com/questions/36417224/openssl-dh-key-too-small-error?noredirect=1>
>>>
>>> Na resposta, o usuário comenta que o OpenSSL passou a exigir chave DH
>>> mais forte (o OpenSSL do meu Fedora deve estar com essa exigência ativada),
>>> e sugere adicionar a opção SSL_cipher_list => 'DEFAULT:!DH' na
>>> verificação do SSL (a resposta no link acima explica o motivo).
>>>
>>> Então mudei o arquivo tesouro.pm. As linhas a partir da 100 ficaram
>>> assim:
>>>
>>> SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,
>>> SSL_cipher_list => 'DEFAULT:!DH',
>>> verify_hostname => 0);
>>>
>>> E então voltou a funcionar.
>>>
>>> Segue o tesouro.pm editado em anexo, pode ser que alguma atualização
>>> futura do sistema operacional ative, para outros usuários, o mesmo erro que
>>> observei.
>>>
>>> Abraço,
>>> Adriano
>>>
>>> --------------------------------------------------
>>>
>>> Em qua., 30 de dez. de 2020 às 14:07, <rmcasali em gmail.com> escreveu:
>>>
>>>> Caro Yulli,
>>>>
>>>> Não consegui reproduzir o seu erro, mas me parece problema de conexão
>>>> com o site de buscca.
>>>>
>>>> Mas é bom ter em mente que o módulo está configurado para pegar o preço
>>>> de resgate. No site,
>>>>
>>>> https://www.tesourodireto.com.br/titulos/precos-e-taxas.htm
>>>>
>>>> a tabela de resgate não está funcionando, provavelmente não é possível
>>>> fazer resgate hoje de nenhum título. Provalvelmente o módulo irá
>>>> retornar um preço zero.
>>>>
>>>> Fica atento o site oficial do Tesouro se está tudo ok. Volta e meia tem
>>>> problemas de mercado fechado e etc.
>>>>
>>>> Abs
>>>>
>>>> E Feliz ano novo a todos da lista.
>>>>
>>>> Rafael
>>>>
>>>>
>>>> Em ter, 2020-12-29 às 19:24 +0000, yulli dias escreveu:
>>>> > Boa Tarde Rafael!
>>>> >
>>>> > Consegui configurar o módulo! Segui esses passos que você me falou e
>>>> > deu certo. Agora o problema é para utilizar o gnc-fq-dump, como faço
>>>> > para configurar a data e a moeda?
>>>> >
>>>> > $ gnc-fq-dump tesouro IPCA+15052035
>>>> >
>>>> > Finance::Quote fields Gnucash uses:
>>>> >     symbol: IPCA+15052035 (deduced) <=== required
>>>> >       date: ** missing **        <=== recommended
>>>> >   currency: ** missing **        <=== required
>>>> > Use of uninitialized value $last in printf at /usr/bin/gnc-fq-dump
>>>> > line 120.
>>>> >       last:                      <=\
>>>> > Use of uninitialized value $nav in printf at /usr/bin/gnc-fq-dump
>>>> > line 121.
>>>> >        nav:                      <=== one of these
>>>> > Use of uninitialized value $price in printf at /usr/bin/gnc-fq-dump
>>>> > line 122.
>>>> >      price:                      <=/
>>>> >   timezone:                      <=== optional
>>>> >
>>>> > ** This stock quote cannot be used by GnuCash!
>>>> >
>>>> >
>>>> > Obrigada,
>>>> > Yulli Dias
>>>> > De: rmcasali em gmail.com <rmcasali em gmail.com>
>>>> > Enviado: terça-feira, 22 de dezembro de 2020 10:49
>>>> > Para: yulli dias <yulli.dias em hotmail.com>; gnucash-br em gnucash.org <
>>>> > gnucash-br em gnucash.org>
>>>> > Assunto: Re: [gnucash-br] Problemas para configurar o Tesouro.pm
>>>> >
>>>> > Bom dia Yulli,
>>>> >
>>>> > Vamos ver se consigo lhe ajudar.
>>>> >
>>>> > 1. O arquivo 'tesouro.pm' deve ser copiado para o diretório onde se
>>>> > encontra os outros módulos (ZA.pm, YahooJSON.pm etc). Normalmente é
>>>> > um
>>>> > diretóio "Quote" onde tem o arquivo "Quote.pm"
>>>> >
>>>> > 2. Preste atenção as letras minúsculas do nome do arquivo e para o
>>>> > nome
>>>> > do módulo a ser inserido em "Quote.pm"
>>>> >
>>>> > 3. Na edição do arquivo "Quote.pm", procure onde estão definidos os
>>>> > módulos. No meu arquivo, está por volta da linha 185, você deve
>>>> > encontrar algo do tipo:
>>>> > ----
>>>> >     # Default modules
>>>> >
>>>> >     @modules = qw/AEX AIAHK AlphaVantage ASEGR ASX BMONesbittBurns
>>>> >         BSERO Bourso Cdnfundlibrary Citywire CSE Currencies Deka
>>>> >         DWS FTPortfolios Fidelity FidelityFixed FinanceCanada Fool
>>>> >         FTfunds HU GoldMoney HEX IEXCloud IndiaMutual LeRevenu
>>>> >         ManInvestments Morningstar MorningstarAU MorningstarCH
>>>> >         MorningstarJP MStaruk NZX Platinum SEB SIXfunds SIXshares
>>>> >         StockHouseCanada TSP TSX Tdefunds Tdwaterhouse Tiaacref
>>>> >         TNetuk Troweprice Trustnet Union USFedBonds VWD ZA
>>>> >         Cominvest Finanzpartner YahooJSON YahooYQL ZA_UnitTrusts/;
>>>> >   }
>>>> > ------
>>>> > Pode inserir uma linha, ou colocar no final de qualquer linha, ou
>>>> > entre
>>>> > dois módulos o nome do arquivo sem extensão "tesouro"
>>>> >
>>>> > Bom, se ainda tiver problemas, mande aí que tentaremos ajudar.
>>>> >
>>>> > Abs
>>>> > Rafael
>>>> >
>>>> > Em seg, 2020-12-21 às 23:20 +0000, yulli dias escreveu:
>>>> > > Boa noite Rafael!
>>>> > >
>>>> > > Tentei utilizar o arquivo que você me mandou, mas deu erro na hora
>>>> > de
>>>> > > executar o gnc-fq-check.
>>>> > >
>>>> > > $ sudo gnc-fq-check
>>>> > > Can't locate object method "methods" via package
>>>> > > "Finance::Quote::Tesouro" (perhaps you forgot to load
>>>> > > "Finance::Quote::Tesouro"?) at /usr/share/perl5/Finance/Quote.pm
>>>> > line
>>>> > > 120.
>>>> > >
>>>> > > Sabe o que pode ser?
>>>> > >
>>>> > > PS: removi as configurações que eu tinha feito utilizando a outra
>>>> > > solução.
>>>> > >
>>>> > > Desde já agradeço,
>>>> > > --
>>>> > > Yulli Dias
>>>> > >
>>>> > > De: rmcasali em gmail.com <rmcasali em gmail.com>
>>>> > > Enviado: segunda-feira, 21 de dezembro de 2020 13:15
>>>> > > Para: yulli dias <yulli.dias em hotmail.com>; gnucash-br em gnucash.org <
>>>> > > gnucash-br em gnucash.org>
>>>> > > Assunto: Re: [gnucash-br] Problemas para configurar o Tesouro.pm
>>>> > >
>>>> > > Boa tarde...
>>>> > >
>>>> > > Como não sei se você está com a última versão do módulo, vou enviar
>>>> > o
>>>> > > que estou usando.
>>>> > >
>>>> > > Abs,
>>>> > > Rafael
>>>> > >
>>>> > > Em dom, 2020-12-20 às 21:10 +0000, yulli dias escreveu:
>>>> > > > Olá pessoal!
>>>> > > >
>>>> > > > Estou na tentativa de configurar o módulo do tesouro mas estou
>>>> > > > obtendo o erro "Undefined fetch-method tesouro passed to
>>>> > > > Finance::Quote::fetch at /usr/bin/gnc-fq-dump line 191. No
>>>> > results
>>>> > > > found for stock B_Principal_150535." quando eu executo o comando
>>>> > > > gnc-fq-dump Tesouro B_Principal_150535. Alguém consegue me
>>>> > ajudar?
>>>> > > >
>>>> > > > Para configurar o módulo do tesouro eu segui os seguintes passos:
>>>> > > > 1 - Baixei o arquivo (
>>>> > > >
>>>> >
>>>> http://lists.gnucash.org/pipermail/gnucash-br/attachments/20180305/08ff692c/attachment.pl
>>>> > > > ) que encontrei na lista de e-mails (
>>>> > > >
>>>> > https://lists.gnucash.org/pipermail/gnucash-br/2018-March/000754.html
>>>> > > > ) e salvei em /usr/share/perl5/Finance como Tesouro.pm.
>>>> > > > 2 - Editei o arquivo Quote.pm e acrescentei o modulo Tesouro na
>>>> > > > lista de módulos.
>>>> > > > 3 - Executei o comando export FQ_LOAD_QUOTELET="Currencies",
>>>> > > > conforme indicado em
>>>> > > > https://github.com/romuloceccon/finance-quote-brazil
>>>> > > > 4 - Executei o comando gnc-fq-check
>>>> > > > $ gnc-fq-check
>>>> > > > ("1.49" "fetch_live_currencies" "known_currencies")
>>>> > > > 5 - Executei o comando gnc-fq-update
>>>> > > > $ sudo gnc-fq-update
>>>> > > > Reading '/root/.local/share/.cpan/Metadata'
>>>> > > >   Database was generated on Sun, 20 Dec 2020 19:55:55 GMT
>>>> > > > Date::Manip is up to date (6.83).
>>>> > > > Finance::Quote is up to date (1.49).
>>>> > > > 6 - Por fim o comando de teste
>>>> > > > $ gnc-fq-dump tesouro B_Principal_150535
>>>> > > > Undefined fetch-method tesouro passed to Finance::Quote::fetch at
>>>> > > > /usr/bin/gnc-fq-dump line 191.
>>>> > > > No results found for stock B_Principal_150535.
>>>> > > >
>>>> > > > Desde já agradeço,
>>>> > > > --
>>>> > > > Yulli Dias
>>>> > > > _______________________________________________
>>>> > > > gnucash-br mailing list
>>>> > > >  gnucash-br em gnucash.org
>>>> > > >
>>>> > > >  https://lists.gnucash.org/mailman/listinfo/gnucash-br
>>>> > > >
>>>> >
>>>>
>>>> _______________________________________________
>>>> gnucash-br mailing list
>>>> gnucash-br em gnucash.org
>>>> https://lists.gnucash.org/mailman/listinfo/gnucash-br
>>>>
>>> _______________________________________________
> gnucash-br mailing list
> gnucash-br em gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-br
>


-- 
Bruno Rocha
bruno.raven em gmail.com
(31) 8834-1998
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://lists.gnucash.org/pipermail/gnucash-br/attachments/20210104/f69ffb3a/attachment-0001.htm>


Mais detalhes sobre a lista de discussão gnucash-br