diff options
Diffstat (limited to 'mediagoblin/gmg_commands/batchaddmedia.py')
-rw-r--r-- | mediagoblin/gmg_commands/batchaddmedia.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/mediagoblin/gmg_commands/batchaddmedia.py b/mediagoblin/gmg_commands/batchaddmedia.py index 274d72bc..55ed865b 100644 --- a/mediagoblin/gmg_commands/batchaddmedia.py +++ b/mediagoblin/gmg_commands/batchaddmedia.py @@ -19,6 +19,7 @@ from __future__ import print_function import codecs import csv import os +import sys import requests import six @@ -28,8 +29,7 @@ from six.moves.urllib.parse import urlparse from mediagoblin.db.models import LocalUser from mediagoblin.gmg_commands import util as commands_util from mediagoblin.submit.lib import ( - submit_media, get_upload_file_limits, - FileUploadLimit, UserUploadLimit, UserPastUploadLimit) + submit_media, FileUploadLimit, UserUploadLimit, UserPastUploadLimit) from mediagoblin.tools.metadata import compact_and_validate from mediagoblin.tools.translate import pass_to_ugettext as _ from jsonschema.exceptions import ValidationError @@ -73,8 +73,6 @@ def batchaddmedia(args): username=args.username))) return - temp_files = [] - if os.path.isfile(args.metadata_path): metadata_path = args.metadata_path @@ -99,7 +97,7 @@ def batchaddmedia(args): contents = all_metadata.read() media_metadata = parse_csv_file(contents) - for media_id, file_metadata in media_metadata.iteritems(): + for media_id, file_metadata in media_metadata.items(): files_attempted += 1 # In case the metadata was not uploaded initialize an empty dictionary. json_ld_metadata = compact_and_validate({}) @@ -113,6 +111,7 @@ def batchaddmedia(args): title = file_metadata.get('title') or file_metadata.get('dc:title') description = (file_metadata.get('description') or file_metadata.get('dc:description')) + collection_slug = file_metadata.get('collection-slug') license = file_metadata.get('license') try: @@ -141,7 +140,7 @@ Metadata was not uploaded.""".format( file_path = os.path.join(abs_metadata_dir, path) file_abs_path = os.path.abspath(file_path) try: - media_file = file(file_abs_path, 'r') + media_file = open(file_abs_path, 'rb') except IOError: print(_(u"""\ FAIL: Local file {filename} could not be accessed. @@ -155,6 +154,7 @@ FAIL: Local file {filename} could not be accessed. filename=filename, title=maybe_unicodeify(title), description=maybe_unicodeify(description), + collection_slug=maybe_unicodeify(collection_slug), license=maybe_unicodeify(license), metadata=json_ld_metadata, tags_string=u"") @@ -203,7 +203,12 @@ def parse_csv_file(file_contents): # Build a dictionary for index, line in enumerate(lines): if line.isspace() or line == u'': continue - values = unicode_csv_reader([line]).next() + if (sys.version_info[0] == 3): + # Python 3's csv.py supports Unicode out of the box. + reader = csv.reader([line]) + else: + reader = unicode_csv_reader([line]) + values = next(reader) line_dict = dict([(key[i], val) for i, val in enumerate(values)]) media_id = line_dict.get('id') or index |