Skip to content

Commit 5105569

Browse files
committed
extract feed title
1 parent 49cf9c1 commit 5105569

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

app/src/Commands/FeedProcessor.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,14 @@ public function checkPausedFeeds(): void
171171

172172
$this->processFeed($feed);
173173

174+
$feedTitle = $this->extractFeedTitle($feed);
175+
if ($feedTitle && $feedTitle !== $feed['title']) {
176+
$this->climate->info("Updating feed title from '{$feed['title']}' to '{$feedTitle}'");
177+
}
178+
174179
$this->climate->green("✓ Feed {$feed['title']} is working again after 72 hours paused");
175180
DB::update('feeds', [
181+
'title' => $feedTitle ?: $feed['title'],
176182
'last_checked' => DB::sqleval("NOW()"),
177183
'status' => 'online',
178184
'retry_count' => 0,
@@ -197,8 +203,14 @@ public function checkPausedFeeds(): void
197203

198204
$this->processFeed($feed);
199205

206+
$feedTitle = $this->extractFeedTitle($feed);
207+
if ($feedTitle && $feedTitle !== $feed['title']) {
208+
$this->climate->info("Updating feed title from '{$feed['title']}' to '{$feedTitle}'");
209+
}
210+
200211
$this->climate->green("✓ Feed {$feed['title']} is working again after 24 hours paused");
201212
DB::update('feeds', [
213+
'title' => $feedTitle ?: $feed['title'],
202214
'last_checked' => DB::sqleval("NOW()"),
203215
'status' => 'online',
204216
'retry_count' => 0,
@@ -1186,4 +1198,36 @@ private function extractImageFromUrl(string $url): ?string
11861198
return null;
11871199
}
11881200
}
1201+
1202+
private function extractFeedTitle(array $feed): ?string
1203+
{
1204+
try {
1205+
$feedUrl = $feed['feed_url'];
1206+
$feedType = $feed['feed_type'];
1207+
1208+
$this->climate->whisper("Extracting feed title from: {$feedUrl}");
1209+
1210+
if (in_array($feedType, ['rss1', 'rss2', 'atom', 'rdf'])) {
1211+
$simplePie = new SimplePie();
1212+
$simplePie->set_feed_url($feedUrl);
1213+
$simplePie->enable_cache(false);
1214+
$simplePie->init();
1215+
1216+
if (!$simplePie->error()) {
1217+
$title = $simplePie->get_title();
1218+
if ($title) {
1219+
$this->climate->whisper("Feed title extracted: {$title}");
1220+
return $title;
1221+
}
1222+
}
1223+
}
1224+
1225+
$this->climate->whisper("Could not extract feed title");
1226+
return null;
1227+
1228+
} catch (\Exception $e) {
1229+
$this->climate->whisper("Error extracting feed title: {$e->getMessage()}");
1230+
return null;
1231+
}
1232+
}
11891233
}

0 commit comments

Comments
 (0)