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.");
 | |
|     }
 | |
| } |