diff --git a/api.py b/api.py index aec738b..f37bbea 100644 --- a/api.py +++ b/api.py @@ -31,40 +31,10 @@ def decorated_function(*args, **kwargs): @require_api_key def get_generic(): return { - '/ticker/fundamentals/TICKER.sa':'Fundamentals (quarterly)', - '/ticker/cashflow/TICKER.sa':'Cashflow (quarterly)', - '/ticker/TICKER.sa':'Basic info about TICKSER.sa', '/genai/resume_market':'Resume market', '/genai/resume_ticker/TICKER.sa':'Basic info about TICKSER.sa', }, 200 -@api.route('/ticker/') -@cross_origin() -@require_api_key -def get_show(name): - result = mainprices.ShowMarket.show_ticker(name) - if result: - return result, 200 - return {'message':'not found'}, 404 - -@api.route('/ticker/fundamentals/') -@cross_origin() -@require_api_key -def get_fundamentals_show(name): - result = mainprices.ShowMarket.fundamentals_ticker(name) - if result: - return result, 200 - return {'message':'not found'}, 404 - -@api.route('/ticker/cashflow/') -@cross_origin() -@require_api_key -def get_cashflow_show(name): - result = mainprices.ShowMarket.cashflow_ticker(name) - if result: - return result, 200 - return {'message':'not found'}, 404 - @api.route('/genai/resume_market') @cross_origin() @@ -120,5 +90,25 @@ def brapi_sync_quote_list_show(): return jsonify(result), 200 return {'message':'not found'}, 404 +@api.route('/brapi/sync_quote_by_sector/') +@cross_origin() +@require_api_key +def brapi_sync_quote_by_sector_show(sector): + result = brapi.Brapi.get_sync_stock_data_list_by_sector(sector) + if result: + return jsonify(result), 200 + return {'message':'not found'}, 404 + + +@api.route('/brapi/sync_quote_list_sectors') +@cross_origin() +@require_api_key +def brapi_sync_quote_list_sectors_show(): + result = brapi.Brapi.get_available_sectors_list() + if result: + return jsonify(result), 200 + return {'message':'not found'}, 404 + + if __name__ == '__main__': api.run(port=5000, debug=True) diff --git a/controllers/brapi.py b/controllers/brapi.py index 0e8e520..f400c31 100644 --- a/controllers/brapi.py +++ b/controllers/brapi.py @@ -78,5 +78,23 @@ def get_sync_stock_data_list(): data_results = [result.dict() for result in data.results] return data_results + + @staticmethod + def get_available_sectors_list(): + data = sync_brapi.quote.list(sector="utilities", sort_by="volume", sort_order="desc", limit=10) + + # Convert response to dict and extract sectors array + payload = data.dict() if hasattr(data, 'dict') else data + sectors_array = payload.get("availableSectors", []) + return sectors_array + + @staticmethod + def get_sync_stock_data_list_by_sector(sector): + data = sync_brapi.quote.list(sector=sector, sort_by="volume", sort_order="desc", limit=10) + # Convert response to dict and extract stocks array + payload = data.dict() if hasattr(data, 'dict') else data + stocks_array = payload.get("stocks", []) + + return stocks_array diff --git a/requirements.txt b/requirements.txt index e776251..5ba1271 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,65 +1,11 @@ -annotated-types==0.7.0 -appdirs==1.4.4 -beautifulsoup4==4.12.3 -cachetools==5.3.3 -certifi==2021.10.8 -charset-normalizer==2.0.10 -click==8.0.3 -Flask==2.0.2 -Flask-Cors==4.0.0 -frozendict==2.4.4 -gevent==23.9.1 -google-ai-generativelanguage==0.6.4 -google-api-core==2.19.0 -google-api-python-client==2.132.0 -google-auth==2.29.0 -google-auth-httplib2==0.2.0 -google-generativeai==0.6.0 -googleapis-common-protos==1.63.1 -greenlet==3.0.3 -grpcio==1.64.1 -grpcio-status==1.62.2 -gunicorn==21.0.1 -html5lib==1.1 -httplib2==0.22.0 -idna==3.3 -importlib-metadata==4.10.1 -itsdangerous==2.0.1 -Jinja2==3.0.3 -kaleido==0.2.1 -#lxml==4.9.1 -marko==2.0.3 -MarkupSafe==2.0.1 -multitasking==0.0.10 -numpy==1.26.4 -packaging==24.0 -pandas==2.2.2 -peewee==3.17.5 -plotly==5.22.0 -proto-plus==1.23.0 -protobuf==4.25.3 -pyasn1==0.6.0 -pyasn1-modules==0.4.0 -pydantic==2.7.3 -pydantic-core==2.18.4 -pyparsing==3.1.2 -python-dateutil==2.8.2 -python-dotenv==1.0.1 -pytz==2022.5 -requests==2.31.0 -rsa==4.9 -six==1.16.0 -soupsieve==2.5 -tenacity==8.5.0 -tqdm==4.66.4 -typing-extensions==4.12.1 -tzdata==2024.1 -uritemplate==4.1.1 -urllib3==1.26.8 -webencodings==0.5.1 -Werkzeug==2.0.2 -yfinance==0.2.37 -zipp==3.7.0 -zope.event==5.0 -zope.interface==6.4.post2 -brapi==1.0.0 +Flask +Flask-Cors +python-dotenv +pandas +yfinance +marko +brapi +google-generativeai +plotly +requests +gunicorn