if not form.is_valid():
return self.form_invalid(form)
missing_metadata = []
+ invalid_files = []
metadatas = {}
for f in tracks:
with tempfile.NamedTemporaryFile(prefix='track-upload') as tmpfile:
tmpfile.write(f.read())
f.seek(0)
- metadata = mutagen.File(tmpfile.name, easy=True)
+ try:
+ metadata = mutagen.File(tmpfile.name, easy=True)
+ except Exception as e:
+ logger.info('error reading file (%s)' % e)
+ invalid_files.append(f.name)
if not metadata or not metadata.get('artist') or not metadata.get('title'):
missing_metadata.append(f.name)
else:
metadatas[f.name] = metadata
- if missing_metadata:
- form.add_error('tracks', _('Missing metadata in: ') + ', '.join(missing_metadata))
+ if missing_metadata or invalid_files:
+ messages = []
+ if missing_metadata:
+ messages.append(_('Missing metadata in: ') + ', '.join(missing_metadata))
+ if invalid_files:
+ messages.append(_('Unreadable metadata in: ') + ', '.join(invalid_files))
+ form.add_error('tracks', ' / '.join([str(x) for x in messages]))
return self.form_invalid(form)
for f in tracks: