def main(): if (len(sys.argv) < 3): print ("DownloadVolumes.py <id-filename> <zip file>") sys.exit() idfilename = str(sys.argv[1]) zipfilename = str(sys.argv[2]) fileExtension = os.path.splitext(zipfilename)[1] if (fileExtension != '.zip'): print("The output file extension should be zip, e.g., volume.zip. Change it and try again") sys.exit() # load volume id from file idRequest = FileRequest() idRequest.getVolumeIds(idfilename) # exit if no volume id is returned print("Number of volumes read: " + str(len(idRequest.volumeList))) print("Number of volumes found: " + str(idRequest.numfound)) if (len(idRequest.volumeList) == 0): print("No volume is returned from file. Please double check and try again.") sys.exit() # get token from OAuth2 token = uncamputils.obtainOAuth2Token(uncamputils.OA2_EPR, OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET) print("Obtained token: " + token) # open file to write zf = zipfile.ZipFile(zipfilename, mode='w', allowZip64=True) try: count = 0 # send batch request to DATA API start = 0 length = len(idRequest.volumeList) while (start < length): count = count + 1 if (count > 2): break batch = idRequest.volumeList[start : (start + BATCH_SIZE)] start = start + BATCH_SIZE # fill in data api request parameters # concatenate volume id with pipe '|' volumeIdList = '|'.join(batch) parameters = {'volumeIDs' : volumeIdList} parameters.update(VOLUME_PARAMETERS) # call Data api print("Requesting " + str(len(batch)) + " volumes from Data API, " + \ str(length - start) + " more volumes left.") apiRequest = DataAPIRequest(uncamputils.DATAAPI_EPR, uncamputils.VOLUME_URL_REQUEST, token, parameters) zipcontent = apiRequest.request() # write zip stream to file print("Writing to zip file") uncamputils.appendToZipFile(zipcontent, zf) finally: print 'Closing zip file' zf.close()
def main(): if (len(sys.argv) < 2): print("UnCampVolumeDemo.py <zip file>") sys.exit() zipfilename = str(sys.argv[1]) fileExtension = os.path.splitext(zipfilename)[1] if (fileExtension != '.zip'): print( "The output file extension should be zip, e.g., volume.zip. Change it and try again" ) sys.exit() # call Solr to get a list of volume id solrRequest = SolrRequest() # get volume id from searching metadata solrRequest.getVolumeIds(uncamputils.SOLR_METADATA_URL, urllib.urlencode(SOLR_METADATA_REQUEST)) # get volume id from searching ocr # solrRequest.getVolumeIds(uncamputils.SOLR_OCR_URL, urllib.quote(SOLR_OCR_REQUEST)) # exit if no volume id is returned print("Number of volumes read: " + str(len(solrRequest.volumeList))) print("Number of volumes found: " + str(solrRequest.numfound)) if (len(solrRequest.volumeList) == 0): print( "No volume is returned from Solr. Change your request and try again." ) sys.exit() # append page number to each volume id, page number is hard coded idList = [id + '[1,5,10]' for id in solrRequest.volumeList] # concatenate volume id with pipe '|' pageIdList = '|'.join(idList) # get token from OAuth2 token = uncamputils.obtainOAuth2Token(uncamputils.OA2_EPR, OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET) print("Obtained token: " + token) # fill in data api request parameters parameters = {'pageIDs': pageIdList} parameters.update(PAGE_PARAMETERS) # call Data api print("Requesting data from Data API") apiRequest = DataAPIRequest(uncamputils.DATAAPI_EPR, uncamputils.PAGE_URL_REQUEST, token, parameters) zipcontent = apiRequest.request() # write zip stream to file print("Writing to zip file") uncamputils.writeZipFile(zipcontent, zipfilename)
def main(): if (len(sys.argv) < 2): print ("UnCampVolumeDemo.py <zip file>") sys.exit() zipfilename = str(sys.argv[1]) fileExtension = os.path.splitext(zipfilename)[1] if (fileExtension != '.zip'): print("The output file extension should be zip, e.g., volume.zip. Change it and try again") sys.exit() # call Solr to get a list of volume id solrRequest = SolrRequest() # get volume id from searching metadata solrRequest.getVolumeIds(uncamputils.SOLR_METADATA_URL, urllib.urlencode(SOLR_METADATA_REQUEST)) # get volume id from searching ocr # solrRequest.getVolumeIds(uncamputils.SOLR_OCR_URL, urllib.quote(SOLR_OCR_REQUEST)) # exit if no volume id is returned print("Number of volumes read: " + str(len(solrRequest.volumeList))) print("Number of volumes found: " + str(solrRequest.numfound)) if (len(solrRequest.volumeList) == 0): print("No volume is returned from Solr. Change your request and try again.") sys.exit() # append page number to each volume id, page number is hard coded idList = [id + '[1,5,10]' for id in solrRequest.volumeList] # concatenate volume id with pipe '|' pageIdList = '|'.join(idList) # get token from OAuth2 token = uncamputils.obtainOAuth2Token(uncamputils.OA2_EPR, OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET) print("Obtained token: " + token) # fill in data api request parameters parameters = {'pageIDs' : pageIdList} parameters.update(PAGE_PARAMETERS) # call Data api print("Requesting data from Data API") apiRequest = DataAPIRequest(uncamputils.DATAAPI_EPR, uncamputils.PAGE_URL_REQUEST, token, parameters) zipcontent = apiRequest.request() # write zip stream to file print("Writing to zip file") uncamputils.writeZipFile(zipcontent, zipfilename)