docs: def get_data(doi_id):
      """
      Resolve DOI and compile all attributes into one dictionary
      :param str doi_id:
      :param int idx: Publication index
      :return dict: Updated publication dictionary
      """
  
      fetch_dict = {}
  
      try:
          # Send request to grab metadata at URL
          print("Requesting : {}".format(doi_id))
          url = "http://dx.doi.org/" + doi_id
          headers = {"accept": "application/rdf+xml;q=0.5, application/citeproc+json;q=1.0"}
          r = requests.get(url, headers=headers)
  
  
          # DOI 404. Data not retrieved. Log and return original pub
          if r.status_code == 400 or r.status_code == 404:
              print("HTTP 404: DOI not found, {}".format(doi_id))
  
          # Ignore other status codes. Run when status is 200 (good response)
          elif r.status_code == 200:
              # Load data from http response
              raw = json.loads(r.text)
              # Create a new pub dictionary with metadata received
              fetch_dict = compile_fetch(raw, doi_id)
              fetch_dict['pubDataUrl'] = 'doi.org'
  
      except urllib.error.URLError as e:
          fetch_dict["ERROR"] = e
          fetch_dict["doi"] = doi_id
          print("get_data: URLError: malformed doi: {}, {}".format(doi_id, e))
      except Exception as e:
          fetch_dict["ERROR"] = e
          fetch_dict["doi"] = doi_id
          print("get_data: ValueError: cannot resolve dois from this publisher: {}, {}".format(doi_id, e))
      return fetch_dict