import pandas as pd

citations = pd.read_csv("cites.csv")
citations

citations.iloc[0]

len(citations)

"""
Explanation: Parsing Citations
With AnyStyle.io and Crossref's search api
End of explanation
"""


citations.iloc[0:5]

"""
Explanation: ok, we got a pile of citations. But they aren't in shape. When we look at the cites, they are a collection of 1,505 strings, this isn't very useful for doing data analysis. We need to get them into shape, that is, we need to break them up into their component parts.
End of explanation
"""


citations.iloc[390:395]

"""
Explanation: Note, these citations are not always formatted in the same way, for example, lets looks at some from a different part of the piles.
End of explanation
"""


import requests
import os
import json
import numpy as np
import time

# get the API key for AnyStyle.io from a text file in this directory
with open('anystyle_key.txt','r') as f:
    api_key = f.read()

# I want to figure out what cite is causing the error

parsed_cites = []

for cite in list(segment['cite']):
   

    
    payload = {"format": "json",
               "access_token": api_key,
               "references": cite}
    headers = {"Content-Type": "application/json;charset=UTF-8"}
    #print("Payload Build, requesting")
    
    r = requests.post("http://anystyle.io/parse/references",
                  headers=headers,
                  data=json.dumps(payload))
    #print("Got response", r)
    if r.status_code == 400:
        print(cite)
    
    #parsed_cites.append(r.json())


parsed_cites = []

for segment in np.array_split(citations,5):
    print("Segment Length: ",len(segment))
    cite_pile = list(segment['cite'])

    
    payload = {"format": "json",
               "access_token": api_key,
               "references": cite_pile}
    headers = {"Content-Type": "application/json;charset=UTF-8"}
    print("Payload Build, requesting")
    
    r = requests.post("http://anystyle.io/parse/references",
                  headers=headers,
                  data=json.dumps(payload))
    print("Got response", r)
    parsed_cites.append(r.json())


print(len(parsed_cites))

parsed_cites_master = [cite for cites in parsed_cites for cite in cites]

parsed_cites_master[0:10]

"""
Explanation: Parsing citaitons is a whole area of research to be discussed at another time. I am going to use AnyStyle.io to try and parse these citations because it has a nicely designed API.
End of explanation
"""


with open("parsed_cites.json",'w') as f:
    print(json.dumps(parsed_cites_master, indent=4), file=f )

df_citations = pd.DataFrame(parsed_cites_master)
df_citations

df_citations.to_csv("parsed_cites.csv")

"""
Explanation: Sweet!
End of explanation
"""


