38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from .data import DepoSingle, DepoGroup
|
|
import dataclasses
|
|
import datetime
|
|
import fin_defs
|
|
import logging
|
|
from collections.abc import Iterator, Mapping
|
|
from decimal import Decimal
|
|
|
|
import kucoin.client
|
|
from frozendict import frozendict
|
|
|
|
from personal_data.data import DeduplicateMode, Scraper
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class KucoinDepoFetcher:
|
|
|
|
def __init__(self, kucoin_key: str, kucoin_secret: str, kucoin_pass: str):
|
|
self.client = kucoin.client.Client(
|
|
kucoin_key,
|
|
kucoin_secret,
|
|
kucoin_pass,
|
|
)
|
|
|
|
def get_depo(self) -> DepoGroup:
|
|
now = datetime.datetime.now(tz=datetime.UTC)
|
|
assets_by_account_type: dict[str, dict[fin_defs.Asset, Decimal]] = {}
|
|
for account_data in self.client.get_accounts():
|
|
asset = fin_defs.WELL_KNOWN_SYMBOLS[account_data['currency']]
|
|
balance = Decimal( account_data['balance'])
|
|
assets_for_account_type = assets_by_account_type.get(account_data['type'], {})
|
|
assets_for_account_type[asset] = assets_for_account_type.get(asset, Decimal(0)) +balance
|
|
del account_data, asset, balance
|
|
return DepoGroup("Kucoin", now, [
|
|
DepoSingle("Kucoin " + account_type, now, assets) for account_type,
|
|
assets in assets_by_account_type.items()
|
|
])
|