diff --git a/CHANGELOG.md b/CHANGELOG.md
index c20d8146d..92f7e2dff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,9 @@
# FreshRSS changelog
-## 2018-0X-XX FreshRSS 1.11.1-dev
+## 2018-06-XX FreshRSS 1.11.1-dev
+* Features
+ * Better support of `media:` tags such as thumbnails and descriptions (e.g. for YouTube) [#944](https://github.com/FreshRSS/FreshRSS/issues/944)
* Bug fixing
* Fix regression in fetching full articles content [#1917](https://github.com/FreshRSS/FreshRSS/issues/1917)
* Updated sharing to Mastodon [#1904](https://github.com/FreshRSS/FreshRSS/issues/1904)
diff --git a/app/Models/Feed.php b/app/Models/Feed.php
index c8ccff09b..07a7a5459 100644
--- a/app/Models/Feed.php
+++ b/app/Models/Feed.php
@@ -359,21 +359,45 @@ class FreshRSS_Feed extends Minz_Model {
foreach ($item->get_enclosures() as $enclosure) {
$elink = $enclosure->get_link();
if ($elink != '' && empty($elinks[$elink])) {
- $elinks[$elink] = '1';
+ $content .= '
';
+
+ if ($enclosure->get_title() != '') {
+ $content .= '
' . $enclosure->get_title() . '
';
+ }
+
+ $enclosureContent = '';
+ $elinks[$elink] = true;
$mime = strtolower($enclosure->get_type());
- if (strpos($mime, 'image/') === 0) {
- $content .= '

';
- } elseif (strpos($mime, 'audio/') === 0) {
- $content .= '
';
+ } elseif ($medium === 'audio' || strpos($mime, 'audio/') === 0) {
+ $enclosureContent .= '
💾
';
- } elseif (strpos($mime, 'video/') === 0) {
- $content .= '
';
- } elseif (strpos($mime, 'application/') === 0 || strpos($mime, 'text/') === 0) {
- $content .= '
💾
';
+ } elseif ($medium != '' || strpos($mime, 'application/') === 0 || strpos($mime, 'text/') === 0) {
+ $enclosureContent .= '
💾
';
} else {
unset($elinks[$elink]);
}
+
+ $thumbnailContent = '';
+ foreach ($enclosure->get_thumbnails() as $thumbnail) {
+ if (empty($elinks[$thumbnail])) {
+ $elinks[$thumbnail] = true;
+ $thumbnailContent .= '

';
+ }
+ }
+
+ $content .= $thumbnailContent;
+ $content .= $enclosureContent;
+
+ if ($enclosure->get_description() != '') {
+ $content .= '
' . $enclosure->get_description() . '
';
+ }
+ $content .= "
\n";
}
}
diff --git a/lib/SimplePie/SimplePie.php b/lib/SimplePie/SimplePie.php
index 5cd445b6d..b591bcddd 100644
--- a/lib/SimplePie/SimplePie.php
+++ b/lib/SimplePie/SimplePie.php
@@ -1322,7 +1322,12 @@ class SimplePie
function cleanMd5($rss)
{
- return md5(preg_replace(array('#<(lastBuildDate|pubDate|updated|feedDate|dc:date|slash:comments)>[^<]+\\1>#', '##s'), '', $rss));
+ return md5(preg_replace(array(
+ '#<(lastBuildDate|pubDate|updated|feedDate|dc:date|slash:comments)>[^<]+\\1>#',
+ '#<(media:starRating|media:statistics) [^/<>]+/>#',
+ '##s',
+ ), '', $rss));
+
}
/**
diff --git a/p/themes/base-theme/template.css b/p/themes/base-theme/template.css
index 72487ca17..9b8ad902b 100644
--- a/p/themes/base-theme/template.css
+++ b/p/themes/base-theme/template.css
@@ -832,11 +832,15 @@ input:checked + .slide-container .properties {
display: none;
}
-.enclosure > [download] {
+.enclosure [download] {
font-size: xx-large;
margin-left: .8em;
}
+pre.enclosure-description {
+ white-space: pre-line;
+}
+
/*=== MOBILE */
/*===========*/
@media(max-width: 840px) {