using System.Threading.Tasks;
using Microsoft.Playwright;
namespace FinlyticNews.Adapters.Scraping;
///
/// Specialized article detail scraper adapter for Finanznachrichten.de.
///
public class FinanznachrichtenScraperAdapter : ArticleScraperAdapter
{
///
public override string Hostname => "finanznachrichten.de";
///
public override string ArticleBodySelector => "#article-content, div.article-text, div.headlineBody";
///
public override async Task 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);
}
}