Spaces:
Runtime error
Runtime error
Upload 9 files
Browse files- LICENSE +21 -0
- README.md +6 -9
- assets/images/huggingface_streamlit_space_creation_vnstock_learn-anything-thinhvu.png +0 -0
- assets/images/streamlit_cloud_deploy_from_github_repo.png +0 -0
- assets/images/streamlit_cloud_setup_new_repo_thinhvu_vnstock_learn-anything.png +0 -0
- assets/images/thinhvu_momo_qr.png +0 -0
- gw_config.json +0 -0
- main.py +91 -0
- requirements.txt +3 -0
LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2024 mrthinh
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
README.md
CHANGED
@@ -1,13 +1,10 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
colorTo: blue
|
6 |
sdk: streamlit
|
7 |
sdk_version: 1.32.2
|
8 |
-
app_file: app.py
|
9 |
pinned: false
|
10 |
license: mit
|
11 |
-
|
12 |
-
|
13 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
1 |
+
title: Vnstock Streamlit App Template
|
2 |
+
emoji: ⚡
|
3 |
+
colorFrom: green
|
4 |
+
colorTo: purple
|
|
|
5 |
sdk: streamlit
|
6 |
sdk_version: 1.32.2
|
|
|
7 |
pinned: false
|
8 |
license: mit
|
9 |
+
short_description: Template Streamlit App for beginners
|
10 |
+
app_file: main.py
|
|
assets/images/huggingface_streamlit_space_creation_vnstock_learn-anything-thinhvu.png
ADDED
assets/images/streamlit_cloud_deploy_from_github_repo.png
ADDED
assets/images/streamlit_cloud_setup_new_repo_thinhvu_vnstock_learn-anything.png
ADDED
assets/images/thinhvu_momo_qr.png
ADDED
gw_config.json
ADDED
File without changes
|
main.py
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import json
|
3 |
+
from pygwalker.api.streamlit import StreamlitRenderer, init_streamlit_comm
|
4 |
+
from vnstock import *
|
5 |
+
|
6 |
+
# start with wide mode
|
7 |
+
st.set_page_config(layout="wide")
|
8 |
+
|
9 |
+
st.image('https://vnstock.site/wp-content/uploads/2023/07/vnstock-logo-120x60.jpg', width=120)
|
10 |
+
st.header("Thư viện mẫu Streamlit Web App cho người mới bắt đầu")
|
11 |
+
|
12 |
+
# Create 3 tabs
|
13 |
+
screener, help, credit = st.tabs(["Bộ lọc cổ phiếu", "Hướng dẫn", "Giới thiệu"])
|
14 |
+
|
15 |
+
|
16 |
+
default_query = {"exchangeName": "HOSE,HNX,UPCOM",
|
17 |
+
"marketCap": (100, 1000)}
|
18 |
+
|
19 |
+
@st.cache_data
|
20 |
+
def tcbs_screener(query, limit=1700):
|
21 |
+
screener_df = stock_screening_insights (query, size=limit, drop_lang='en')
|
22 |
+
return screener_df
|
23 |
+
|
24 |
+
def pygwalker_part (df):
|
25 |
+
# Initialize pygwalker communication
|
26 |
+
init_streamlit_comm()
|
27 |
+
renderer = StreamlitRenderer(df, spec="./gw_config.json", debug=False)
|
28 |
+
renderer.render_explore()
|
29 |
+
|
30 |
+
# Define the content of each tab
|
31 |
+
with screener:
|
32 |
+
st.markdown("## Bộ lọc cổ phiếu")
|
33 |
+
|
34 |
+
# define 3 columns with equally width
|
35 |
+
col1, col2, col3 = st.columns([1.5, 1, 1])
|
36 |
+
with col1:
|
37 |
+
# allow user to select exchange from HOSE, HNX, UPCOM
|
38 |
+
exchange = st.multiselect("Sàn giao dịch", ["HOSE", "HNX", "UPCOM"], default=["HOSE", "HNX", "UPCOM"])
|
39 |
+
with col2:
|
40 |
+
# allow user to input market cap range
|
41 |
+
market_cap = st.slider("Vốn hóa thị trường", 0, 10000, (100, 1000))
|
42 |
+
with col3:
|
43 |
+
# show a number input to define the limit of the result
|
44 |
+
limit = st.number_input("Số lượng cổ phiếu tối đa", min_value=10, max_value=2000, value=1700)
|
45 |
+
|
46 |
+
# update the query with the user input
|
47 |
+
query = {"exchangeName": ",".join(exchange),
|
48 |
+
"marketCap": market_cap}
|
49 |
+
# call the function to get the result
|
50 |
+
screener_df = tcbs_screener(query, limit)
|
51 |
+
# show the result in a table
|
52 |
+
st.write(screener_df)
|
53 |
+
|
54 |
+
st.markdown('## Khám phá')
|
55 |
+
pygwalker_part (screener_df)
|
56 |
+
|
57 |
+
|
58 |
+
|
59 |
+
|
60 |
+
with help:
|
61 |
+
st.markdown("## Hướng dẫn")
|
62 |
+
help_details = """
|
63 |
+
## Sử dụng Streamlit Cloud
|
64 |
+
1. Tạo Github repository bằng cách folk repo này trên Github hoặc tạo mới một repo và copy toàn bộ nội dung trong thư mục repo này vào.
|
65 |
+
2. Truy cập Streamlit Cloud (cần đăng ký mới nếu chưa có tài khoản tại: https://share.streamlit.io). Bạn có thể đăng nhập bằng tài khoản Github hiện có.
|
66 |
+
3. Tạo ứng dụng mới trên Streamlit Share bằng cách chọn New app > Use existing repo và chọn repo bạn chuẩn bị sẵn trên Github
|
67 |
+
![](./assets/images/streamlit_cloud_setup_new_repo_thinhvu_vnstock_learn-anything.png)
|
68 |
+
## Sử dụng Hugging Face Spaces
|
69 |
+
1. Tạo tài khoản Hugging Face tại: https://huggingface.co
|
70 |
+
2. Truy cập Hugging Face Spaces tại: https://huggingface.co/new-space để tạo một không gian mới
|
71 |
+
3. Đặt tên url cho không gian của bạn, ví dụ `vnstock-app`
|
72 |
+
4. Chọn Space SDK là Streamlit
|
73 |
+
5. Chọn chế độ chia sẻ công khai (Public) hay riêng tư (Private)
|
74 |
+
6. Chọn Create Space để hoàn tất.
|
75 |
+
7. Truy cập tab `Files` và chọn nút (button) `Upload files` để tải lên toàn bộ nội dung trong thư mục repo này.
|
76 |
+
"""
|
77 |
+
st.markdown(help_details)
|
78 |
+
|
79 |
+
with credit:
|
80 |
+
credit_details = """
|
81 |
+
## Giới thiệu
|
82 |
+
|
83 |
+
Đây là mẫu Web App đơn giản minh họa cho người mới làm quen với việc xây dựng Data app trên nền tảng Web bằng streamlit trong Python.
|
84 |
+
|
85 |
+
## Tác giả
|
86 |
+
* Tác giả: [Thinh Vu](https://thinhvu.com) @ vnstock.site
|
87 |
+
* Email: support@vnstock.site
|
88 |
+
* Website: [vnstock.site](https://vnstock.site)
|
89 |
+
* Bạn có thể gửi tặng tác giả Cafe qua QR thay lời cảm ơn. Chi tiết [tại đây](https://docs.vnstock.site/community/tai-tro-du-an-vnstock/)
|
90 |
+
"""
|
91 |
+
st.markdown(credit_details)
|
requirements.txt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
vnstock
|
2 |
+
streamlit
|
3 |
+
pygwalker
|