35 lines
945 B
C#
35 lines
945 B
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Logging;
|
|
using Quartz;
|
|
|
|
namespace DysonNetwork.Sphere.Connection.WebReader;
|
|
|
|
[DisallowConcurrentExecution]
|
|
public class WebFeedScraperJob(
|
|
AppDatabase database,
|
|
WebFeedService webFeedService,
|
|
ILogger<WebFeedScraperJob> logger
|
|
)
|
|
: IJob
|
|
{
|
|
public async Task Execute(IJobExecutionContext context)
|
|
{
|
|
logger.LogInformation("Starting web feed scraper job.");
|
|
|
|
var feeds = await database.Set<WebFeed>().ToListAsync(context.CancellationToken);
|
|
|
|
foreach (var feed in feeds)
|
|
{
|
|
try
|
|
{
|
|
await webFeedService.ScrapeFeedAsync(feed, context.CancellationToken);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogError(ex, "Failed to scrape web feed {FeedId}", feed.Id);
|
|
}
|
|
}
|
|
|
|
logger.LogInformation("Web feed scraper job finished.");
|
|
}
|
|
} |