Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 20 additions & 30 deletions api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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/<string:name>')
@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/<string:name>')
@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/<string:name>')
@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()
Expand Down Expand Up @@ -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/<string: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)
18 changes: 18 additions & 0 deletions controllers/brapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
76 changes: 11 additions & 65 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -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
Loading