v0.1.0
This commit is contained in:
72
backend/python/miindicador.py
Normal file
72
backend/python/miindicador.py
Normal file
@ -0,0 +1,72 @@
|
||||
import argparse
|
||||
import httpx
|
||||
import json
|
||||
import datetime
|
||||
|
||||
|
||||
class MiIndicador:
|
||||
def __init__(self, base_url: str = None):
|
||||
if base_url is None:
|
||||
base_url = 'https://mindicador.cl/api'
|
||||
self.base_url = base_url
|
||||
|
||||
def __build_url(self, sub_url: str, query: str = ''):
|
||||
sub = sub_url
|
||||
if query != '':
|
||||
sub = '?'.join([
|
||||
sub,
|
||||
query
|
||||
])
|
||||
url = '/'.join([
|
||||
self.base_url,
|
||||
sub
|
||||
])
|
||||
return url
|
||||
|
||||
def __get(self, url: str):
|
||||
resp = httpx.get(url)
|
||||
if resp.status_code != httpx.codes.OK:
|
||||
raise Exception(resp.reason_phrase)
|
||||
return json.loads(resp.text)
|
||||
|
||||
def list(self):
|
||||
url = self.__build_url('')
|
||||
return self.__get(url)
|
||||
|
||||
def get(self, indicador: str, fecha: str = None):
|
||||
url = indicador
|
||||
if fecha is not None:
|
||||
url = '/'.join([url, fecha])
|
||||
url = self.__build_url(url)
|
||||
res = self.__get(url)
|
||||
for i, item in enumerate(res['serie']):
|
||||
res['serie'][i]['fecha'] = datetime.datetime.fromisoformat(item['fecha'].replace('T', ' ').replace('Z', ''))\
|
||||
.strftime('%Y-%m-%d')
|
||||
return res
|
||||
|
||||
def historical(self, indicador: str, since: str = None):
|
||||
sub = indicador
|
||||
if since is not None:
|
||||
sub = '/'.join([sub, since])
|
||||
url = self.__build_url(sub)
|
||||
res = self.__get(url)
|
||||
for i, item in enumerate(res['serie']):
|
||||
res['serie'][i]['fecha'] = datetime.datetime.fromisoformat(item['fecha'].replace('T', ' ').replace('Z', ''))\
|
||||
.strftime('%Y-%m-%d')
|
||||
return res
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-u', '--url')
|
||||
parser.add_argument('-i', '--indicador')
|
||||
hist = parser.add_subparsers()
|
||||
hparser = hist.add_parser('hist')
|
||||
hparser.add_argument('-hi', '--historical', action='store_true')
|
||||
hparser.add_argument('-s', '--since')
|
||||
args = parser.parse_args()
|
||||
mi = MiIndicador(args.url)
|
||||
if 'historical' in args and args.historical:
|
||||
print(mi.historical(args.indicador, args.since))
|
||||
exit()
|
||||
print(mi.get(args.indicador))
|
Reference in New Issue
Block a user