def parse(self, file=None, url=None): """Return metadata for the given file or raise an error. :type file: :class:`cgi.FieldStorage` or None :param file: A freshly uploaded file object. :type url: unicode or None :param url: A remote URL string. :rtype: dict :returns: Any extracted metadata. :raises UnsuitableEngineError: If file information cannot be parsed. """ if file is None: raise UnsuitableEngineError print("File is: ", file) filename = os.path.basename(file.filename) name, ext = os.path.splitext(filename) ext = ext.lstrip('.').lower() container = guess_container_format(ext) return { 'type': guess_media_type(container), 'container': container, 'display_name': u'%s.%s' % (name, container or ext), 'size': get_file_size(file.file), }
def parse(self, file=None, url=None): """Return metadata for the given file or raise an error. :type file: :class:`cgi.FieldStorage` or None :param file: A freshly uploaded file object. :type url: unicode or None :param url: A remote URL string. :rtype: dict :returns: Any extracted metadata. :raises UnsuitableEngineError: If file information cannot be parsed. """ if file is None: raise UnsuitableEngineError filename = os.path.basename(file.filename) name, ext = os.path.splitext(filename) ext = ext.lstrip('.').lower() container = guess_container_format(ext) return { 'type': guess_media_type(container), 'container': container, 'display_name': u'%s.%s' % (name, container or ext), 'size': get_file_size(file.file), }
def parse(self, file=None, url=None): """Return metadata for the given file or raise an error. :type file: :class:`cgi.FieldStorage` or None :param file: A freshly uploaded file object. :type url: unicode or None :param url: A remote URL string. :rtype: dict :returns: Any extracted metadata. :raises UnsuitableEngineError: If file information cannot be parsed. """ if url is None: raise UnsuitableEngineError if url.startswith('rtmp://'): known_server_uris = self._data.setdefault(RTMP_SERVER_URIS, ()) if RTMP_URI_DIVIDER in url: # Allow the user to explicitly mark the server/file separation parts = url.split(RTMP_URI_DIVIDER) server_uri = parts[0].rstrip('/') file_uri = ''.join(parts[1:]).lstrip('/') if server_uri not in known_server_uris: known_server_uris.append(server_uri) else: # Get the rtmp server from our list of known servers or fail for server_uri in known_server_uris: if url.startswith(server_uri): file_uri = url[len(server_uri.rstrip('/') + '/'):] break else: raise UserStorageError( _('This RTMP server has not been configured. Add it ' 'by going to Settings > Storage Engines > ' 'Remote URLs.')) unique_id = ''.join((server_uri, RTMP_URI_DIVIDER, file_uri)) else: unique_id = url filename = os.path.basename(url) name, ext = os.path.splitext(filename) ext = unicode(ext).lstrip('.').lower() container = guess_container_format(ext) # FIXME: Replace guess_container_format with something that takes # into consideration the supported formats of all the custom # players that may be installed. # if not container or container == 'unknown': # raise UnsuitableEngineError return { 'type': guess_media_type(ext), 'container': container, 'display_name': u'%s.%s' % (name, container or ext), 'unique_id': unique_id, }