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)