# 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} ) print(posted_id) response.close() # Fin de insert
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"] duration = item["duration"]["nombre"] moneda = item["moneda"]["codigoCafci"] esEsco = general.IsEsco(gerente_nom) _id = item["id"] posted_id = mongo_db.insert({"_id":_id, "nombre": nombre, "gerente":gerente, "plazo": plazo, "fechaInicio": fechaInicio, "depositaria": depositaria, "tipoRenta": tipoRenta, "horizonte": horizonte, "tipoFondo": tipoFondo, "duration": duration, "moneda": moneda, "esESCO": esEsco} ) print(posted_id) response.close() # Fin de insert
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"] fecha = datetime.strptime(data_converted["Cabecera"]["FechaReporte"], '%d-%m-%Y').strftime('%m-%d-%Y') patrimonio = data_converted["Pie"]["PieValor"].replace(',','') esEsco = general.IsEsco(cabecera["SGNombre"]) posted_id = mongo_db.insert({"_id": counter, "data": cabecera, "fecha": datetime.strptime(fecha,'%m-%d-%Y'), "patrimonio": Decimal(patrimonio), "esESCO": esEsco}) counter = counter + 1 print(counter) response.close() # Fin de insert
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"))}')