From: Andrew Dolgov Date: Thu, 23 Mar 2017 11:55:40 +0000 (+0300) Subject: remove local file extensions and generalize some method names for cached media X-Git-Tag: 17.4~15 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=41bead9baa6ae6fa84834ec291167fdc780b1e63;p=tt-rss.git remove local file extensions and generalize some method names for cached media file extensions may still be present in urls, but are ignored by the backend MIGRATION (if you have any cached data worth keeping, not required): in cache/images run "rename 's/\..*$//' *" i.e. strip file extensions --- diff --git a/classes/handler/public.php b/classes/handler/public.php index 35f677f9..a6bc3ff6 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -1046,9 +1046,12 @@ class Handler_Public extends Handler { nodeName == 'img' || ($entry->parentNode && $entry->parentNode->nodeName == "video")) { + $cached_filename = CACHE_DIR . '/images/' . sha1($src); $extension = $entry->tagName == 'source' ? '.mp4' : '.png'; - $cached_filename = CACHE_DIR . '/images/' . sha1($src) . $extension; if (file_exists($cached_filename)) { - $src = get_self_url_prefix() . '/public.php?op=cached_image&hash=' . sha1($src) . $extension; + $src = get_self_url_prefix() . '/public.php?op=cached_url&hash=' . sha1($src) . $extension; if ($entry->hasAttribute('srcset')) { $entry->removeAttribute('srcset'); diff --git a/include/rssfuncs.php b/include/rssfuncs.php index e26fc38b..997ea459 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -2,7 +2,7 @@ define_default('DAEMON_UPDATE_LOGIN_LIMIT', 30); define_default('DAEMON_FEED_LIMIT', 500); define_default('DAEMON_SLEEP_INTERVAL', 120); - define_default('_MIN_CACHE_IMAGE_SIZE', 1024); + define_default('_MIN_CACHE_FILE_SIZE', 1024); function calculate_article_hash($article, $pluginhost) { $tmp = ""; @@ -864,7 +864,7 @@ _debug("force catchup: $entry_force_catchup"); if ($cache_images && is_writable(CACHE_DIR . '/images')) - cache_images($entry_content, $site_url, $debug_enabled); + cache_media($entry_content, $site_url, $debug_enabled); $entry_content = db_escape_string($entry_content, false); @@ -1227,7 +1227,7 @@ return $rss; } - function cache_images($html, $site_url, $debug) { + function cache_media($html, $site_url, $debug) { libxml_use_internal_errors(true); $charset_hack = ' @@ -1244,15 +1244,14 @@ if ($entry->hasAttribute('src') && strpos($entry->getAttribute('src'), "data:") !== 0) { $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); - $extension = $entry->tagName == 'source' ? '.mp4' : '.png'; - $local_filename = CACHE_DIR . "/images/" . sha1($src) . $extension; + $local_filename = CACHE_DIR . "/images/" . sha1($src); - if ($debug) _debug("cache_images: downloading: $src to $local_filename"); + if ($debug) _debug("cache_media: downloading: $src to $local_filename"); if (!file_exists($local_filename)) { $file_content = fetch_file_contents($src); - if ($file_content && strlen($file_content) > _MIN_CACHE_IMAGE_SIZE) { + if ($file_content && strlen($file_content) > _MIN_CACHE_FILE_SIZE) { file_put_contents($local_filename, $file_content); } } else { diff --git a/plugins/af_zz_imgproxy/init.php b/plugins/af_zz_imgproxy/init.php index f326b8e0..e0ec2f17 100644 --- a/plugins/af_zz_imgproxy/init.php +++ b/plugins/af_zz_imgproxy/init.php @@ -26,7 +26,7 @@ class Af_Zz_ImgProxy extends Plugin { if (preg_match("/image/", $enc["content_type"]) || preg_match("/\.(jpe?g|png|gif|bmp)$/i", $enc["filename"])) { $proxy_all = $this->host->get($this, "proxy_all"); - $enc["content_url"] = $this->rewrite_url_if_needed($enc["content_url"], 0, $proxy_all); + $enc["content_url"] = $this->rewrite_url_if_needed($enc["content_url"], $proxy_all); } return $enc; @@ -39,7 +39,6 @@ class Af_Zz_ImgProxy extends Plugin { public function imgproxy() { $url = rewrite_relative_url(SELF_URL_PATH, $_REQUEST["url"]); - $kind = (int) $_REQUEST["kind"]; // 1 = video // called without user context, let's just redirect to original URL if (!$_SESSION["uid"]) { @@ -47,8 +46,7 @@ class Af_Zz_ImgProxy extends Plugin { return; } - $extension = $kind == 1 ? '.mp4' : '.png'; - $local_filename = CACHE_DIR . "/images/" . sha1($url) . $extension; + $local_filename = CACHE_DIR . "/images/" . sha1($url); if ($_REQUEST["debug"] == "1") { print $url . "\n" . $local_filename; die; } @@ -107,7 +105,7 @@ class Af_Zz_ImgProxy extends Plugin { } } - function rewrite_url_if_needed($url, $kind, $all_remote = false) { + function rewrite_url_if_needed($url, $all_remote = false) { $scheme = parse_url($url, PHP_URL_SCHEME); if ($all_remote) { @@ -121,7 +119,7 @@ class Af_Zz_ImgProxy extends Plugin { if (($scheme != 'https' && $scheme != "") || $is_remote) { if (strpos($url, "data:") !== 0) { - $url = get_self_url_prefix() . "/public.php?op=pluginhandler&plugin=af_zz_imgproxy&pmethod=imgproxy&kind=$kind&url=" . + $url = get_self_url_prefix() . "/public.php?op=pluginhandler&plugin=af_zz_imgproxy&pmethod=imgproxy&url=" . urlencode($url); } } @@ -140,7 +138,7 @@ class Af_Zz_ImgProxy extends Plugin { $imgs = $xpath->query("//img[@src]"); foreach ($imgs as $img) { - $new_src = $this->rewrite_url_if_needed($img->getAttribute("src"), 0, $proxy_all); + $new_src = $this->rewrite_url_if_needed($img->getAttribute("src"), $proxy_all); if ($new_src != $img->getAttribute("src")) { $img->setAttribute("src", $new_src); @@ -154,7 +152,7 @@ class Af_Zz_ImgProxy extends Plugin { foreach ($vids as $vid) { if ($vid->hasAttribute("poster")) { - $new_src = $this->rewrite_url_if_needed($vid->getAttribute("poster"), 0, $proxy_all); + $new_src = $this->rewrite_url_if_needed($vid->getAttribute("poster"), $proxy_all); if ($new_src != $vid->getAttribute("poster")) { $vid->setAttribute("poster", $new_src); @@ -166,7 +164,7 @@ class Af_Zz_ImgProxy extends Plugin { $vsrcs = $xpath->query("source", $vid); foreach ($vsrcs as $vsrc) { - $new_src = $this->rewrite_url_if_needed($vsrc->getAttribute("src"), 1, $proxy_all); + $new_src = $this->rewrite_url_if_needed($vsrc->getAttribute("src"), $proxy_all); if ($new_src != $vsrc->getAttribute("src")) { $vid->setAttribute("src", $new_src);