Mercurial > hg > sworduploader
changeset 15:e24aea2d14a4
- v0.6: use server.cfg, maintain dir structure with dir upload
author | Marco Fabiani <marco.fabiani@eecs.qmul.ac.uk> |
---|---|
date | Tue, 29 May 2012 11:55:26 +0100 |
parents | 273fc80d9623 |
children | 8b69bba225c9 |
files | README server.cfg sworduploader.py |
diffstat | 3 files changed, 29 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/README Fri May 25 13:14:05 2012 +0100 +++ b/README Tue May 29 11:55:26 2012 +0100 @@ -20,6 +20,7 @@ Installation: - no installation required, simply copy the script sworduploader.py to a suitable location. The first time you run the script, it will create the sword2_logging.conf file. +- a server.cfg file is also available. If the --servicedoc option is not used, sworduploader will read the first line of server.cfg and use it as the server's URL. If the server.cfg is missing, it will default to C4DM's server. ----------------------------------------------- Usage: @@ -40,17 +41,17 @@ optional arguments: -h, --help show this help message and exit --username USER_NAME DSpace username. - --zip If "data" is a directory, compress it and post it as a - single file. The zip file will be saved along with the - individual files. --title TITLE Title (ignored for METS packages). --author AUTHOR [AUTHOR ...] Author(s) (ignored for METS packages). Accepts multiple entries in the format "Surname, Name" --date DATE Date of creation (string) (ignored for METS packages). - --servicedoc DSPACEURL - Url of the SWORDv2 service document (default: - http://c4dm.eecs.qmul.ac.uk/rdr/swordv2/servicedocument + --zip If "data" is a directory, compress it and post it as a + single file. The zip file will be saved along with the + individual files. + --servicedoc SD Url of the SWORDv2 service document (default: use + server.cfg if available, otherwise http://c4dm.eecs.qm + ul.ac.uk/rdr/swordv2/servicedocument If the submission is created successfully, it will remain open to be completed with the necessary metadata and licenses, using the DSpace web interface. The
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server.cfg Tue May 29 11:55:26 2012 +0100 @@ -0,0 +1,1 @@ +http://c4dm.eecs.qmul.ac.uk/rdr/swordv2/servicedocument \ No newline at end of file
--- a/sworduploader.py Fri May 25 13:14:05 2012 +0100 +++ b/sworduploader.py Tue May 29 11:55:26 2012 +0100 @@ -2,10 +2,10 @@ """ -SWORD2 DSpace bulk uploader - v0.5 +SWORD2 DSpace bulk uploader - v0.6 A python script to submit large numbers of files to a SWORD2-compatible repository, specifically DSpace 1.8x. -Built on the SWORD2 python client library: https://bitbucket.org/beno/python-sword2/overview with modifications. +Built on the SWORD2 python client library: https://github.com/swordapp/python-client-sword2. Dependencies: @@ -14,6 +14,13 @@ - sword2 library: https://github.com/swordapp/python-client-sword2 ----------------------------------- +Updates log: + +v0.6: - now uploading a directory will also maintain the path structure + - introduced a file where to specify the server (server.cfg) +v0.5: changed the default server to C4DM live server + +----------------------------------- Centre for Digital Music, Queen Mary, University of London Copyright (c) 2012 Marco Fabiani @@ -53,7 +60,7 @@ parser.add_argument("--author", dest="author", type=str,nargs="+", help="Author(s) (ignored for METS packages). Accepts multiple entries in the format \"Surname, Name\"") parser.add_argument("--date", dest="date", type=str,nargs=1, help="Date of creation (string) (ignored for METS packages).") parser.add_argument("--zip", action="store_true",dest="zip",default=False, help="If \"data\" is a directory, compress it and post it as a single file. The zip file will be saved along with the individual files.") -parser.add_argument("--servicedoc", dest="sd", type=str,nargs=1, help="Url of the SWORDv2 service document (default: http://c4dm.eecs.qmul.ac.uk/smdmrd-test/swordv2/servicedocument") +parser.add_argument("--servicedoc", dest="sd", type=str,nargs=1, help="Url of the SWORDv2 service document (default: use server.cfg if available, otherwise http://c4dm.eecs.qmul.ac.uk/rdr/swordv2/servicedocument") args = parser.parse_args() data = args.data[0] @@ -63,7 +70,12 @@ storezip = False if args.sd == None: - sd = "http://c4dm.eecs.qmul.ac.uk/rdr/swordv2/servicedocument" + try: + f = open("server.cfg", "r") + sd = f.readline() + print "server.cfg: ", sd + except: + sd = "http://c4dm.eecs.qmul.ac.uk/rdr/swordv2/servicedocument" else: sd = args.sd[0] @@ -192,12 +204,15 @@ creation_receipt = c.create(col_iri = collection.href, metadata_entry = entry, in_progress=True) # Add the files + # Get the longest common path in order to send the correct filename to keep the structure + common = os.path.commonprefix(fileslist) for f in fileslist: - print "Uploading file ",os.path.basename(f) + filename = os.path.relpath(f,common) + print "Uploading file ", filename payload = open(f,"rb") deposit_receipt = c.add_file_to_resource(edit_media_iri = creation_receipt.edit_media, payload = payload, - filename = os.path.basename(f), + filename = filename, mimetype = 'application/zip', packaging = 'http://purl.org/net/sword/package/Binary') payload.close()