-
-
Save maurobaraldi/40ec1daf0005530dd94a to your computer and use it in GitHub Desktop.
#!/usr/bin/env python | |
from datetime import datetime | |
from json import loads | |
from time import gmtime, mktime, strptime | |
# LevelDict é um wrapper usando dicionário para LevelDB | |
# https://github.com/maurobaraldi/leveldict | |
from leveldict import LevelJsonDict | |
from requests import get | |
base = 'http://cotacoes.economia.uol.com.br/ws/asset' | |
assets = base + '/stock/list?size=10000' | |
intraday = base + '/{asset}/intraday?size=400&callback=uolfinancecallback0' | |
assets = {i['code']: i['idt'] for i in get(assets).json()['data']} | |
# 3 ativos para teste | |
# assets = {'PETR4.SA': 484, 'CTAX4.SA': 227, 'IGUA3.SA': 364} | |
db = LevelJsonDict('./intraday') | |
def from_ts(ts): | |
''' Convert timestamp (13 digits support) to datetime''' | |
return datetime.fromtimestamp(mktime(gmtime(ts / 1000.0))) | |
def to_ts(dt): | |
''' From strftime to timestamp (13 digits support)''' | |
return int(mktime(strptime(dt, "%Y-%m-%d %H:%M")) * 1000) | |
def get_intraday(asset): | |
url = intraday.format(**{'asset': asset}) | |
return loads(get(url).content[20:-2]) | |
if __name__ == '__main__': | |
for asset, code in assets.iteritems(): | |
today = datetime.now().strftime('%Y%m%d') | |
quote = get_intraday(code).get('data', {}) | |
db.setdefault(asset) | |
db[asset] = {today: quote} |
@blandre segue a lista de erros
ERRORS= { "FSW-0001":"Este período não é válido.",
"FSW-0002":"Este período não é válido; insira uma data inicial menor que a data final.",
"FSW-0003":"A data inicial não é válida; insira uma data menor que a data de hoje.",
"FSW-0004":"A data final não é válida; insira uma data menor ou igual a data atual.",
"FSW-0101":"Parâmetro size menor que 1","FSW-0102":"Parâmetro page menor que 1",
"FSW-0103":"Parâmetro fields inválido","FSW-0104":"Parâmetro idt menor que 1",
"FSW-0201":"Parâmetro inválido",
"FSW-0202":"Campo IDT inválido",
"FSW-0401":"Não há informação disponível para esta ação/índice.",
"FSW-0402":"Campo target inválido",
"FSW-0404":"URL não encontrada",
"FSW-0500":"Internal Server Error",
"FSW-0400":"Bad Request"
}
Cara, aparentemente eles desligaram a api.....é isso mesmo?
…
Parece que sim, também não consigo acessar desde o dia 28/09 pela manhã.
O serviço no endereço https://api.cotacoes.uol.com/asset/intraday/ ainda funciona, porém com atraso de 15 minutos nas cotações.
Encontrei uma solução utilizando o pacote yfinance.
# pip install yfinance
>>> import yfinance as yf
>>> df = yf.download('EGIE3.SA', start="2020-09-28", interval = "1m")
[*********************100%***********************] 1 of 1 completed
>>> df
Open High Low Close Adj Close Volume
Datetime
2020-09-28 10:08:00-03:00 41.799999 41.810001 41.680000 41.730000 41.730000 0
2020-09-28 10:09:00-03:00 41.790001 41.820000 41.790001 41.810001 41.810001 10500
2020-09-28 10:10:00-03:00 41.810001 41.910000 41.779999 41.889999 41.889999 8500
2020-09-28 10:11:00-03:00 41.830002 41.830002 41.759998 41.820000 41.820000 1700
2020-09-28 10:12:00-03:00 41.900002 41.900002 41.759998 41.810001 41.810001 1300
... ... ... ... ... ... ...
2020-09-28 16:50:00-03:00 40.459999 40.490002 40.439999 40.470001 40.470001 4500
2020-09-28 16:51:00-03:00 40.470001 40.490002 40.470001 40.490002 40.490002 1900
2020-09-28 16:52:00-03:00 40.520000 40.540001 40.520000 40.520000 40.520000 5100
2020-09-28 16:53:00-03:00 40.509998 40.590000 40.509998 40.590000 40.590000 2100
2020-09-28 16:54:00-03:00 40.580002 40.619999 40.529999 40.529999 40.529999 2500
[397 rows x 6 columns]
>>> df.to_csv('EGIE3.csv')
>>>
É, meus amigos, complicado, usava tanto essa api e agora já era, fiz um teste com a https://api.cotacoes.uol.com e infelizmente não atende, não por causa dos 15 minutos de atraso e sim por não conter a cotação do IFIX e de "novos" ativos como o RECR11 (antigo UBSR11) etc, fica aí o exemplo se alguém quiser testar, pois não encontrei muitas informações:
Boa tarde pessoal, a API do site Economia foi desativado? Alguém saberia algum serviço free ou com preço acessível que fornecesse os mesmos dados?
É, meus amigos, complicado, usava tanto essa api e agora já era, fiz um teste com a https://api.cotacoes.uol.com e infelizmente não atende, não por causa dos 15 minutos de atraso e sim por não conter a cotação do IFIX e de "novos" ativos como o RECR11 (antigo UBSR11) etc, fica aí o exemplo se alguém quiser testar, pois não encontrei muitas informações:
Como você faz a consulta dos dados por esse site?
Recomendo a api do yahoo para quem estiver precisando de cotações, infelizmente tem 15 minutos de atraso, mas ta show de bola e permite trazer vários tickers de uma vez, ex:
Recomendo a api do yahoo para quem estiver precisando de cotações, infelizmente tem 15 minutos de atraso, mas ta show de bola e permite trazer vários tickers de uma vez, ex:
Opa obrigado por compartilhar, ele não fornece o histórico intraday?
Opa obrigado por compartilhar, ele não fornece o histórico intraday?
Para histórico, você pode fazer como abaixo, mas ainda não explorei muito:
Boa noite,
Alguem consegue me dizer como ficou essa chamada? Onde listava todos os ativos da Bolsa?
http://cotacoes.economia.uol.com.br/ws/asset/stock/list?size=10000
Obrigado
Boa noite,
Alguem consegue me dizer como ficou essa chamada? Onde listava todos os ativos da Bolsa?
http://cotacoes.economia.uol.com.br/ws/asset/stock/list?size=10000Obrigado
Esse ai ja era.
Outra saida de uso pode ser esse abaixo.
http://bvmf.bmfbovespa.com.br/cotacoes2000/FormConsultaCotacoes.asp?strListaCodigos=USIM5|PETR4
A da uol morreu mesmo.
Boa noite,
Alguem consegue me dizer como ficou essa chamada? Onde listava todos os ativos da Bolsa?
http://cotacoes.economia.uol.com.br/ws/asset/stock/list?size=10000
ObrigadoEsse ai ja era.
Outra saida de uso pode ser esse abaixo.http://bvmf.bmfbovespa.com.br/cotacoes2000/FormConsultaCotacoes.asp?strListaCodigos=USIM5|PETR4
Será que essa ai vai durar bastante?
Putzz usava desde ano passado essa da UOL. A alternativa atual é só do yahoo mesmo?
Boa noite,
Alguem consegue me dizer como ficou essa chamada? Onde listava todos os ativos da Bolsa?
http://cotacoes.economia.uol.com.br/ws/asset/stock/list?size=10000Obrigado
https://api.cotacoes.uol.com/asset/list/?format=JSON&fields=abbreviation,id
Esta scritpt está rodando bonitinho:
Sabem de algum site que mostra em tempo real ?
Sem atraso, consigo analisar e/ou fazer um scraping, caso queiram !
Trazendo os dados formatados !
Boa noite,
Alguem consegue me dizer como ficou essa chamada? Onde listava todos os ativos da Bolsa?
http://cotacoes.economia.uol.com.br/ws/asset/stock/list?size=10000
Obrigadohttps://api.cotacoes.uol.com/asset/list/?format=JSON&fields=abbreviation,id
Me salvou, obrigado!
Boa noite,
Alguem consegue me dizer como ficou essa chamada? Onde listava todos os ativos da Bolsa?
http://cotacoes.economia.uol.com.br/ws/asset/stock/list?size=10000
Obrigadohttps://api.cotacoes.uol.com/asset/list/?format=JSON&fields=abbreviation,id
Valeu pela dica. Sabe quais os valores possíveis para o parâmetro fields?
Boa noite,
Alguem consegue me dizer como ficou essa chamada? Onde listava todos os ativos da Bolsa?
http://cotacoes.economia.uol.com.br/ws/asset/stock/list?size=10000
Obrigadohttps://api.cotacoes.uol.com/asset/list/?format=JSON&fields=abbreviation,id
Valeu pela dica. Sabe quais os valores possíveis para o parâmetro fields?
Também gostaria de saber os fields disponíveis para esse link, será que tem alguma documentação?
Parece que encontrei algo útil nesse post:
https://stackoverflow.com/questions/62963923/get-value-from-graphicview-bidvalue
Porém ao testar os outros fields não obtive resultado :/
Não consigo baixar o 'py-leveldb" pois a url dele não existe mais. O que eu faço nesse caso?
https://api.cotacoes.uol.com/asset/list/?format=JSON&fields=id,abbreviation,name,companies,exchange
Alguém sabe qual o nome do "fields" para mostrar o tipo: Ações, FII, ETF, etc.???
ps: o Type "S" significa o que?
https://api.cotacoes.uol.com/asset/list/?format=JSON&fields=id,abbreviation,name,companies,exchange
Alguém sabe qual o nome do "fields" para mostrar o tipo: Ações, FII, ETF, etc.???
ps: o Type "S" significa o que?
Também gostaria de saber os fields disponíveis para essa API
consegui dar uma ratreada e saber mas campos
https://api.cotacoes.uol.com/currency/intraday/list?currency=1&fields=bidvalue,askvalue,date,variationpercentbid
bidvalue = valor de venda
askvalue = valor de compra ()
variationpercentbid = variação da moeda (importante pra saber se a moeda tá subindo ou descendo)
mas alguém sabe como resolver esse erro aqui ?
"has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled."
Estou recebendo o seguinte erro do intraday para alguns tickers. Alguém tem alguma ideia do que possa ser?
window.getStockQuotesCallback({"error":"FSW-0401","today":1597768397824});
Obrigado por compartilhar esse código!