ReXploreIDFetchingAPI / fetch_data.py
raannakasturi's picture
Update fetch_data.py
6cc6cb4 verified
raw
history blame
1.74 kB
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:
pmc_future = executor.submit(fetch_pmc_data)
arxiv_future = executor.submit(fetch_arxiv_data)
pmc_data = pmc_future.result()
arxiv_data = arxiv_future.result()
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']
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']
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)