コード例 #1
0
ファイル: MediaAIService.cs プロジェクト: lulzzz/magic-media
        private async Task <MediaAI> AnalyseMediaAsync(
            Media media,
            ICloudAIMediaAnalyser analyser,
            CancellationToken cancellationToken)
        {
            Log.Information("Analyse media {Id} using {Analyzer}", media.Id, analyser.Source);

            MediaBlobData?request = _mediaService.GetBlobRequest(media, MediaFileType.Original);

            using Stream imageStream = _mediaStore.Blob.GetStreamAsync(request);
            using Stream stream      = await RemoveExifDataAsync(imageStream, cancellationToken);

            MediaAI aiData = new();

            try
            {
                aiData = await analyser.AnalyseImageAsync(
                    stream,
                    cancellationToken);
            }
            catch (Exception ex)
            {
                aiData.SourceInfo = new List <MediaAISourceInfo>
                {
                    new MediaAISourceInfo
                    {
                        AnalysisDate = DateTime.UtcNow,
                        Source       = analyser.Source,
                        Success      = false,
                        Data         = new()
                        {
コード例 #2
0
ファイル: MediaAIService.cs プロジェクト: lulzzz/magic-media
        public async Task ProcessNewBySourceAsync(
            AISource source,
            CancellationToken cancellationToken)
        {
            IEnumerable <MediaAI> result = await _mediaStore.MediaAI.GetWithoutSourceInfoAsync(
                source,
                limit : 1,
                excludePersons : true,
                cancellationToken);

            foreach (MediaAI mediaAI in result)
            {
                Media media = await _mediaService.GetByIdAsync(mediaAI.MediaId, cancellationToken);

                ICloudAIMediaAnalyser analyser = _analysers.Single(x => x.Source == source);

                MediaAI aiData = await AnalyseMediaAsync(media, analyser, cancellationToken);

                await SaveMediaAIDatas(new[] { aiData }, cancellationToken);
            }
        }