import dataclasses import datetime import email.utils import json from frozendict import frozendict import logging from collections.abc import Iterator, Mapping from decimal import Decimal from frozendict import frozendict from personal_data.data import DeduplicateMode, Scraper from .. import secrets import kucoin.client logger = logging.getLogger(__name__) HOSTNAME = 'api.kucoin.com' URL_ACCOUNTS = 'https://{hostname}/api/v1/accounts' # TODO: Move these into secrets! client = kucoin.client.Client( secrets.KUCOIN_KEY, secrets.KUCOIN_SECRET, secrets.KUCOIN_PASS, ) @dataclasses.dataclass(frozen=True) class KucoinAccountBalances(Scraper): dataset_name = 'defi_kucoin_balance' deduplicate_mode = DeduplicateMode.ONLY_LATEST deduplicate_ignore_columns = ['account.update_time'] def scrape(self) -> Iterator[Mapping[str, object]]: time = datetime.datetime.now() for account in client.get_accounts(): print(account) data_point = { 'account.id': account['id'], 'account.currency': account['currency'], 'account.type': account['type'], 'account.balance': account['balance'], 'account.update_time': time, } yield frozendict(data_point)