docs: def get_bulkcurrencies(self):
          """
          Get the supported currencies
          Scraped from a JSON object on the html page in javascript tag
          """
          start = r'YAHOO\.Finance\.CurrencyConverter\.addCurrencies\('
          _json = r'\[[^\]]*\]'
          try:
              resp = get(self.currencies_url)
              resp.raise_for_status()
          except exceptions.RequestException as e:
              self.log(logging.ERROR, "%s Deprecated: API withdrawn in February 2018:\n%s", self.name, e)
          else:
              # Find the javascript that contains the json object
              soup = BS4(resp.text, 'html.parser')
              re_start = re.compile(start)
              try:
                  jscript = soup.find('script', type='text/javascript', text=re_start).string
              except AttributeError:
                  self.log(logging.WARNING, "%s: Live currency data not found, using cached copy.", self.name)
              else:
                  # Separate the json object
                  re_json = re.compile(_json)
                  match = re_json.search(jscript)
                  if match:
                      json_str = match.group(0)
                      with open(self._cached_currency_file, 'w') as fd:
                          fd.write(json_str.encode('utf-8'))
  
          # Parse the json file
          try:
              with open(self._cached_currency_file, 'r') as fd:
                  j = json.load(fd)
          except FileNotFoundError:
              j = None
          if not j:
              raise RuntimeError("%s: JSON not found at endpoint or as cached file:\n%s" % (
                  self.name, self._cached_currency_file))
          return j