FA3-Datafetch/backend/app/fetchers/jp_fetcher.py
2026-01-11 21:33:47 +08:00

57 lines
2.1 KiB
Python

import pandas as pd
from .base import DataFetcher
from app.clients.ifind_int_client import IFindIntClient
class JpFetcher(DataFetcher):
"""
Japan Market Fetcher using iFinD International Client.
"""
def __init__(self, api_key: str):
super().__init__(api_key)
self.data_source = 'iFinD'
self.client = IFindIntClient(api_key, 'JP')
def _get_ifind_code(self, symbol: str) -> str:
# Simple logic: if pure digits, append .T (Tokyo SE).
# Otherwise assume it's already a code or handled.
if symbol.isdigit():
return f"{symbol}.T"
return symbol
def _fetch_basic_info(self, symbol: str):
code = self._get_ifind_code(symbol)
return self.client._fetch_basic_info(symbol, code)
def get_income_statement(self, symbol: str) -> pd.DataFrame:
code = self._get_ifind_code(symbol)
return self.client.get_income_statement(symbol, code)
def get_balance_sheet(self, symbol: str) -> pd.DataFrame:
code = self._get_ifind_code(symbol)
return self.client.get_balance_sheet(symbol, code)
def get_cash_flow(self, symbol: str) -> pd.DataFrame:
code = self._get_ifind_code(symbol)
return self.client.get_cash_flow(symbol, code)
def get_market_metrics(self, symbol: str) -> dict:
code = self._get_ifind_code(symbol)
return self.client.get_market_metrics(symbol, code)
def get_dividends(self, symbol: str) -> pd.DataFrame:
code = self._get_ifind_code(symbol)
return self.client.get_dividends(symbol, code)
def get_repurchases(self, symbol: str) -> pd.DataFrame:
code = self._get_ifind_code(symbol)
return self.client.get_repurchases(symbol, code)
def get_employee_count(self, symbol: str) -> pd.DataFrame:
code = self._get_ifind_code(symbol)
return self.client.get_employee_count(symbol, code)
def get_financial_ratios(self, symbol: str) -> pd.DataFrame:
code = self._get_ifind_code(symbol)
return self.client.get_financial_ratios(symbol, code)