feat(News): refactor news service and add sentiment tracking
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Playwright;
|
||||
|
||||
namespace FinlyticNews.Adapters.Scraping;
|
||||
|
||||
/// <summary>
|
||||
/// Specialized article detail scraper adapter for Finanznachrichten.de.
|
||||
/// </summary>
|
||||
public class FinanznachrichtenScraperAdapter : ArticleScraperAdapter
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override string Hostname => "finanznachrichten.de";
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string ArticleBodySelector => "#article-content, div.article-text, div.headlineBody";
|
||||
|
||||
/// <inheritdoc />
|
||||
public override async Task<string?> TryResolveRedirectUrlAsync(IPage page)
|
||||
{
|
||||
// 1. Bereits auf der Nachricht-Komplett Seite -> Kein Redirect nötig
|
||||
if (page.Url.Contains("/ext/nachricht-komplett"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// 2. Extraktion der nachrichtid aus dem Rating Widget (sehr zuverlässig bei FN)
|
||||
var locator = page.Locator("#article--rating-data").First;
|
||||
if (await locator.CountAsync() > 0)
|
||||
{
|
||||
var nachrichtId = await locator.GetAttributeAsync("data-nachrichtid");
|
||||
if (!string.IsNullOrEmpty(nachrichtId))
|
||||
{
|
||||
return $"https://www.finanznachrichten.de/ext/nachricht-komplett-{nachrichtId}-0.htm";
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Fallback auf Standard "Weiterlesen"-Button Verhalten der Basisklasse
|
||||
return await base.TryResolveRedirectUrlAsync(page);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user