Example #1
0
 //constructors
 public AIFile(string parentName, AIType type, AISource source)
 {
     this.type       = type;
     this.source     = source;
     this.parentName = parentName;
     SetAsWork();
 }
 private IEnumerable <MediaAISourceInfo> GetSourceInfo(ImageAnalysis analysis)
 {
     var sourceInfo = new MediaAISourceInfo
     {
         AnalysisDate = DateTime.UtcNow,
         Source       = Source,
         Success      = true,
         Data         = new() { ["RequestId"] = analysis.RequestId }
Example #3
0
        public async Task <IEnumerable <Media> > GetMediaWithoutAISourceAsync(
            AISource source,
            int limit,
            CancellationToken cancellationToken)
        {
            FilterDefinition <Media> filter = Builders <Media> .Filter.And(
                Builders <Media> .Filter.Ne("AISummary.Sources", source),
                Builders <Media> .Filter.Eq(x => x.MediaType, MediaType.Image),
                Builders <Media> .Filter.Eq(x => x.State, MediaState.Active));

            IFindFluent <Media, Media>?cursor = _mediaStoreContext.Medias.Find(filter);

            return(await cursor.Limit(limit).ToListAsync(cancellationToken));
        }
Example #4
0
 public static string GetFolderPath(string name, AIType type, AISource source)
 {
     if (source == AISource.work)
     {
         return(util.workDir + name + "\\" + AITypeToString[type] + "\\");
     }
     else if (source == AISource.compiled)
     {
         return(util.compDir + name + "\\script\\ai\\");
     }
     else
     {
         return(util.gameFtDir + name + "\\script\\ai\\");
     }
 }
Example #5
0
 public void AddProjectFiles(string[] fighters, AIType[] types, AISource source)
 {
     foreach (string name in fighters)
     {
         List <AIFt.AIFile> newFiles = new List <AIFt.AIFile>();
         int ftIndex = this.fighters.FindIndex(ft => ft.name == name);
         foreach (AIType type in types)
         {
             if (File.Exists(GetFolderPath(name, type, source) + AITypeToString[type] + ".bin") &&
                 (ftIndex == -1 || !this.fighters[ftIndex].files.Exists(file => file.type == type)))
             {
                 try
                 {
                     AIFt.AIFile file = new AIFt.AIFile(name, type, source);
                     if (Directory.Exists(file.folder_address))
                     {
                         newFiles.Add(file);
                     }
                 }
                 catch (Exception e)
                 {
                     Console.WriteLine("Error on file load ({0}: {1})", name, AITypeToString[type]);
                     Console.WriteLine(e.Message);
                 }
             }
         }
         //if the fighter doesn't exist, add it
         if (ftIndex == -1 && newFiles.Count > 0)
         {
             this.fighters.Add(new AIFt(name, newFiles));
         }
         else
         {
             foreach (var file in newFiles)
             {
                 this.fighters[ftIndex].files.Add(file);
             }
         }
         Sort();
     }
 }
Example #6
0
        public async Task <IEnumerable <MediaAI> > GetWithoutSourceInfoAsync(
            AISource source,
            int limit,
            bool excludePersons,
            CancellationToken cancellationToken)
        {
            FilterDefinition <MediaAISourceInfo> elmFilter = Builders <MediaAISourceInfo>
                                                             .Filter.Eq(x => x.Source, source);

            FilterDefinition <MediaAI>?filter = Builders <MediaAI> .Filter.Not(
                Builders <MediaAI> .Filter.ElemMatch(x => x.SourceInfo, elmFilter));

            if (excludePersons)
            {
                filter &= Builders <MediaAI> .Filter.Eq(x => x.PersonCount, 0);
            }

            IFindFluent <MediaAI, MediaAI> cursor = _mediaStoreContext.MediaAI.Find(filter);

            return(await cursor.Limit(limit).ToListAsync(cancellationToken));
        }
Example #7
0
        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);
            }
        }