|
4 | 4 | import csv |
5 | 5 | import urllib3 |
6 | 6 | import argparse |
| 7 | +import os |
| 8 | +import re |
7 | 9 |
|
8 | 10 |
|
9 | 11 | def main(): |
@@ -139,8 +141,12 @@ def main(): |
139 | 141 | if args.verbose: print(dsObject['type']) |
140 | 142 |
|
141 | 143 | itemHandle = dsObject['handle'] |
| 144 | + handleID = re.sub(r'.*\/', '', itemHandle) |
| 145 | + itemPath = filePath + '/' + handleID + '/' |
| 146 | + if not os.path.exists(itemPath): |
| 147 | + os.makedirs(itemPath) |
142 | 148 |
|
143 | | - f = csv.writer(open(filePath+itemHandle.replace('/', '-')+'_bitstreams.csv', 'wb')) |
| 149 | + f = csv.writer(open(itemPath + handleID + '_bitstreams.csv', 'wb')) |
144 | 150 | f.writerow(['sequenceId']+['name']+['format']+['bundleName']) |
145 | 151 |
|
146 | 152 | bitstreamCount = len(dsObject['bitstreams']) |
@@ -171,11 +177,12 @@ def main(): |
171 | 177 | bitstreamCount -= limit |
172 | 178 |
|
173 | 179 | for dlBitstream in dlBitstreams: |
174 | | - response = requests.get(baseURL + str(dlBitstream['retrieveLink']), headers=header, cookies=cookies, verify=verify, timeout=response_timeout) |
175 | | - response.raise_for_status() # ensure we notice bad responses |
176 | | - file = open(filePath + dlBitstream['name'], 'wb') |
177 | | - file.write(response.content) |
178 | | - file.close() |
| 180 | + if not os.path.isfile(itemPath + dlBitstream['name']): |
| 181 | + response = requests.get(baseURL + str(dlBitstream['retrieveLink']), headers=header, cookies=cookies, verify=verify, timeout=response_timeout) |
| 182 | + response.raise_for_status() # ensure we notice bad responses |
| 183 | + file = open(itemPath + dlBitstream['name'], 'wb') |
| 184 | + file.write(response.content) |
| 185 | + file.close() |
179 | 186 | else: |
180 | 187 | print('object is of an invalid type for this script ({}). please enter the handle of an item or a collection.').format(dsObject['type']) |
181 | 188 |
|
|
0 commit comments