|
5 | 5 |
|
6 | 6 | startTime = time.time() |
7 | 7 |
|
| 8 | +def findKey(d, key): |
| 9 | + if key in d: |
| 10 | + yield d[key] |
| 11 | + for k in d: |
| 12 | + if isinstance(d[k], list): |
| 13 | + for i in d[k]: |
| 14 | + for j in findKey(i, key): |
| 15 | + yield j |
| 16 | + |
8 | 17 | baseURL = secrets.baseURL |
9 | 18 | user = secrets.user |
10 | 19 | password = secrets.password |
11 | 20 |
|
| 21 | +resourceID= raw_input('Enter resource ID: ') |
| 22 | + |
12 | 23 | auth = requests.post(baseURL + '/users/'+user+'/login?password='+password).json() |
13 | 24 | session = auth["session"] |
14 | | -headers = {'X-ArchivesSpace-Session':session} |
| 25 | +headers = {'X-ArchivesSpace-Session':session, 'Content_Type':'application/json'} |
| 26 | + |
| 27 | +endpoint = '/repositories/3/resources/'+resourceID+'/tree' |
15 | 28 |
|
16 | | -resourceNumber = '1051'#Update 'resourceNumber' with the resource number for which you wish to find all of the archival objects |
17 | | -search ='\"/repositories/3/resources/'+resourceNumber+'\"' |
18 | | -payload = {'page': '1', 'page_size': '5000', 'q': search, 'type[]': 'archival_object'} |
| 29 | +output = requests.get(baseURL + endpoint, headers=headers).json() |
19 | 30 |
|
20 | | -search = requests.get(baseURL+'/search', headers=headers, params=payload).json() |
21 | | -arrayURI = [] |
| 31 | +archivalObjects = [] |
| 32 | +for value in findKey(output, 'record_uri'): |
| 33 | + if 'archival_objects' in value: |
| 34 | + archivalObjects.append(value) |
22 | 35 |
|
23 | | -for i in range (0, len (search['results'])): |
24 | | - uri = search['results'][i]['uri'] |
25 | | - arrayURI.append(uri) |
| 36 | +records = [] |
| 37 | +for archivalObject in archivalObjects: |
| 38 | + output = requests.get(baseURL + archivalObject, headers=headers).json() |
| 39 | + records.append(output) |
26 | 40 |
|
27 | | -f=open('asSearchResults.json', 'w') |
28 | | -arrayJSON = [] |
29 | | -for j in arrayURI: |
30 | | - output = requests.get(baseURL+j, headers=headers).json() |
31 | | - arrayJSON.append(output) |
| 41 | +f=open('archivalObjects.json', 'w') |
| 42 | +json.dump(records, f) |
| 43 | +f.close() |
32 | 44 |
|
33 | | -json.dump(arrayJSON, f) |
34 | 45 | elapsedTime = time.time() - startTime |
35 | 46 | m, s = divmod(elapsedTime, 60) |
36 | 47 | h, m = divmod(m, 60) |
|
0 commit comments