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)); }
/// <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); }