code: def get_data_from_remote(symbol, interval, start, end):
      error_msg = f"{symbol}-{interval}-{start}-{end}"
      try:
          cg = CoinGeckoAPI()
          data = cg.get_coin_market_chart_by_id(
              id=symbol, vs_currency="usd", days="max"
          )
          _resp = pd.DataFrame(columns=["date"] + list(data.keys()))
          _resp["date"] = [
              dt.fromtimestamp(mktime(time.localtime(x[0] / 1000)))
              for x in data["prices"]
          ]
          for key in data.keys():
              _resp[key] = [x[1] for x in data[key]]
          _resp["date"] = pd.to_datetime(_resp["date"])
          _resp["date"] = [x.date() for x in _resp["date"]]
          _resp = _resp[
              (_resp["date"] < pd.to_datetime(end).date())
              & (_resp["date"] > pd.to_datetime(start).date())
          ]
          if _resp.shape[0] != 0:
              _resp = _resp.reset_index()
          if isinstance(_resp, pd.DataFrame):
              return _resp.reset_index()
      except Exception as e:
          logger.warning(f"{error_msg}:{e}")
  
imports: import abc
  import sys
  import datetime
  from abc import ABC
  from pathlib import Path
  import fire
  import pandas
  from loguru import logger
  from dateutil.tz import tzlocal
  from data_collector.base import BaseCollector, BaseNormalize, BaseRun
  from data_collector.utils import deco_retry
  from pycoingecko import CoinGeckoAPI
  from time import mktime
  from datetime import datetime
  import time
label_desc: Use image node_id 5 for calling the CryptoCollector obj's underlying member method code with example usage: obj.get_data_from_remote(symbol, interval, start, end) and returns: _resp