CocosBot
CocosBot es un paquete de Python diseñado para automatizar operaciones y obtener datos de la API del broker argentino Cocos Capital. Utiliza Playwright para interactuar con la web app.
La historia del proyecto en Medium: CocosBot
Características
- Arquitectura modular con servicios especializados
- Automatización de operaciones en la plataforma Cocos Capital
- Interceptación inteligente de endpoints de API
- Soporte para 2FA (autenticación de dos factores) utilizando cuentas de Gmail
- Sistema robusto de manejo de errores
- Tipado completo con type hints
Arquitectura
cocos_bot/
├── core/ # Componentes fundamentales
│ ├── browser.py # Abstracción de Playwright
│ ├── cocos_capital.py # Orquestador principal
│ ├── exceptions.py # Sistema de errores
├── config/ # Configuración centralizada
│ ├── constants.py # URLs y configs
│ ├── urls.py # Urls de la plataforma
│ └── selectors.py # Selectores UI
│ └── enums.py # Enums
├── utils/ # Utilidades
│ ├── validators.py # Validación
│ ├── helpers.py # Funciones auxiliares
│ ├── gmail_2fa.py # Manejo 2FA
│ └── data_transformations.py
└── services/ # Lógica de negocio
├── auth.py # Autenticación
├── market.py # Operaciones
└── user.py # Gestión de usuario
Requisitos
- Python 3.12 o superior.
- Cuenta en Cocos Capital.
- Credenciales de Gmail configuradas para autenticación 2FA.
Instalación
Instala el paquete y las dependencias ejecutando:
pip install CocosBot
Esto va a instalar automáticamente las dependencias necesarias, como playwright y beautifulsoup4.
Uso
Ejemplo básico
from CocosBot.core.cocos_capital import CocosCapital
# Configurar credenciales
username = "tu_usuario"
password = "tu_contraseña"
gmail_user = "tu_gmail@gmail.com"
gmail_app_pass = "tu_contraseña_de_aplicación"
with CocosCapital(username, password, gmail_user, gmail_app_pass, headless=False) as cocos:
cocos.login()
# Probar view accounts
cuentas = cocos.get_linked_accounts()
print("Cuentas:", cuentas)
# Probar get_orders
orders = cocos.get_orders()
print("Orders:", orders)
# Probar get_mep_value
mep_value = cocos.get_mep_value()
print("MEP Value:", mep_value)
# Probar get_ticker_info
ticker_info = cocos.get_ticker_info("AAPL", "CEDEARS")
print("Ticker Info:", ticker_info)
# Probar Create Order
order= cocos.create_order("FIPL", "BUY", 20000, 335.5 )
print("Order", order)
Métodos Disponibles
Autenticación
login() -> bool: Inicia sesión en la plataforma usando 2FA automáticologout() -> bool: Realiza el cierre de sesión seguro
Usuario y Cuenta
get_user_data() -> Dict[str, Any]: Obtiene los datos del usuarioget_account_tier() -> Dict[str, Any]: Obtiene el nivel de cuenta del usuarioget_portfolio_data() -> Dict[str, Any]: Obtiene los datos del portafoliofetch_portfolio_balance() -> float: Obtiene el balance total del portafolioget_linked_accounts(amount: float = 5000, currency: Currency = Currency.ARS) -> Dict[str, Any]: Obtiene información de cuentas vinculadasget_academy_data() -> Dict[str, Any]: Obtiene datos de la sección Academia
Mercado y Operaciones
create_order(ticker: str, operation: OrderOperation, amount: float, limit: Optional[float] = None) -> bool: Crea una ordenget_ticker_info(ticker: str, ticker_type: Union[str, MarketType], segment: str = "C") -> Dict[str, Any]: Obtiene información de un tickerget_market_schedule() -> Dict[str, Any]: Obtiene los horarios del mercadoget_orders() -> Dict[str, Any]: Obtiene las órdenes del usuarioget_mep_value() -> Dict[str, Any]: Obtiene el valor del dólar MEP
To-Do
- 2FA manual
- Tests unitarios y de integración
- Documentación adicional
Contribución
¡Contribuciones bienvenidas! Si tenés ideas o mejoras, por favor abrí un issue o crea un pull request.
Licencia
Este proyecto está licenciado bajo la Licencia MIT.
Metadata
Release files for CocosBot 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cocosbot-0.1.0.tar.gz | 14.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| CocosBot-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.6 kB
Release files / cocosbot-0.1.0.tar.gz
| Download URL | cocosbot-0.1.0.tar.gz |
|---|---|
| Size | 14.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d92f86156b6033fb249279dba4ae25728239406e32707edff06d6b5792987f68
|
|
BLAKE2b-256 checksum How to use checksums |
282178f04dec3ac801b5508a88c12bf7d59b8740aff3ef1f9db25de4112a28da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.3
|
Release files / CocosBot-0.1.0-py3-none-any.whl
| Download URL | CocosBot-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dd3a8163eabdd494e55af46f58b63f03adb368b45049f12cafa1283f72e9d6b2
|
|
BLAKE2b-256 checksum How to use checksums |
d5ae00a16566bb2a671628e81a5388a490b43d78af4265994c212f3f6d1f812d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.3
|