|
| 1 | +import json |
| 2 | +import requests |
| 3 | +import secrets |
| 4 | +import time |
| 5 | +import csv |
| 6 | + |
| 7 | +startTime = time.time() |
| 8 | + |
| 9 | +def findKey(d, key): |
| 10 | + if key in d: |
| 11 | + yield d[key] |
| 12 | + for k in d: |
| 13 | + if isinstance(d[k], list) and k == 'children': |
| 14 | + for i in d[k]: |
| 15 | + for j in findKey(i, key): |
| 16 | + yield j |
| 17 | + |
| 18 | +baseURL = secrets.baseURL |
| 19 | +user = secrets.user |
| 20 | +password = secrets.password |
| 21 | + |
| 22 | +auth = requests.post(baseURL + '/users/'+user+'/login?password='+password).json() |
| 23 | +session = auth["session"] |
| 24 | +headers = {'X-ArchivesSpace-Session':session, 'Content_Type':'application/json'} |
| 25 | + |
| 26 | +resourceID= raw_input('Enter resource ID: ') |
| 27 | + |
| 28 | +f=csv.writer(open('archivalObjectRefIdForResource.csv', 'wb')) |
| 29 | +f.writerow(['title']+['uri']+['ref_id']+['date']) |
| 30 | + |
| 31 | +endpoint = '/repositories/3/resources/'+resourceID+'/tree' |
| 32 | + |
| 33 | +output = requests.get(baseURL + endpoint, headers=headers).json() |
| 34 | +archivalObjects = [] |
| 35 | +for value in findKey(output, 'record_uri'): |
| 36 | + print value |
| 37 | + if 'archival_objects' in value: |
| 38 | + archivalObjects.append(value) |
| 39 | + |
| 40 | +print 'downloading aos' |
| 41 | +for archivalObject in archivalObjects: |
| 42 | + output = requests.get(baseURL + archivalObject, headers=headers).json() |
| 43 | + print output |
| 44 | + title = output['title'] |
| 45 | + uri = output['uri'] |
| 46 | + ref_id = output['ref_id'] |
| 47 | + for date in output['dates']: |
| 48 | + try: |
| 49 | + date = date['expression'] |
| 50 | + except: |
| 51 | + date = '' |
| 52 | + f.writerow([title]+[uri]+[ref_id]+[date]) |
| 53 | + |
| 54 | +elapsedTime = time.time() - startTime |
| 55 | +m, s = divmod(elapsedTime, 60) |
| 56 | +h, m = divmod(m, 60) |
| 57 | +print 'Total script run time: ', '%d:%02d:%02d' % (h, m, s) |
0 commit comments