mirror of
https://github.com/sbrl/PolyFeed.git
synced 2024-11-22 06:23:02 +00:00
Absolutify urls before generating feeds
This commit is contained in:
parent
6bb8da3660
commit
5f3d1f824d
2 changed files with 33 additions and 0 deletions
|
@ -67,6 +67,9 @@ namespace PolyFeed
|
||||||
|
|
||||||
HtmlNode document = html.DocumentNode;
|
HtmlNode document = html.DocumentNode;
|
||||||
|
|
||||||
|
document.AbsolutifyUris(new Uri(source.Feed.Url));
|
||||||
|
|
||||||
|
|
||||||
await Console.Error.WriteLineAsync("[Builder/Html] Generating feed content");
|
await Console.Error.WriteLineAsync("[Builder/Html] Generating feed content");
|
||||||
|
|
||||||
// Add the title
|
// Add the title
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Fizzler.Systems.HtmlAgilityPack;
|
using Fizzler.Systems.HtmlAgilityPack;
|
||||||
using HtmlAgilityPack;
|
using HtmlAgilityPack;
|
||||||
|
|
||||||
|
@ -30,5 +32,33 @@ namespace PolyFeed.Helpers
|
||||||
|
|
||||||
return selectedNode.Attributes[settings.Attribute].Value;
|
return selectedNode.Attributes[settings.Attribute].Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Searches for and converts all the links that are children of the current
|
||||||
|
/// <see cref="HtmlNode" /> to absolute URIs.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="rootNode">The root node to search from.</param>
|
||||||
|
/// <param name="baseUri">The base URI to use for conversion.</param>
|
||||||
|
/// <returns>The number of nodes updated.</returns>
|
||||||
|
public static int AbsolutifyUris(this HtmlNode rootNode, Uri baseUri)
|
||||||
|
{
|
||||||
|
int nodesUpdated = 0;
|
||||||
|
Parallel.ForEach(rootNode.QuerySelectorAll("a, img"), (HtmlNode node) => {
|
||||||
|
string attributeName = null;
|
||||||
|
if (node.Attributes["href"] != null) attributeName = "href";
|
||||||
|
if (node.Attributes["src"] != null) attributeName = "src";
|
||||||
|
|
||||||
|
if (node.Attributes[attributeName] == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
node.Attributes[attributeName].Value = new Uri(
|
||||||
|
baseUri,
|
||||||
|
node.Attributes[attributeName].Value
|
||||||
|
).ToString();
|
||||||
|
|
||||||
|
Interlocked.Increment(ref nodesUpdated);
|
||||||
|
});
|
||||||
|
return nodesUpdated;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue