'type': guess_media_type(ext), 'container': container, 'display_name': u'%s.%s' % (name, container or ext), 'unique_id': unique_id, } def get_uris(self, media_file): """Return a list of URIs from which the stored file can be accessed. :type media_file: :class:`~mediacore.model.media.MediaFile` :param media_file: The associated media file object. :rtype: list :returns: All :class:`StorageURI` tuples for this file. """ uid = media_file.unique_id if uid.startswith('rtmp://'): sep_index = uid.find(RTMP_URI_DIVIDER) # can raise ValueError if sep_index < 0: log.warn( 'File %r has an invalidly formatted unique ID for RTMP.', media_file) return [] server_uri = uid[:sep_index] file_uri = uid[sep_index + len(RTMP_URI_DIVIDER):] return [StorageURI(media_file, 'rtmp', file_uri, server_uri)] return [StorageURI(media_file, 'http', uid, None)] StorageEngine.register(RemoteURLStorage)
# 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, } def get_uris(self, file): """Return a list of URIs from which the stored file can be accessed. :rtype: list :returns: All :class:`StorageURI` tuples for this file. """ uid = file.unique_id if uid.startswith("rtmp://"): sep_index = uid.find(RTMP_URI_DIVIDER) # can raise ValueError if sep_index < 0: log.warn("File %r has an invalidly formatted unique ID for RTMP.", file) return [] server_uri = uid[:sep_index] file_uri = uid[sep_index + len(RTMP_URI_DIVIDER)] return [StorageURI(file, "rtmp", file_uri, server_uri)] return [StorageURI(file, "http", file.unique_id, None)] StorageEngine.register(RemoteURLStorage)
'file_count': column_property( sql.select( [sql.func.count(media_files.c.id)], storage.c.id == media_files.c.storage_id, ).label('file_count'), deferred=True, ), 'file_size_sum': column_property( sql.select( [sql.func.sum(media_files.c.size)], storage.c.id == media_files.c.storage_id, ).label('file_size_sum'), deferred=True, ), }, ) def add_engine_type(engine_cls): """Register this storage engine with the ORM.""" log.debug('Registering engine %r: %r', engine_cls.engine_type, engine_cls) mapper(engine_cls, inherits=storage_mapper, polymorphic_identity=engine_cls.engine_type) # Add our built-in storage engines to the polymorphic ORM mapping. for engine in StorageEngine: add_engine_type(engine) # Automatically add new engines as they're registered by plugins. StorageEngine.add_register_observer(add_engine_type)
from mediacore.lib.storage import StorageEngine class baidupcs(StorageEngine): """ Implement all abstract properties and abstract methods here ... """ StorageEngine.register(baidupcs)