fedi-feed-router/routes/console.php

38 lines
1.3 KiB
PHP

<?php
use App\Console\Commands\FetchNewArticlesCommand;
use App\Models\Article;
use App\Modules\Lemmy\Services\LemmyPublisher;
use App\Services\Article\ArticleFetcher;
use Illuminate\Support\Facades\Schedule;
Schedule::command(FetchNewArticlesCommand::class)->hourly();
Schedule::call(function () {
$article = Article::whereDoesntHave('articlePublications')
->where('is_valid', true)
->first();
if ($article) {
try {
logger()->info('Publishing article to Lemmy via scheduler', [
'article_id' => $article->id,
'url' => $article->url
]);
$extractedData = ArticleFetcher::fetchArticleData($article);
LemmyPublisher::fromConfig()->publish($article, $extractedData);
logger()->info('Successfully published article to Lemmy', [
'article_id' => $article->id
]);
} catch (Exception $e) {
logger()->error('Failed to publish article to Lemmy via scheduler', [
'article_id' => $article->id,
'error' => $e->getMessage()
]);
}
} else {
logger()->debug('No unpublished valid articles found for Lemmy publishing');
}
})->everyFifteenMinutes()->name('publish-to-lemmy');