def _extract_biblio(self, page, id=None):
        dict_of_keylists = {
            'title' : ['title'],
            'genre' : ['defined_type'],
            #'authors_literal' : ['authors'],
            'published_date' : ['published_date']
        }
        item = self._extract_figshare_record(page, id)
        biblio_dict = provider._extract_from_data_dict(item, dict_of_keylists)

        biblio_dict["repository"] = "figshare"
        
        try:
            biblio_dict["year"] = int(biblio_dict["published_date"][-4:])
        except (KeyError, __HOLE__):
            pass

        if "genre" in biblio_dict:
            genre = biblio_dict["genre"].lower()
            #override
            if genre in ["figure", "poster"]:
                genre = biblio_dict["genre"]
            elif genre == "presentation":
                genre = "slides"
            elif genre == "paper":
                genre = "article"
            elif genre == "media":
                genre = "video"   
            else:
                genre = "dataset"  #includes fileset 
            biblio_dict["genre"] = genre        

            if biblio_dict["genre"] == "article":
                biblio_dict["free_fulltext_url"] = self._get_templated_url(self.provenance_url_template, id, "provenance")

        # the authors data is messy, so just give up for now
        # if "authors_literal" in biblio_dict:
        #     surname_list = [author["last_name"] for author in biblio_dict["authors_literal"]]
        #     if surname_list:
        #         biblio_dict["authors"] = ", ".join(surname_list)
        #         del biblio_dict["authors_literal"]

        return biblio_dict
dataset/ETHPy150Open Impactstory/total-impact-core/totalimpact/providers/figshare.py/Figshare._extract_biblio