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