def _extract_biblio(self, page, id=None):
        dict_of_keylists = {
            'title' : ['title'],
            'authors' : ['author', 'last_name'],
            'journal' : ['source', 'provider'],
            'review_url' : ['source', 'url'],
            'review_type' : ['review_type'],
            'create_date' : ['datetime_reviewed'],
            'free_fulltext_url' : ['_id', 'url'],
            'source_provider' : ['source', 'provider'],
            'source_url' : ['source', 'url']
        }
        biblio_dict = provider._extract_from_json(page, dict_of_keylists)
        biblio_dict["genre"] = "peer review"
        biblio_dict["title"] = "Review of " + biblio_dict["title"]

        if "source_provider" in biblio_dict and biblio_dict["source_provider"]:
            biblio_dict["repository"] = biblio_dict["source_provider"]
        else:
            biblio_dict["repository"] = "Publons"

        if "source_url" in biblio_dict and biblio_dict["source_url"]:
            biblio_dict["free_fulltext_url"] = biblio_dict["source_url"]  #overwrite with original source

        try:
            biblio_dict["year"] = biblio_dict["create_date"][0:4]
        except __HOLE__:
            pass

        return biblio_dict
dataset/ETHPy150Open Impactstory/total-impact-core/totalimpact/providers/publons.py/Publons._extract_biblio