
Initialize data structure in fetch_data function and update main execution with user access key
8f664d2
from arvix import extract_arxiv_data | |
from pmc import extract_pmc_data | |
import json | |
import dotenv | |
import os | |
from concurrent.futures import ThreadPoolExecutor | |
dotenv.load_dotenv() | |
ACCESS_KEY = os.getenv("ACCESS_KEY") | |
def fetch_arxiv_data(): | |
return json.loads(extract_arxiv_data()) | |
def fetch_pmc_data(): | |
return json.loads(extract_pmc_data()) | |
def fetch_data(user_access_key): | |
if user_access_key != ACCESS_KEY: | |
papers_data = {"status": "Invalid access key"} | |
else: | |
papers_data = {} | |
try: | |
papers_data['status'] = 'success' | |
papers_data['data'] = {} | |
with ThreadPoolExecutor() as executor: | |
arxiv_future = executor.submit(fetch_arxiv_data) | |
pmc_future = executor.submit(fetch_pmc_data) | |
arxiv_data = arxiv_future.result() | |
pmc_data = pmc_future.result() | |
for topic, topic_data in arxiv_data.items(): | |
if topic_data['count'] == 0: | |
continue | |
else: | |
papers_data['data'][topic] = {} | |
papers_data['data'][topic]['ids'] = topic_data['ids'] | |
for topic, topic_data in pmc_data.items(): | |
if topic_data['count'] == 0: | |
continue | |
else: | |
papers_data['data'][topic] = {} | |
papers_data['data'][topic]['ids'] = topic_data['ids'] | |
except Exception as e: | |
print(str(e)) | |
papers_data['status'] = 'error' | |
data = json.dumps(papers_data, indent=4, ensure_ascii=False) | |
return data | |
if __name__ == '__main__': | |
data = fetch_data(ACCESS_KEY) | |
with open('data.json', 'w') as f: | |
f.write(data) |