diff options
author | Éloi Rivard <eloi.rivard@aquilenet.fr> | 2020-02-16 14:26:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-16 14:26:06 +0100 |
commit | 306d3cdc608343b5739b98a7d6b1e816416489c9 (patch) | |
tree | f62b93191d0677709556c7c547d4af4e9eef19d2 /lib | |
parent | cdd15c181875dbbc62844718365c47b099027b3a (diff) |
Basic Media-RSS support (#599)
Signed-off-by: Éloi Rivard <azmeuk@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Db/Item.php | 28 | ||||
-rwxr-xr-x | lib/Fetcher/FeedFetcher.php | 10 |
2 files changed, 37 insertions, 1 deletions
diff --git a/lib/Db/Item.php b/lib/Db/Item.php index 5491dff25..e88635435 100644 --- a/lib/Db/Item.php +++ b/lib/Db/Item.php @@ -41,6 +41,10 @@ class Item extends Entity implements IAPI, \JsonSerializable protected $enclosureMime; /** @var string|null */ protected $enclosureLink; + /** @var string|null */ + protected $mediaThumbnail; + /** @var string|null */ + protected $mediaDescription; /** @var int */ protected $feedId; /** @var int */ @@ -84,6 +88,8 @@ class Item extends Entity implements IAPI, \JsonSerializable $item->setBody($import['body']); $item->setEnclosureMime($import['enclosureMime']); $item->setEnclosureLink($import['enclosureLink']); + $item->setMediaThumbnail($import['mediaThumbnail']); + $item->setMediaDescription($import['mediaDescription']); $item->setRtl($import['rtl']); $item->setUnread($import['unread']); $item->setStarred($import['starred']); @@ -259,6 +265,8 @@ class Item extends Entity implements IAPI, \JsonSerializable 'body' => $this->getBody(), 'enclosureMime' => $this->getEnclosureMime(), 'enclosureLink' => $this->getEnclosureLink(), + 'mediaThumbnail' => $this->getMediaThumbnail(), + 'mediaDescription' => $this->getMediaDescription(), 'feedId' => $this->getFeedId(), 'unread' => $this->isUnread(), 'starred' => $this->isStarred(), @@ -315,6 +323,22 @@ class Item extends Entity implements IAPI, \JsonSerializable } } + public function setMediaThumbnail(string $mediaThumbnail = null) + { + if ($this->mediaThumbnail !== $mediaThumbnail) { + $this->mediaThumbnail = $mediaThumbnail; + $this->markFieldUpdated('mediaThumbnail'); + } + } + + public function setMediaDescription(string $mediaDescription = null) + { + if ($this->mediaDescription !== $mediaDescription) { + $this->mediaDescription = $mediaDescription; + $this->markFieldUpdated('mediaDescription'); + } + } + public function setFeedId(int $feedId) { if ($this->feedId !== $feedId) { @@ -446,6 +470,8 @@ class Item extends Entity implements IAPI, \JsonSerializable 'body' => $this->getBody(), 'enclosureMime' => $this->getEnclosureMime(), 'enclosureLink' => $this->getEnclosureLink(), + 'mediaThumbnail' => $this->getMediaThumbnail(), + 'mediaDescription' => $this->getMediaDescription(), 'feedId' => $this->getFeedId(), 'unread' => $this->isUnread(), 'starred' => $this->isStarred(), @@ -468,6 +494,8 @@ class Item extends Entity implements IAPI, \JsonSerializable 'body' => $this->getBody(), 'enclosureMime' => $this->getEnclosureMime(), 'enclosureLink' => $this->getEnclosureLink(), + 'mediaThumbnail' => $this->getMediaThumbnail(), + 'mediaDescription' => $this->getMediaDescription(), 'unread' => $this->isUnread(), 'starred' => $this->isStarred(), 'feedLink' => $feeds['feed' . $this->getFeedId()]->getLink(), diff --git a/lib/Fetcher/FeedFetcher.php b/lib/Fetcher/FeedFetcher.php index a1b7e08ec..82ad86352 100755 --- a/lib/Fetcher/FeedFetcher.php +++ b/lib/Fetcher/FeedFetcher.php @@ -256,11 +256,19 @@ class FeedFetcher implements IFeedFetcher if ($parsedItem->hasMedia()) { // TODO: Fix multiple media support foreach ($parsedItem->getMedias() as $media) { - if (!$item->isSupportedMime($media->getType())) { + if (!$item->isSupportedMime($media->getType()) + && !$media->getThumbnail() + && !$media->getDescription() + ) { continue; } $item->setEnclosureMime($media->getType()); $item->setEnclosureLink($media->getUrl()); + $item->setMediaThumbnail($media->getThumbnail()); + if ($media->getDescription()) { + $description = str_replace("\n", "<br>", $media->getDescription()); + $item->setMediaDescription($description); + } } } |