public void TestGetMetadataDateMeta() { HtmlParser parser = new HtmlParser(new HtmlParserOptions()); IHtmlDocument doc = parser.ParseDocument(@"<html> <head> <meta itemprop=""datePublished"" content=""2110-10-21"" /> </head> <body></body> </html>"); Assert.Equal(new DateTime(2110, 10, 21), Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "").PublicationDate); }
public void TestGetMetadataAuthor() { HtmlParser parser = new HtmlParser(new HtmlParserOptions()); IHtmlDocument doc = parser.ParseDocument(@"<html> <head> <meta name=""author"" content=""Secret Man""> </head> <body></body> </html>"); Assert.Equal("Secret Man", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "").Author); }
public void TestGetMetadataSiteName() { HtmlParser parser = new HtmlParser(new HtmlParserOptions()); IHtmlDocument doc = parser.ParseDocument(@"<html> <head> <meta name=""og:site_name"" content=""Some Good Site""/> </head> <body></body> </html>"); Assert.Equal("Some Good Site", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "en").SiteName); }
public void TestGetMetadataDescription() { HtmlParser parser = new HtmlParser(new HtmlParserOptions()); IHtmlDocument doc = parser.ParseDocument(@"<html> <head> <meta name=""og:description"" content=""The best article there is. Right here""/> </head> <body></body> </html>"); Assert.Equal("The best article there is. Right here", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "en").Excerpt); }
public void TestGetMetadataLanguage() { var parser = new HtmlParser(new HtmlParserOptions()); var doc = parser.ParseDocument(@"<html> <head> <title>Some title</title> <meta http-equiv=""Content-Language"" content=""it""> </head> <body></body> </html>"); Assert.Equal("it", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "", new Dictionary <string, string>()).Language); }
public void TestGetMetadataTitle() { var parser = new HtmlParser(new HtmlParserOptions()); var doc = parser.ParseDocument(@"<html> <head> <title>Some title</title> <meta property=""twitter:title"" content=""Some Good Idea""/> </head> <body></body> </html>"); Assert.Equal("Some Good Idea", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "en", new Dictionary <string, string>()).Title); }
/// <summary> /// It combines the min values of two localizability attributes. /// </summary> /// <param name="first">first </param> /// <param name="second">second</param> /// <returns>LocalizabilityAttribute</returns> private LocalizabilityAttribute CombineMinimumLocalizability( LocalizabilityAttribute first, LocalizabilityAttribute second ) { if (first == null || second == null) { return((first == null) ? second : first); } // min of two readability enum. The less the more restrictive. Readability readability = (Readability)Math.Min( (int)first.Readability, (int)second.Readability ); // min of two Modifiability enum. The less the more restrictive. Modifiability modifiability = (Modifiability)Math.Min( (int)first.Modifiability, (int)second.Modifiability ); // for category, NeverLocalize < Ignore < { all others } < None // If both categories belong to { all others }, first.Category wins LocalizationCategory category = LocalizationCategory.None; if (first.Category == LocalizationCategory.NeverLocalize || second.Category == LocalizationCategory.NeverLocalize) { category = LocalizationCategory.NeverLocalize; } else if (first.Category == LocalizationCategory.Ignore || second.Category == LocalizationCategory.Ignore) { category = LocalizationCategory.Ignore; } else { category = (first.Category != LocalizationCategory.None) ? first.Category : second.Category; } LocalizabilityAttribute result = new LocalizabilityAttribute(category); result.Readability = readability; result.Modifiability = modifiability; return(result); }
public void TestGetMetadataAuthorFromJsonLD() { var parser = new HtmlParser(new HtmlParserOptions()); var doc = parser.ParseDocument(@"<html> <head> <meta name=""author"" content=""Secret Man""> <script type=""application/ld+json""> { ""@context"": ""http://schema.org"" ,""@type"": ""Article"" ,""author"": { ""@type"": ""Person"", ""name"": ""Real Author"" } } </script> </head> <body></body> </html>"); Assert.Equal("Real Author", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "", Readability.GetJSONLD(doc)).Author); }
internal LocalizabilityGroup() { Modifiability = (Modifiability) InvalidValue; Readability = (Readability) InvalidValue; Category = (LocalizationCategory) InvalidValue; }
public void TestCleanTitleNonStandardFormat() { Assert.Equal("Big title [ Wikipedia ]", Readability.CleanTitle("Big title [ Wikipedia ]", "Wikipedia")); }
public void TestCleanTitleNoSeparator() { Assert.Equal("Big title Wikipedia", Readability.CleanTitle("Big title Wikipedia", "Wikipedia")); }
public void TestCleanTitleMark() { Assert.Equal("Big title", Readability.CleanTitle("Big title » Wikipedia", "Wikipedia")); }
public void TestCleanTitleBackslash() { Assert.Equal("Big title", Readability.CleanTitle("Big title / Wikipedia", "Wikipedia")); }
public void TestCleanTitleNoSitename() { Assert.Equal("Big title ", Readability.CleanTitle("Big title ", "Wikipedia")); }
public void TestGetMetadataFeaturedImage() { var parser = new HtmlParser(new HtmlParserOptions()); var doc = parser.ParseDocument(@"<html> <head> <meta name=""weibo:article:image"" content=""https://it.wikipedia.org/static/images/project-logos/itwiki-2x.png""> </head> <body></body> </html>"); Assert.Equal("https://it.wikipedia.org/static/images/project-logos/itwiki-2x.png", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "", new Dictionary <string, string>()).FeaturedImage); }
internal LocalizabilityGroup() { Modifiability = (Modifiability)InvalidValue; Readability = (Readability)InvalidValue; Category = (LocalizationCategory)InvalidValue; }