@@ -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