mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-08-05 08:07:33 +02:00
refactor: more feed parsing tweaks (#3748)
This commit is contained in:
@@ -22,6 +22,11 @@ abstract class FeedExpander extends BridgeAbstract
|
||||
if ($xmlString === '') {
|
||||
throw new \Exception(sprintf('Unable to parse xml from `%s` because we got the empty string', $url), 10);
|
||||
}
|
||||
// prepare/massage the xml to make it more acceptable
|
||||
$badStrings = [
|
||||
'»',
|
||||
];
|
||||
$xmlString = str_replace($badStrings, '', $xmlString);
|
||||
$feedParser = new FeedParser();
|
||||
$this->feed = $feedParser->parseFeed($xmlString);
|
||||
$items = array_slice($this->feed['items'], 0, $maxItems);
|
||||
|
@@ -11,7 +11,10 @@ final class FeedParser
|
||||
$xmlErrors = libxml_get_errors();
|
||||
libxml_use_internal_errors(false);
|
||||
if ($xml === false) {
|
||||
throw new \Exception('Unable to parse xml');
|
||||
if ($xmlErrors) {
|
||||
$firstXmlErrorMessage = $xmlErrors[0]->message;
|
||||
}
|
||||
throw new \Exception(sprintf('Unable to parse xml: %s', $firstXmlErrorMessage ?? ''));
|
||||
}
|
||||
$feed = [
|
||||
'title' => null,
|
||||
@@ -123,7 +126,6 @@ final class FeedParser
|
||||
{
|
||||
// Primary data is compatible to 0.91 with some additional data
|
||||
$item = $this->parseRss091Item($feedItem);
|
||||
|
||||
$namespaces = $feedItem->getNamespaces(true);
|
||||
if (isset($namespaces['dc'])) {
|
||||
$dc = $feedItem->children($namespaces['dc']);
|
||||
@@ -192,7 +194,14 @@ final class FeedParser
|
||||
|
||||
public function parseRss091Item(\SimpleXMLElement $feedItem): array
|
||||
{
|
||||
$item = [];
|
||||
$item = [
|
||||
'uri' => null,
|
||||
'title' => null,
|
||||
'content' => null,
|
||||
'timestamp' => null,
|
||||
'author' => null,
|
||||
'enclosures' => [],
|
||||
];
|
||||
if (isset($feedItem->link)) {
|
||||
// todo: trim uri
|
||||
$item['uri'] = (string)$feedItem->link;
|
||||
|
Reference in New Issue
Block a user