Example #1
0
        public IActionResult Create(string originalUrl, string provider, string memo, bool isPrivate)
        {
            var urlPerview = new UrlPerview();

            try
            {
                urlPerview = _urlPerviewService.GetUrlPerview(originalUrl);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            var shortUrl = new ShortUrl
            {
                OriginalUrl     = originalUrl,
                Provider        = provider,
                Memo            = memo,
                IsPrivate       = isPrivate,
                MetaTitle       = urlPerview?.Title,
                MetaDescription = urlPerview?.Description,
                PreviewImageUrl = urlPerview?.ListImages?.FirstOrDefault()
            };

            TryValidateModel(shortUrl);
            if (ModelState.IsValid)
            {
                _shortUrlService.Save(shortUrl);

                return(RedirectToAction(actionName: nameof(CreateSuccess), routeValues: new { path = shortUrl.Path }));
            }

            return(View(shortUrl));
        }
Example #2
0
        /// <summary>
        /// Get preview data from image
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public UrlPerview GetUrlPerview(string url)
        {
            if (string.IsNullOrEmpty(url))
            {
                return(new UrlPerview());
            }

            UrlPerview scrap = new UrlPerview();

            string[]      imgs       = new string[100];
            List <string> lstUrl     = new List <string>();
            List <string> TempImages = new List <string>();

            lstUrl = GetUrlList(url);

            string validUrl = GetValidUrl(lstUrl);

            if (!string.IsNullOrWhiteSpace(validUrl))
            {
                string s2 = GetHtmlPage(validUrl);

                scrap.Url = validUrl;
                var metadata = MetaDescription(s2);
                scrap.Description = (string.IsNullOrEmpty(metadata.Desc) ? "" : metadata.Desc);

                if (!string.IsNullOrEmpty(metadata.Image))
                {
                    TempImages.Add(metadata.Image);
                }
                else
                {
                    var images = GetRegImages(s2);
                    foreach (var item in images)
                    {
                        if (item.ToLower().Contains("logo"))
                        {
                            TempImages.Insert(0, item);

                            break;
                        }
                        else
                        {
                            TempImages.Add(item);
                        }
                    }
                }

                List <string> PerfactImageUrls;

                var task = Task.Run(() => formatImageUrl(TempImages, url));

                if (task.Wait(TimeSpan.FromSeconds(2)))
                {
                    PerfactImageUrls = task.Result.ToList <string>();
                    scrap.ListImages = PerfactImageUrls.Take(4).ToList();
                }
                scrap.Title = GetTitle(s2);
            }
            else
            {
            }

            return(scrap);
        }