summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorÉloi Rivard <eloi.rivard@aquilenet.fr>2020-02-16 14:26:06 +0100
committerGitHub <noreply@github.com>2020-02-16 14:26:06 +0100
commit306d3cdc608343b5739b98a7d6b1e816416489c9 (patch)
treef62b93191d0677709556c7c547d4af4e9eef19d2 /lib
parentcdd15c181875dbbc62844718365c47b099027b3a (diff)
Basic Media-RSS support (#599)
Signed-off-by: Éloi Rivard <azmeuk@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Db/Item.php28
-rwxr-xr-xlib/Fetcher/FeedFetcher.php10
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);
+ }
}
}