Files
crypto_portfolio/coingecko_api.py
[Luis Rodrigues] 88d82e3d2e criacao de funcao para gravar dados em ficheiro;
modulo 'coingecko.py' para agrupar funcoes de acesso a api
2024-05-24 23:30:22 +01:00

56 lines
2.0 KiB
Python

# . documentação API: https://docs.coingecko.com/v3.0.1/reference/introduction
import requests
CHAVE_API = 'CG-K5RS5VXsdFDip2UvY3z8VjQP'
headers = {
'accept': 'application/json',
'x-cg-demo-api-key': CHAVE_API
}
url_raiz_API = 'https://api.coingecko.com/api/v3/'
# criptomoeda = 'bitcoin'
# vs_currency = 'eur'
# dias = '30'
# precisao = '3'
#url_consulta_ohlc = 'coins/' + criptomoeda + '/ohlc?vs_currency=' + vs_currency + '&days=' + dias + '&precision=' + precisao
# verificar o estado do servidor API
def ping() -> tuple:
endpoint_api = 'ping'
url_pedido = url_raiz_API + endpoint_api
resposta = requests.get(url_pedido, headers=headers)
return resposta.status_code, resposta.json()['gecko_says']
# debug
# codigo, dados = ping()
# print(f'codigo: {codigo}')
# print(f'resposta: {dados}')
# fazer consulta de dados OHLC
def consulta_ohcl(criptomoeda: str, vs_currency: str = 'eur', dias: int | str = 30, precisao: int | str = 3) -> tuple:
# validacao de parametros
if not isinstance(criptomoeda, str):
raise ValueError('\'criptomoeda\' não é do tipo \'str\'')
if not isinstance(vs_currency, str):
raise ValueError('\'vs_currency\' não é do tipo \'str\'')
if (not isinstance(dias, str)) and (not isinstance(dias, int)):
raise ValueError('\'dias\' não é do tipo \'str\' ou \'int\'')
if isinstance(dias, int):
dias = str(dias)
if (not isinstance(precisao, str)) and (not isinstance(precisao, int)):
raise ValueError('\'precisao\' não é do tipo \'str\' ou \'int\'')
if isinstance(precisao, int):
precisao = str(precisao)
endpoint_api = 'coins/' + criptomoeda + '/ohlc?vs_currency=' + vs_currency + '&days=' + dias + '&precision=' + precisao
url_pedido = url_raiz_API + endpoint_api
resposta = requests.get(url_pedido, headers=headers)
return resposta.status_code, resposta.json()
# debug
# codigo, dados = consulta_ohcl('bitcoin')
# print(f'codigo: {codigo}')
# for item in dados:
# print(item)