Пример #1
0
        public async Task Consume(ConsumeContext <NewMediaAddedMessage> context)
        {
            Media media = await _mediaService.GetByIdAsync(
                context.Message.Id,
                context.CancellationToken);

            if (media.MediaType == MediaType.Image)
            {
                await _mediaFaceScanner.ScanByMediaIdAsync(
                    context.Message.Id,
                    context.CancellationToken);
            }

            if (media.MediaType == MediaType.Video)
            {
                await _videoFlow.ExecuteAsync(new MediaProcessorContext
                {
                    Media = media
                }, context.CancellationToken);
            }
        }
Пример #2
0
        public async Task ExecuteAsync(
            RescanFacesMessage message,
            CancellationToken cancellationToken)
        {
            var messages = new List <MediaOperationCompletedMessage>();

            foreach (Guid mediaId in message.Ids)
            {
                MediaOperationCompletedMessage msg = new();
                msg.Type = MediaOperationType.RescanFaces;

                try
                {
                    await _mediaFaceScanner
                    .ScanByMediaIdAsync(mediaId, cancellationToken);

                    msg.IsSuccess   = true;
                    msg.Type        = MediaOperationType.RescanFaces;
                    msg.MediaId     = mediaId;
                    msg.OperationId = message.OperationId;
                }
                catch (Exception ex)
                {
                    msg.IsSuccess = false;
                    msg.Message   = ex.Message;
                }

                await _bus.Publish(msg, cancellationToken);
            }

            var completedmsg = new MediaOperationRequestCompletedMessage
            {
                Type         = MediaOperationType.RescanFaces,
                OperationId  = message.OperationId,
                SuccessCount = messages.Where(x => x.IsSuccess).Count(),
                ErrorCount   = messages.Where(x => !x.IsSuccess).Count(),
            };

            await _bus.Publish(completedmsg, cancellationToken);
        }