コード例 #1
0
ファイル: getClases.py プロジェクト: cuajoa/FCI.ar
# 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

コード例 #2
0
    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

コード例 #3
0
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
コード例 #4
0
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"))}')