code: def fetch_raw_metadata_frame(self, api_key, page_number):
      raw = pd.read_csv(
          self._format_metadata_url(api_key, page_number),
          date_parser=pd.tseries.tools.to_datetime,
          parse_dates=[
              "oldest_available_date",
              "newest_available_date",
          ],
          dtype={
              "dataset_code": "str",
              "name": "str",
              "oldest_available_date": "str",
              "newest_available_date": "str",
          },
          usecols=[
              "dataset_code",
              "name",
              "oldest_available_date",
              "newest_available_date",
          ],
      ).rename(
          columns={
              "dataset_code": "symbol",
              "name": "asset_name",
              "oldest_available_date": "start_date",
              "newest_available_date": "end_date",
          },
      )
  
      raw["start_date"] = raw["start_date"].astype(datetime)
      raw["end_date"] = raw["end_date"].astype(datetime)
      raw["ac_date"] = raw["end_date"] + pd.Timedelta(days=1)
  
      # Filter out invalid symbols
      raw = raw[~raw.symbol.isin(self._excluded_symbols)]
  
      # cut out all the other stuff in the name column. We need to
      # escape the paren because it is actually splitting on a regex
      raw.asset_name = raw.asset_name.str.split(r" \(", 1).str.get(0)
  
      return raw
  
imports: from datetime import datetime
  import pandas
  from six.moves.urllib.parse import urlencode
  from catalyst.data.bundles.core import register_bundle
  from catalyst.data.bundles.base_pricing import BaseEquityPricingBundle
  from catalyst.utils.memoize import lazyval
  from logbook import Logger
  from catalyst.constants import LOG_LEVEL
  from catalyst.utils.calendars import register_calendar_alias
label_desc: Use image node_id 7 for calling the QuandlBundle obj's underlying member method code with example usage: obj.fetch_raw_metadata_frame(api_key, page_number) and returns: raw