示例#1
0
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()
示例#2
0
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)