Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
PLOS API code for use with SunBurnt
#Sample PLOS api code for use with python Solr library Sunburnt
#( )
#!Note! requires sunburnt's external libraries: httplib2,lxml
import sunburnt,urllib2
class PlosInterface(sunburnt.SolrInterface):
def __init__(self,api_key):
plos_url = ""
plos_schema = urllib2.urlopen("")
#or (be polite, use stored file instead of urlopen)
#plos_schema = open('/home/dbuschho/workspace/publication_timeline/plos_schema.xml')
#localfile handle open('../plos_schema.xml') from
#Python base class magic ... make this class a SolrInterface like object
#note that schemadoc if requested by url will be loaded
super(PlosInterface, self).__init__(url=plos_url,schemadoc=plos_schema)
#Replace default connection with one that
self.conn = PlosInterface.PlosConnection(url=plos_url,api_key=api_key)
#Create specific PlosConnection subclass of SolrConnection
#to force addition of API_KEY query param to all queries
#(defined within PlosInterface class to keep namespace clean)
class PlosConnection(sunburnt.sunburnt.SolrConnection):
api_key = None
def __init__(self, url, api_key):
self.api_key = api_key
super(PlosInterface.PlosConnection, self).__init__(url=url)
def select(self, params):
#Actual test code
if __name__ == '__main__':
plos_interface = PlosInterface(api_key=u'1234567')
count = 0 #Count number of results printed
start = 0
rows =10
while True:
results = plos_interface.query(title=u'Chemistry').paginate(start,rows).execute()
#handle while loop bookkeeping
start += rows #increment query loop
if(not results): #stop loop if no more results
break #see
#Actually do something with data received
for result in results:
print result
count += 1
print count
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment