Sólo se ejecuta en el Setup del proyecto. ''' import requests from common.connection import MongoDB from common.general import general # Comienzo a recolectar la info url = 'https://api.cafci.org.ar/fondo?estado=1&include=clase_fondo,entidad;gerente&limit=0' response = requests.get(url) data = response.json() if response.status_code != 200: print('Failed to get data:', response.status_code) else: mongo_db = MongoDB(collection_name = 'clases') data = data['data'] for item in data: clases = item['clase_fondos'] gerente_nom = item["gerente"]["nombre"] gerente = item["gerente"]["nombreCorto"] esEsco = general.IsEsco(gerente_nom) for clase in clases: _id = f"{clase['fondoId']}_{clase['id']}" posted_id = mongo_db.insert({"_id": _id, "fondo_id": clase["fondoId"], "clase_id": clase["id"], "tickerBloomberg" : clase["tickerBloomberg"], "nombre": clase["nombre"], "gerente": gerente, "esESCO": esEsco} )
import requests from common.connection import MongoDB from common.general import general # Comienzo a recolectar la info i = 1 url = 'https://api.cafci.org.ar/fondo?estado=1&include=entidad;depositaria,entidad;gerente,tipoRenta,moneda,horizonte,duration,tipo_fondo&limit=0&order=fondo.nombre' response = requests.get(url) data = response.json() if response.status_code != 200: print('Failed to get data:', response.status_code) else: mongo_db = MongoDB(collection_name='fondos') data = data['data'] # print(data) for item in data: gerente_nom = item["gerente"]["nombre"] nombre = item["nombre"] gerente = item["gerente"]["nombreCorto"] plazo = item['diasLiquidacion'] fechaInicio = item['inicio'] depositaria = item["depositaria"]["nombre"] tipoRenta = item["tipoRenta"]["nombre"] horizonte = item["horizonte"]["nombre"] tipoFondo = item["tipoFondo"]["nombre"]
from common.connection import MongoDB from common.general import general counter = 1270332 # 30-12-2020 # Obtengo el último ID hasta el momento en la DB y le sumo 1 collection = MongoDB.getCollection(collection_name = 'patrimonio') curs = collection.find().limit(1).sort([("_id", -1)]) for item in curs: counter = item["_id"] counter = counter + 1 # Comienzo a recolectar la info mongo_db = MongoDB(collection_name = 'patrimonio') while True: url = f'https://api.cafci.org.ar/interfaz/semanal/resumen/cartera/{str(counter)}' response = requests.get(url) data = response.json() if "error" in data: break if response.status_code != 200: print('Failed to get data:', response.status_code) else: data_converted = data['data'][0]["dataXML"] cabecera = data_converted["Cabecera"]
def getFichas(): print(f'start @ {str(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}') # Consulto los fondos para traer la ficha db_clases = MongoDB.getCollection(collection_name='clases') for item in db_clases.find(): fondo_id = item["fondo_id"] clase_id = item["clase_id"] if notExistFicha(fondo_id, clase_id): url = f'https://api.cafci.org.ar/fondo/{str(fondo_id)}/clase/{str(clase_id)}/ficha' response = requests.get(url) data = response.json() if response.status_code != 200 or "error" in data: print('Failed to get data:', response.status_code) else: data_converted = data['data'] vcp = 0 patrimonio = 0 # Recolecto info y la acomodo la información a guardar if "diaria" in data_converted["info"]: diaria = data_converted["info"]["diaria"] rendimientos = diaria["rendimientos"] fecha_data = diaria["referenceDay"] patrimonio = diaria["actual"]["patrimonio"] if patrimonio != "": patrimonio = Decimal(patrimonio) vcp = diaria["actual"]["vcpUnitario"] if vcp != "": vcp = Decimal(vcp) fecha = datetime.strptime(fecha_data, '%d/%m/%Y') if fecha == __fecha: _id = f"{fecha.strftime('%Y%m%d')}_{fondo_id}_{clase_id}" print(f'{_id} Inserted') moneda = data_converted["model"]["fondo"]["moneda"][ "codigoCafci"] tpr = data_converted["model"]["fondo"]["tipoRenta"] tipo_renta = { "id": tpr["id"], "nombre": tpr["nombre"], "codigoCafci": tpr["codigoCafci"] } nombre = data_converted["model"]["fondo"]["nombre"] tickerBloomberg = data_converted["model"][ "tickerBloomberg"] gerente = data_converted["model"]["fondo"]["gerente"][ "nombreCorto"] gerente_nom = data_converted["model"]["fondo"][ "gerente"]["nombre"] horizonte = data_converted["model"]["fondo"][ "horizonte"]["nombre"] duration = data_converted["model"]["fondo"][ "duration"]["nombre"] esEsco = general.IsEsco(gerente_nom) try: mongo_db_insert = MongoDB( collection_name='rendimientos') posted_id = mongo_db_insert.insert({ "_id": _id, "fondo_id": fondo_id, "clase_id": clase_id, "tickerBloomberg": tickerBloomberg, "fecha": fecha, "nombre": nombre, "gerente": gerente, "moneda": moneda, "vcp": vcp, "patrimonio": patrimonio, "tipo_renta": tipo_renta, "horizonte": horizonte, "duration": duration, "rendimientos": rendimientos, "esESCO": esEsco }) except Exception as e: print("Error " + _id) response.close() print(f'end @ {str(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}')