def METHOD_NAME(
    self, prep_operation: colrev.ops.prep.Prep, record: colrev.record.PrepRecord
) -> colrev.record.Record:
    """Prepare the record by retrieving its DOI from the website (url) if available"""
    if ("url" not in record.data and "fulltext" not in record.data) or (
        "doi" in record.data
    ):
        return record
    try:
        url = record.data.get("url", record.data.get("fulltext", "NA"))
        headers = {"user-agent": f"{__name__}  " f"(mailto:{self.email})"}
        ret = self.session.request(
            "GET", url, headers=headers, timeout=prep_operation.timeout
        )
        ret.raise_for_status()
        res = re.findall(self.doi_regex, ret.text)
        if not res:
            return record
        if len(res) == 1:
            ret_dois = [(res[0], 1)]
        else:
            counter = collections.Counter(res)
            ret_dois = counter.most_common()
        if not ret_dois:
            return record
        doi, _ = ret_dois[0]
        retrieved_record_dict = {
            "doi": doi.upper(),
            "ID": record.data["ID"],
        }
        retrieved_record = colrev.record.PrepRecord(data=retrieved_record_dict)
        doi_connector.DOIConnector.retrieve_doi_metadata(
            review_manager=prep_operation.review_manager,
            record=retrieved_record,
            timeout=prep_operation.timeout,
        )
        similarity = colrev.record.PrepRecord.get_retrieval_similarity(
            record_original=record,
            retrieved_record_original=retrieved_record,
            same_record_type_required=self.same_record_type_required,
        )
        if similarity < prep_operation.retrieval_similarity:
            return record
        record.merge(merging_record=retrieved_record, default_source=url)
    except (
        requests.exceptions.RequestException,
        colrev_exceptions.InvalidMerge,
        colrev_exceptions.RecordNotParsableException,
    ):
        pass
    return record