File size: 1,477 Bytes
c680313 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
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 = {"error": "Invalid access key"}
else:
papers_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[topic] = {}
papers_data[topic]['ids'] = topic_data['ids']
for topic, topic_data in pmc_data.items():
if topic_data['count'] == 0:
continue
else:
papers_data[topic] = {}
papers_data[topic]['ids'] = topic_data['ids']
data = json.dumps(papers_data, indent=4, ensure_ascii=False)
return data
if __name__ == '__main__':
data = fetch_data()
with open('data.json', 'w') as f:
f.write(data) |