public virtual IImageAnalysis Create(IImageSearchResult result)
        {
            var analysis = Create();

            if (result == null)
            {
                return(analysis);
            }

            analysis.FacialAnalysis = result.FacialAnalysis;
            analysis.TextAnalysis   = result.TextAnalysis;
            analysis.VisionAnalysis = result.VisionAnalysis;
            analysis.People         = result.People;

            Item i = DataWrapper.GetItemByUri(result?.UniqueId ?? string.Empty);

            if (i == null)
            {
                return(analysis);
            }

            analysis.ImageHeight = MediaWrapper.GetImageHeight(i);
            analysis.ImageWidth  = MediaWrapper.GetImageWidth(i);
            analysis.ImageUrl    = $"/sitecore/shell/Applications/-/media/{i.ID.Guid:N}.ashx";

            return(analysis);
        }
Beispiel #2
0
        public ActionResult UpdateImageDescriptionAll(string id, string language, string db, int threshold,
                                                      bool overwrite)
        {
            if (!IsSitecoreUser())
            {
                return(LoginPage());
            }

            IEnumerable <MediaItem> fullList = MediaWrapper
                                               .GetMediaFileDescendents(id, db)
                                               .ToList();

            IEnumerable <MediaItem> list = fullList
                                           .Where(a => string.IsNullOrEmpty(a.Alt) || overwrite)
                                           .ToList();

            if (!list.Any())
            {
                return(Json(SetAltTagsAllFactory.Create(fullList.Count(), 0, 50, false)));
            }

            int updatedCount    = 0;
            var thresholdDouble = (double)threshold / 100;

            foreach (var m in list)
            {
                Caption cap = SearchService.GetTopImageCaption(m, language, thresholdDouble);
                if (cap == null || cap.Confidence < thresholdDouble)
                {
                    continue;
                }

                IImageSearchResult csr = SearchService.GetSearchResult(m.ID.ToString(), language, db);
                var newDescription     = csr?.People != null && csr.People.Any()
                    ? $"{string.Join(", ", csr.People)} - {cap.Text}"
                    : cap.Text;

                MediaWrapper.SetImageAlt(m, newDescription);
                updatedCount++;
            }

            var result = SetAltTagsAllFactory.Create(fullList.Count(), updatedCount, threshold,
                                                     overwrite);

            return(Json(result));
        }
        public virtual IImageSearchJsonResult CreateMediaSearchJsonResult(IImageSearchResult searchResult)
        {
            var obj = Provider.GetService <IImageSearchJsonResult>();

            MediaItem m = DataWrapper.GetItemByUri(searchResult.UniqueId);

            try
            {
                obj.Url = $"/sitecore/shell/-/media/{m.ID.Guid:N}.ashx";
            }
            catch (Exception ex)
            {
                obj.Url = string.Empty;
            }
            try
            {
                obj.Alt = m.Alt;
            }
            catch (Exception ex)
            {
                obj.Alt = string.Empty;
            }
            try
            {
                obj.Id = m.ID.ToString();
            }
            catch (Exception ex)
            {
                obj.Id = string.Empty;
            }
            try
            {
                obj.Title = m.DisplayName;
            }
            catch (Exception ex)
            {
                obj.Title = string.Empty;
            }

            return(obj);
        }
Beispiel #4
0
        public void DownloadImage(IImageSearchResult result, DirectoryInfo destination, string filenamePrefix, bool downloadSourcePage)
        {
            var imageUri = result.ImageUri;
            var filename = imageUri.Segments[imageUri.Segments.Length - 1];

            filename = Regex.Replace(filename, "[\\/:*?\"<>]", "_");
            var destinationPath = destination.FullName + Path.DirectorySeparatorChar + filenamePrefix + filename;

            WebDownloader.DownloadRemoteFile(imageUri.AbsoluteUri, destinationPath, null, null, imageDownloadTimeout);

            if (downloadSourcePage)
            {
                var pageUri = result.SourcePageUri;
                destinationPath = destination.FullName + Path.DirectorySeparatorChar + "html";
                if (!Directory.Exists(destinationPath))
                {
                    Directory.CreateDirectory(destinationPath);
                }
                destinationPath += Path.DirectorySeparatorChar + filenamePrefix + filename + ".html";
                WebDownloader.DownloadRemoteFile(pageUri.AbsoluteUri, destinationPath, null, null, imageDownloadTimeout);
            }
        }
        public virtual IImageDescription GetImageDescription(MediaItem m, string language)
        {
            IImageSearchResult csr = GetSearchResult(m.ID.ToString(), language, m.Database.Name);

            if (csr == null)
            {
                return(null);
            }

            List <string> descriptions = new List <string>();

            var captions = csr
                           .VisionAnalysis
                           ?.Description
                           ?.Captions
                           .Where(a => a.Confidence > Settings.TagConfidenceThreshold)
                           .Select(a => a.Text)
                           .ToList();

            var hasCaptions = captions != null && captions.Any();
            var hasPeople   = csr.People != null && csr.People.Any();

            if (hasCaptions && hasPeople)
            {
                descriptions.Add($"{string.Join(", ", csr.People)} - {captions.First()}");
            }
            else if (hasCaptions)
            {
                descriptions.AddRange(captions);
            }
            else if (hasPeople)
            {
                descriptions.Add(string.Join(", ", csr.People));
            }

            return(ImageDescriptionFactory.Create(descriptions, m.Alt));
        }
        public virtual IImageAnalysis GetImageAnalysis(string id, string language, string db)
        {
            IImageSearchResult csr = GetSearchResult(id, language, db);

            return(ImageAnalysisFactory.Create(csr));
        }