neurostats-API 0.0.4__py3-none-any.whl → 0.0.6__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- neurostats_API/__init__.py +1 -1
- neurostats_API/fetchers/base.py +2 -5
- neurostats_API/fetchers/finance_overview.py +2 -2
- neurostats_API/fetchers/tech.py +2 -3
- neurostats_API/fetchers/value_invest.py +2 -2
- neurostats_API/utils/__init__.py +1 -1
- neurostats_API/utils/db_client.py +11 -5
- neurostats_API/utils/fetcher.py +2 -3
- {neurostats_API-0.0.4.dist-info → neurostats_API-0.0.6.dist-info}/METADATA +16 -11
- {neurostats_API-0.0.4.dist-info → neurostats_API-0.0.6.dist-info}/RECORD +12 -12
- {neurostats_API-0.0.4.dist-info → neurostats_API-0.0.6.dist-info}/WHEEL +0 -0
- {neurostats_API-0.0.4.dist-info → neurostats_API-0.0.6.dist-info}/top_level.txt +0 -0
neurostats_API/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__='0.0.
|
1
|
+
__version__='0.0.6'
|
neurostats_API/fetchers/base.py
CHANGED
@@ -5,14 +5,11 @@ import pytz
|
|
5
5
|
from datetime import datetime, timedelta, date
|
6
6
|
from ..utils import StatsDateTime, StatsProcessor
|
7
7
|
import yaml
|
8
|
-
from ..utils import shared_client
|
9
|
-
|
10
8
|
|
11
9
|
class StatsFetcher:
|
12
|
-
|
13
|
-
def __init__(self, ticker):
|
10
|
+
def __init__(self, ticker, db_client):
|
14
11
|
self.ticker = ticker
|
15
|
-
self.db =
|
12
|
+
self.db = db_client[
|
16
13
|
"company"] # Replace with your database name
|
17
14
|
self.collection = self.db["twse_stats"]
|
18
15
|
|
@@ -11,8 +11,8 @@ class FinanceOverviewFetcher(StatsFetcher):
|
|
11
11
|
對應iFa.ai -> 財務分析 -> 重要指標(finance_overview)
|
12
12
|
"""
|
13
13
|
|
14
|
-
def __init__(self, ticker):
|
15
|
-
super().__init__(ticker)
|
14
|
+
def __init__(self, ticker, db_client):
|
15
|
+
super().__init__(ticker, db_client)
|
16
16
|
|
17
17
|
self.target_fields = StatsProcessor.load_yaml("finance_overview_dict.yaml")
|
18
18
|
self.inverse_dict = StatsProcessor.load_txt("seasonal_data_field_dict.txt", json_load=True)
|
neurostats_API/fetchers/tech.py
CHANGED
@@ -3,9 +3,8 @@ import pandas as pd
|
|
3
3
|
|
4
4
|
class TechFetcher(StatsFetcher):
|
5
5
|
|
6
|
-
def __init__(self, ticker:str):
|
7
|
-
super().__init__()
|
8
|
-
self.ticker = ticker
|
6
|
+
def __init__(self, ticker:str, db_client):
|
7
|
+
super().__init__(ticker, db_client)
|
9
8
|
self.full_ohlcv = self._get_ohlcv()
|
10
9
|
self.basic_indexes = ['SMA5', 'SMA20', 'SMA60', 'EMA5', 'EMA20',
|
11
10
|
'EMA40', 'EMA12', 'EMA26', 'RSI7', 'RSI14',
|
@@ -6,8 +6,8 @@ from ..utils import StatsDateTime, StatsProcessor
|
|
6
6
|
|
7
7
|
class ValueFetcher(StatsFetcher):
|
8
8
|
|
9
|
-
def __init__(self, ticker: str):
|
10
|
-
super().__init__(ticker)
|
9
|
+
def __init__(self, ticker: str, db_client):
|
10
|
+
super().__init__(ticker, db_client)
|
11
11
|
|
12
12
|
def prepare_query(self, start_date, end_date):
|
13
13
|
pipeline = super().prepare_query()
|
neurostats_API/utils/__init__.py
CHANGED
@@ -2,9 +2,15 @@ import os
|
|
2
2
|
from pymongo import MongoClient
|
3
3
|
from dotenv import load_dotenv
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
class DBClient:
|
6
|
+
def __init__(self, mongo_uri):
|
7
|
+
"""初始化時接收 MongoDB 連接 URI"""
|
8
|
+
self.client = MongoClient(mongo_uri)
|
9
|
+
self.db = self.client["twse_company"]
|
10
|
+
|
11
|
+
def get_client(self):
|
12
|
+
return self.client
|
7
13
|
|
8
|
-
|
9
|
-
|
10
|
-
|
14
|
+
def get_collection(self, collection_name):
|
15
|
+
"""返回指定名稱的集合"""
|
16
|
+
return self.db[collection_name]
|
neurostats_API/utils/fetcher.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
from .db_client import shared_client
|
2
1
|
import pandas as pd
|
3
2
|
import json
|
4
3
|
import pytz
|
@@ -9,8 +8,8 @@ import yaml
|
|
9
8
|
|
10
9
|
class StatsFetcher:
|
11
10
|
|
12
|
-
def __init__(self):
|
13
|
-
self.db =
|
11
|
+
def __init__(self, db_client):
|
12
|
+
self.db = db_client["company"] # Replace with your database name
|
14
13
|
self.collection = self.db["twse_stats"]
|
15
14
|
|
16
15
|
self.timezone = pytz.timezone("Asia/Taipei")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: neurostats-API
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.6
|
4
4
|
Summary: The service of NeuroStats website
|
5
5
|
Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
|
6
6
|
Author: JasonWang@Neurowatt
|
@@ -118,9 +118,10 @@ data = stats_fetcher.query_data()
|
|
118
118
|
|
119
119
|
### 回傳月營收表
|
120
120
|
``` Python
|
121
|
-
from neurostats_API.utils import StatsFetcher
|
121
|
+
from neurostats_API.utils import StatsFetcher, DBClient
|
122
|
+
db_client = DBClient("<連接的DB位置>").get_client()
|
122
123
|
ticker = 2330 # 換成tw50內任意ticker
|
123
|
-
fetcher = StatsFetcher()
|
124
|
+
fetcher = StatsFetcher(db_client)
|
124
125
|
data = stats_fetcher.get_month_revenue_sheet(ticker)
|
125
126
|
```
|
126
127
|
|
@@ -170,9 +171,10 @@ YoY_10 None None ... None None
|
|
170
171
|
### 財務分析: 重要指標
|
171
172
|
對應https://ifa.ai/tw-stock/2330/finance-overview
|
172
173
|
```Python
|
173
|
-
from neurostats_API.
|
174
|
+
from neurostats_API.utils import StatsFetcher, DBClient
|
175
|
+
db_client = DBClient("<連接的DB位置>").get_client()
|
174
176
|
ticker = "2330"
|
175
|
-
fetcher = FinanceOverviewFetcher(ticker = "2330")
|
177
|
+
fetcher = FinanceOverviewFetcher(ticker = "2330", db_client = db_client)
|
176
178
|
data = fetcher.query_data()
|
177
179
|
```
|
178
180
|
|
@@ -253,8 +255,9 @@ markdown
|
|
253
255
|
|
254
256
|
### 損益表
|
255
257
|
```Python
|
256
|
-
from neurostats_API.utils import StatsFetcher
|
257
|
-
|
258
|
+
from neurostats_API.utils import StatsFetcher, DBClient
|
259
|
+
db_client = DBClient("<連接的DB位置>").get_client()
|
260
|
+
fetcher = StatsFetcher(db_client)
|
258
261
|
ticker = 2330 # 換成tw50內任意ticker
|
259
262
|
data = fetcher.get_profit_lose(ticker)
|
260
263
|
```
|
@@ -301,8 +304,9 @@ data = fetcher.get_profit_lose(ticker)
|
|
301
304
|
|
302
305
|
### 資產負債表
|
303
306
|
``` Python
|
304
|
-
from neurostats_API.utils import StatsFetcher
|
305
|
-
|
307
|
+
from neurostats_API.utils import StatsFetcher, DBClient
|
308
|
+
db_client = DBClient("<連接的DB位置>").get_client()
|
309
|
+
fetcher = StatsFetcher(db_client)
|
306
310
|
ticker = 2330 # 換成tw50內任意ticker
|
307
311
|
stats_fetcher.get_balance_sheet(ticker)
|
308
312
|
```
|
@@ -360,8 +364,9 @@ equity 1.094370e+09 53.3 ... 3.390706e+09 56.68
|
|
360
364
|
|
361
365
|
### 現金流量表
|
362
366
|
``` Python
|
363
|
-
from neurostats_API.utils import StatsFetcher
|
364
|
-
|
367
|
+
from neurostats_API.utils import StatsFetcher, DBClient
|
368
|
+
db_client = DBClient("<連接的DB位置>").get_client()
|
369
|
+
fetcher = StatsFetcher(db_client)
|
365
370
|
ticker = 2330 # 換成tw50內任意ticker
|
366
371
|
stats_fetcher.get_cash_flow(ticker)
|
367
372
|
```
|
@@ -1,23 +1,23 @@
|
|
1
|
-
neurostats_API/__init__.py,sha256=
|
1
|
+
neurostats_API/__init__.py,sha256=zzMTjJY407ibU6_ATOPO8KibRVB3tyW9yO0tRYzjTqw,19
|
2
2
|
neurostats_API/cli.py,sha256=UJSWLIw03P24p-gkBb6JSEI5dW5U12UvLf1L8HjQD-o,873
|
3
3
|
neurostats_API/main.py,sha256=QcsfmWivg2Dnqw3MTJWiI0QvEiRs0VuH-BjwQHFCv00,677
|
4
4
|
neurostats_API/fetchers/__init__.py,sha256=k-pPWen3gQNr6d6DPFEXP1Q6SPC6TGIuIFf8w6r75YQ,137
|
5
5
|
neurostats_API/fetchers/balance_sheet.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
neurostats_API/fetchers/base.py,sha256=
|
7
|
-
neurostats_API/fetchers/finance_overview.py,sha256=
|
6
|
+
neurostats_API/fetchers/base.py,sha256=NW2SFzrimyAIrdJx1LVmTazelyZOAtcj54kJKHc4Vaw,1662
|
7
|
+
neurostats_API/fetchers/finance_overview.py,sha256=_w5OzFQpzC7eL_S5iMtgrIhx5gcov9gKzc6XzFutEFU,18309
|
8
8
|
neurostats_API/fetchers/month_revenue.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
neurostats_API/fetchers/profit_lose.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
neurostats_API/fetchers/tech.py,sha256=
|
11
|
-
neurostats_API/fetchers/value_invest.py,sha256=
|
10
|
+
neurostats_API/fetchers/tech.py,sha256=wH1kkqiETQhF0HAhk-UIiucnZ3EiL85Q-yMWCcVOiFM,11395
|
11
|
+
neurostats_API/fetchers/value_invest.py,sha256=tg8yELbVnTFTEclrwgXnCRW377KkcoLiP-Gk2pyM-9Y,2886
|
12
12
|
neurostats_API/tools/finance_overview_dict.yaml,sha256=Vvf8bv23NwJP8Yyw8DPS8c0_jjT_Wctnnz51SHS4AeI,2335
|
13
13
|
neurostats_API/tools/profit_lose.yaml,sha256=f8balMTcK9elMW0k1PtbZ_6kEobTQ51fcBzqpbMObkk,2086
|
14
14
|
neurostats_API/tools/seasonal_data_field_dict.txt,sha256=KlIIdTTdbvUd9TSDE9-gpzk2jt2ck_LdisX8cnrWMD4,7869
|
15
|
-
neurostats_API/utils/__init__.py,sha256=
|
15
|
+
neurostats_API/utils/__init__.py,sha256=FTYKRFzW2XVXdnSHXnS3mQQaHlKF9xGqrMsgZZ2kroc,142
|
16
16
|
neurostats_API/utils/data_process.py,sha256=AeDWS9eHlHRqzfDKph-14GXERtHLSMKijsIrzZ0pPPo,595
|
17
17
|
neurostats_API/utils/datetime.py,sha256=I9CIgZdE5OMzUciOS5wvapOVEIrXG_0Qb6iDKfIod6c,574
|
18
|
-
neurostats_API/utils/db_client.py,sha256=
|
19
|
-
neurostats_API/utils/fetcher.py,sha256=
|
20
|
-
neurostats_API-0.0.
|
21
|
-
neurostats_API-0.0.
|
22
|
-
neurostats_API-0.0.
|
23
|
-
neurostats_API-0.0.
|
18
|
+
neurostats_API/utils/db_client.py,sha256=OYe6yazcR4Aa6jYmy47JrryUeh2NnKGqY2K_lSZe6i8,455
|
19
|
+
neurostats_API/utils/fetcher.py,sha256=VbrUhjA-GG5AyjPX2SHtFIbZM4dm3jo0RgZzuCbb_Io,40927
|
20
|
+
neurostats_API-0.0.6.dist-info/METADATA,sha256=cOomXaKrsCOt1V9ZRTuPgfLCzdWnw0fzWd7PkGKlo8U,20666
|
21
|
+
neurostats_API-0.0.6.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
|
22
|
+
neurostats_API-0.0.6.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
|
23
|
+
neurostats_API-0.0.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|