| import yaml | |
| from scholarly import scholarly | |
| from scholarly import ProxyGenerator | |
| import os | |
| from factool.env_config import factool_env_config | |
| # env | |
| # scraper_api_key = factool_env_config.scraper_api_key | |
| class google_scholar(): | |
| def __init__(self): | |
| pg = ProxyGenerator() | |
| scraper_api_key = os.environ.get("SCRAPER_API_KEY", None) | |
| assert scraper_api_key is not None, "Please set the SCRAPER_API_KEY environment variable." | |
| success = pg.ScraperAPI(scraper_api_key) | |
| scholarly.use_proxy(pg) | |
| def run(self, query): | |
| try: | |
| results = scholarly.search_pubs(query) | |
| paper_info = next(results) | |
| paper_info_subset = {key: paper_info['bib'][key] for key in ['title', 'author', 'pub_year']} | |
| return paper_info_subset | |
| except StopIteration: | |
| return {'title': "no match!", "author": "no match!", "pub_year": "no match!"} | |