Skip to content

Commit 53c562b

Browse files
author
ehanson8
committed
updates
1 parent 28edbb3 commit 53c562b

File tree

1 file changed

+62
-18
lines changed

1 file changed

+62
-18
lines changed

addNewItemsToCollection.py

Lines changed: 62 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,27 @@
66
import os
77
import csv
88
import urllib3
9+
import collections
10+
import argparse
11+
12+
parser = argparse.ArgumentParser()
13+
parser.add_argument('-d', '--directory', help='the directory of files to be ingested. optional - if not provided, the script will ask for input')
14+
parser.add_argument('-e', '--fileExtension', help='the extension of files to be ingested. optional - if not provided, the script will ask for input')
15+
parser.add_argument('-h', '--handle', help='handle of the object to retreive. optional - if not provided, the script will ask for input')
16+
args = parser.parse_args()
17+
18+
if args.uri:
19+
directory = args.directory
20+
else:
21+
directory = raw_input('Enter directory name: ')
22+
if args.uri:
23+
fileExtension = args.fileExtension
24+
else:
25+
fileExtension = '.'+raw_input('Enter file extension: ')
26+
if args.handle:
27+
handle = args.handle
28+
else:
29+
handle = raw_input('Enter handle: ')
930

1031
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
1132

@@ -25,10 +46,6 @@
2546
filePath = secrets.filePath
2647
verify = secrets.verify
2748

28-
directory = raw_input('Enter directory name: ')
29-
fileExtension = '.'+raw_input('Enter file extension: ')
30-
collectionHandle = raw_input('Enter collection handle: ')
31-
3249
startTime = time.time()
3350

3451
#create file list and export csv
@@ -37,13 +54,12 @@
3754
for file in files:
3855
if file.endswith(fileExtension):
3956
fileList[file[:file.index('.')]] = os.path.join(root, file).replace('\\','/')
40-
print file
4157
elapsedTime = time.time() - startTime
4258
m, s = divmod(elapsedTime, 60)
4359
h, m = divmod(m, 60)
4460
print 'File list creation time: ','%d:%02d:%02d' % (h, m, s)
4561

46-
f=csv.writer(open(collectionHandle.replace('/','-')+'addedFilesList.csv', 'wb'))
62+
f=csv.writer(open(handle.replace('/','-')+'addedFilesList.csv', 'wb'))
4763
f.writerow(['itemID'])
4864

4965
for k,v in fileList.items():
@@ -62,15 +78,17 @@
6278
print 'authenticated'
6379

6480
#Get collection ID
65-
endpoint = baseURL+'/rest/handle/'+collectionHandle
81+
endpoint = baseURL+'/rest/handle/'+handle
6682
collection = requests.get(endpoint, headers=header, cookies=cookies, verify=verify).json()
6783
collectionID = str(collection['uuid'])
84+
print collectionID
6885

6986
# Post items
70-
collectionMetadata = json.load(open(directory+'/'+'metadata.json'))
87+
collectionMetadata = json.load(open(directory+'/'+'metadataNewFiles.json'))
7188
for itemMetadata in collectionMetadata:
7289
counter = counter - 1
7390
print 'Items remaining: ', counter
91+
fileExists = ''
7492
updatedItemMetadata = {}
7593
updatedItemMetadataList = []
7694
for element in itemMetadata['metadata']:
@@ -80,15 +98,42 @@
8098
updatedItemMetadataList.append(element)
8199
updatedItemMetadata['metadata'] = updatedItemMetadataList
82100
updatedItemMetadata = json.dumps(updatedItemMetadata)
83-
post = requests.post(baseURL+'/rest/collections/'+collectionID+'/items', headers=header, cookies=cookies, verify=verify, data=updatedItemMetadata).json()
84-
itemID = post['link']
85-
86-
#Post bitstream
87-
bitstream = fileList[fileIdentifier]
88-
fileName = bitstream[bitstream.rfind('/')+1:]
89-
data = open(bitstream, 'rb')
90-
files = {'file': open(bitstream, 'rb')}
91-
post = requests.post(baseURL+itemID+'/bitstreams?name='+fileName, headers=headerFileUpload, verify=verify, data=data).json()
101+
for k in fileList:
102+
if fileIdentifier in k:
103+
fileExists = True
104+
if fileExists == True:
105+
print fileIdentifier
106+
post = requests.post(baseURL+'/rest/collections/'+collectionID+'/items', headers=header, cookies=cookies, verify=verify, data=updatedItemMetadata).json()
107+
print json.dumps(post)
108+
itemID = post['link']
109+
110+
# #Post bitstream - front and back
111+
# for k,v in fileList.items():
112+
# if k == fileIdentifier + '-Front':
113+
# bitstream = fileList[k]
114+
# fileName = bitstream[bitstream.rfind('/')+1:]
115+
# data = open(bitstream, 'rb')
116+
# post = requests.post(baseURL+itemID+'/bitstreams?name='+fileName, headers=headerFileUpload, cookies=cookies, verify=verify, data=data).json()
117+
# print post
118+
#
119+
# for k,v in fileList.items():
120+
# if k == fileIdentifier + '-Back':
121+
# bitstream = fileList[k]
122+
# fileName = bitstream[bitstream.rfind('/')+1:]
123+
# data = open(bitstream, 'rb')
124+
# post = requests.post(baseURL+itemID+'/bitstreams?name='+fileName, headers=headerFileUpload, cookies=cookies, verify=verify, data=data).json()
125+
# print post
126+
127+
#Post bitstream - starts with file identifier
128+
orderedFileList = collections.OrderedDict(sorted(fileList.items()))
129+
for k,v in orderedFileList.items():
130+
if k.startswith(fileIdentifier):
131+
bitstream = orderedFileList[k]
132+
fileName = bitstream[bitstream.rfind('/')+1:]
133+
print fileName
134+
data = open(bitstream, 'rb')
135+
post = requests.post(baseURL+itemID+'/bitstreams?name='+fileName, headers=headerFileUpload, cookies=cookies, verify=verify, data=data).json()
136+
print post
92137

93138
#Create provenance notes
94139
provNote = {}
@@ -110,7 +155,6 @@
110155
provNote2 = {}
111156
provNote2['key'] = 'dc.description.provenance'
112157
provNote2['language'] = 'en_US'
113-
114158
provNote2Value = 'Made available in DSpace on '+utcTime+' (GMT). No. of bitstreams: '+str(bitstreamCount)
115159
for bitstream in bitstreams:
116160
fileName = bitstream['name']

0 commit comments

Comments
 (0)