public void Test(string inpuNewsText, string expectedSubtitle, string expectedNewsText) { var data = new FinWireData { NewsText = inpuNewsText }.BuildSubtitle(); Assert.AreEqual(expectedSubtitle, data.SubTitle); Assert.AreEqual(expectedNewsText, data.NewsText); }
public static FinWireData PostProcessTitle(this FinWireData finwireData) { finwireData = finwireData.ParseStockRecommendationsDayOfWeek(); finwireData.Title = finwireData.Title .ReplaceStockholmBullets() .Remove("(R)") .Trim(); return(finwireData); }
public async Task AddSingleNews(FinWireData finwireData) { var finwireXmlNewsAdded = await _dbContext.FinwireXmlNews.AddAsync(new FinwireXmlNews { DateTime = DateTime.Now, FileContent = finwireData.RoughXml, FileName = finwireData.Guid, }); if (!_dbContext.FinwireNews.Any(x => finwireData.Guid == x.Guid)) { var newsEntity = finwireData.ToFinwireNews(); newsEntity.FinautoPassed = _finwireFilterService.IsFilterPassed(finwireData); newsEntity.FinwireAgency = _dbContext.FinwireAgencies.FirstOrDefault(x => x.Agency == finwireData.Agency) ?? (await _dbContext.AddAsync(new FinwireAgency { Agency = finwireData.Agency })).Entity; newsEntity.FinwireXmlNews = finwireXmlNewsAdded.Entity; var newsEntityAdded = (await _dbContext.AddAsync(newsEntity)).Entity; //todo make generic method in helper etc, find better solution using EF Core finwireData.SocialTags?.ForEach(async x => await _dbContext.AddAsync(new FinwireNew2FirnwireSocialTag { FinwireNew = newsEntityAdded, FinwireSocialTag = _dbContext.FinwireSocialTags.FirstOrDefault(y => y.Tag == x) ?? (await _dbContext.AddAsync(new FinwireSocialTag { Tag = x })).Entity }) ); finwireData.Companies?.ForEach(async x => { await _dbContext.AddAsync(new FinwireNew2FinwireCompany { FinwireNew = newsEntityAdded, FinwireCompany = _dbContext.FinwireCompanies.FirstOrDefault(y => y.Company == x) ?? (await _dbContext.AddAsync(new FinwireCompany { Company = x, Slug = x.ToSlug() })).Entity }); }); } await _dbContext.SaveChangesAsync(); }
public bool IsFilterPassed(FinWireData finwireData) { //todo logging var contentPassed = IsContentFilterPassed(finwireData.HtmlText); var titleWhiteListPassed = IsTitleWhiteListPassed(finwireData.Title); var tittleBlackListNotPassed = IsTitleBlackFilterNotPassed(finwireData.Title); var contentTotalPassed = (contentPassed && !tittleBlackListNotPassed) || titleWhiteListPassed; var companiesPassed = IsCompaniesWhiteListPassed(finwireData.Companies); var soicalTagsPassed = IsSocialTagsWhiteListFilterPassed(finwireData.SocialTags); var termsPassed = companiesPassed || soicalTagsPassed; var filterPassed = contentTotalPassed && termsPassed; return(filterPassed); }
public static FinWireData BuildSubtitle(this FinWireData finwireData) { var paragraphDelimeter = "<br/><br/>"; var splitedEls = finwireData.NewsText.Split(paragraphDelimeter); finwireData.SubTitle = splitedEls[0]; //if single paragraph do nothing if (splitedEls.Length > 1) { finwireData.NewsText = finwireData.NewsText.Remove(0, splitedEls[0].Length + paragraphDelimeter.Length); } return(finwireData); }
//ported by original finauto_publish.php started line 82 public static FinWireData ParseStockRecommendationsDayOfWeek(this FinWireData finWireData) { if (finWireData.Title.Contains("Dagens aktierekommendationer i översikt") || finWireData.Title.Contains("Dagens aktierekomendationer i översikt")) { finWireData.Title = $"{_dictDaysOfWeek[finWireData.Date.DayOfWeek]} aktierekommendationer i översikt"; finWireData.HtmlText = "<p>En kort sammanställning av de rekommendationsnyheter som Finwire News har rapporterat om hittills idag, med nyheter som rör...</p>" + finWireData.HtmlText.Replace("I tabellen nedan visas ett axplock av de rekommendationsnyheter som Finwire News har rapporterat om i dag.", "I tabellen nedan visas ett axplock av dagens rekommendationsnyheter."); } return(finWireData); }
public static FinwireNew ToFinwireNews(this FinWireData finwireData) { var imgData = ImageHelper.GetImageData(finwireData.SocialTags, finwireData.Companies); var r = new FinwireNew { Guid = finwireData.Guid, Title = finwireData.Title, Subtitle = finwireData.SubTitle, Date = finwireData.Date, NewsText = finwireData.HtmlText, ImageRelativeUrl = ImageHelper.AbsoluteUrlToRelativeUrl(imgData.ImageAbsoluteUrl), ImageSource = imgData.ImageSource, ImageLabel = imgData.Label, Slug = finwireData.TittleSlug, IsFinwireNews = true }; return(r); }