# Testing CrossRef API with Habanero py library
# Creates a data file with article titles 

from habanero import Crossref

import json

# Create the file (Will throw error if file exists)
f = open("5000TitleData.json", "x", encoding="utf-8")

# Set email address so that I can be put into "polite" pool
cr = Crossref(mailto = "jc550@students.waikato.ac.nz")

# Generate and send query to CrossRef (Limited Query = 100)
query = cr.works(cursor = "*", cursor_max = 5000, filter = {'from_pub_date': '2023', 'type' : ['journal-article', 'proceedings-article', 'book-chapter']})

# Generate and send query to CrossRef (Unlimited Query)
#query = cr.works(cursor = "*", filter = {'from_pub_date': '2023', 'type': 'journal-article'})

# Data about sublists
print("Number of Sublists: " + str(len(query)))
for numSublist in range(len(query)):
    lengthOfSublist = len(query[numSublist]["message"]["items"])
    print(str(numSublist) + " Length: " + str(lengthOfSublist))

print("Total Results: " + str(query[0]["message"]["total-results"]))

jsonDict = {"dataArray":[]}
# Printing DOI and title of each article present in the sublists
for sublist in query:
    print(sublist.keys())
    print(sublist["status"])
    items = sublist["message"]["items"]
    titles = []
    dois = []

    for item in items:
        print(item.keys())

        if "title" in item.keys():
            titles.append(item["title"][0])
        else:
            titles.append("No Title")
        if "DOI" in item.keys():
            dois.append(item["DOI"])
        else:
            dois.append("No DOI")

    jsonDict["dataArray"].append({"titles":titles, "dois":dois})

print(jsonDict)
json.dump(jsonDict, f)