diff --git a/PocketSharp.Tests/ReadTests.cs b/PocketSharp.Tests/ReadTests.cs index 25090b4..a67da09 100644 --- a/PocketSharp.Tests/ReadTests.cs +++ b/PocketSharp.Tests/ReadTests.cs @@ -16,7 +16,7 @@ namespace PocketSharp.Tests { PocketReader reader = new PocketReader(); - string result = await reader.Read(new Uri("https://github.com/ceee/PocketSharp")); + string result = await reader.Read(new Uri("http://frontendplay.com/story/4/http-caching-demystified-part-2-implementation")); Assert.True(result.Length > 0); } diff --git a/PocketSharp/PocketReader.cs b/PocketSharp/PocketReader.cs index 13a6d38..f846ee7 100644 --- a/PocketSharp/PocketReader.cs +++ b/PocketSharp/PocketReader.cs @@ -72,6 +72,7 @@ namespace PocketSharp Url = uri.ToString(), DomSerializationParams = new DomSerializationParams() { + BodyOnly = true, PrettyPrint = true, DontIncludeContentTypeMetaElement = true, DontIncludeMobileSpecificMetaElements = true, @@ -82,7 +83,7 @@ namespace PocketSharp // process/transcode HTML TranscodingResult transcodingResult = transcoder.Transcode(transcodingInput); - + return transcodingResult.ExtractedContent; } diff --git a/PortablePorts/NReadability/DomSerializationParams.cs b/PortablePorts/NReadability/DomSerializationParams.cs index f1acd1c..87d8a26 100644 --- a/PortablePorts/NReadability/DomSerializationParams.cs +++ b/PortablePorts/NReadability/DomSerializationParams.cs @@ -43,6 +43,11 @@ namespace NReadability /// public bool DontIncludeGeneratorMetaElement { get; set; } + /// + /// Render complete Website or only the Body + /// + public bool BodyOnly { get; set; } + #endregion } } diff --git a/PortablePorts/NReadability/SgmlDomSerializer.cs b/PortablePorts/NReadability/SgmlDomSerializer.cs index eff512c..10308e7 100644 --- a/PortablePorts/NReadability/SgmlDomSerializer.cs +++ b/PortablePorts/NReadability/SgmlDomSerializer.cs @@ -36,7 +36,15 @@ namespace NReadability /// /// System.Xml.Linq.XDocument instance containing the DOM to be serialized. /// Contains parameters that modify the behaviour of the output serialization. - /// Serialized representation of the DOM. + /// if set to true [returns body only]. + /// + /// Serialized representation of the DOM. + /// + /// + /// The document must have a root. + /// or + /// The document's root must be an html element. + /// public string SerializeDocument(XDocument document, DomSerializationParams domSerializationParams) { if (!domSerializationParams.DontIncludeContentTypeMetaElement @@ -74,6 +82,16 @@ namespace NReadability result = "\r\n" + result; } + if (domSerializationParams.BodyOnly && document.Root != null) + { + var body = document.Root.GetChildrenByTagName("body").FirstOrDefault(); + + if (body != null) + { + result = body.GetInnerHtml(); + } + } + return result; } diff --git a/PortablePorts/NReadability/TranscodingResult.cs b/PortablePorts/NReadability/TranscodingResult.cs index 5182c2c..15d06bd 100644 --- a/PortablePorts/NReadability/TranscodingResult.cs +++ b/PortablePorts/NReadability/TranscodingResult.cs @@ -1,3 +1,4 @@ +using System.Xml.Linq; namespace NReadability { public class TranscodingResult @@ -17,5 +18,7 @@ namespace NReadability public string ExtractedTitle { get; set; } public string NextPageUrl { get; set; } + + public XDocument RawDocument { get; set; } } }