diff options
-rw-r--r-- | include/functions2.php | 33 | ||||
-rw-r--r-- | include/rssfuncs.php | 7 | ||||
-rw-r--r-- | plugins/cache_starred_images/init.php | 3 |
3 files changed, 23 insertions, 20 deletions
diff --git a/include/functions2.php b/include/functions2.php index 2b34f287c..6017a78f8 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -888,7 +888,7 @@ $doc->loadHTML($charset_hack . $res); $xpath = new DOMXPath($doc); - $entries = $xpath->query('(//a[@href]|//img[@src])'); + $entries = $xpath->query('(//a[@href]|//img[@src]|//video/source[@src])'); $ttrss_uses_https = parse_url(get_self_url_prefix(), PHP_URL_SCHEME) === 'https'; @@ -903,28 +903,29 @@ $entry->setAttribute('rel', 'noopener noreferrer'); } - if ($entry->nodeName == 'img') { - - if ($entry->hasAttribute('src')) { - $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); - - $cached_filename = CACHE_DIR . '/images/' . sha1($src) . '.png'; + if ($entry->hasAttribute('src')) { + $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); - if (file_exists($cached_filename)) { - $src = SELF_URL_PATH . '/public.php?op=cached_image&hash=' . sha1($src) . '.png'; + $extension = $entry->tagName == 'source' ? '.mp4' : '.png'; + $cached_filename = CACHE_DIR . '/images/' . sha1($src) . $extension; - if ($entry->hasAttribute('srcset')) { - $entry->removeAttribute('srcset'); - } + if (file_exists($cached_filename)) { + $src = SELF_URL_PATH . '/public.php?op=cached_image&hash=' . sha1($src) . $extension; - if ($entry->hasAttribute('sizes')) { - $entry->removeAttribute('sizes'); - } + if ($entry->hasAttribute('srcset')) { + $entry->removeAttribute('srcset'); } - $entry->setAttribute('src', $src); + if ($entry->hasAttribute('sizes')) { + $entry->removeAttribute('sizes'); + } } + $entry->setAttribute('src', $src); + } + + if ($entry->nodeName == 'img') { + if ($entry->hasAttribute('src')) { $is_https_url = parse_url($entry->getAttribute('src'), PHP_URL_SCHEME) === 'https'; diff --git a/include/rssfuncs.php b/include/rssfuncs.php index fd4a10f13..1f38091b6 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -1239,13 +1239,14 @@ $doc->loadHTML($charset_hack . $html); $xpath = new DOMXPath($doc); - $entries = $xpath->query('(//img[@src])'); + $entries = $xpath->query('(//img[@src])|(//video/source[@src])'); foreach ($entries as $entry) { - if ($entry->hasAttribute('src')) { + if ($entry->hasAttribute('src') && strpos($entry->getAttribute('src'), "data:") !== 0) { $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); - $local_filename = CACHE_DIR . "/images/" . sha1($src) . ".png"; + $extension = $entry->tagName == 'source' ? '.mp4' : '.png'; + $local_filename = CACHE_DIR . "/images/" . sha1($src) . $extension; if ($debug) _debug("cache_images: downloading: $src to $local_filename"); diff --git a/plugins/cache_starred_images/init.php b/plugins/cache_starred_images/init.php index 63637bfd8..de627fc77 100644 --- a/plugins/cache_starred_images/init.php +++ b/plugins/cache_starred_images/init.php @@ -180,7 +180,8 @@ class Cache_Starred_Images extends Plugin implements IHandler { foreach ($entries as $entry) { - if ($entry->hasAttribute('src')) { + if ($entry->hasAttribute('src') && strpos($entry->getAttribute('src'), "data:") !== 0) { + $has_images = true; $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); |