summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-11-24 08:27:10 +0300
committerAndrew Dolgov <[email protected]>2021-11-24 08:27:10 +0300
commit831648e3c84ce50645f496e4628ed2a72bdccf10 (patch)
tree17a2aecdc5094cebfc64ab80740224d4ce580c49 /plugins
parent204f92b926a6c3a783af24bde7a0ff874f84c01d (diff)
af_redditimgur: check content-type before downloading data for og:image and imgur pages
Diffstat (limited to 'plugins')
-rwxr-xr-xplugins/af_redditimgur/init.php105
1 files changed, 60 insertions, 45 deletions
diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php
index f40d21d35..8ec947b86 100755
--- a/plugins/af_redditimgur/init.php
+++ b/plugins/af_redditimgur/init.php
@@ -496,30 +496,38 @@ class Af_RedditImgur extends Plugin {
Debug::log("handling as imgur page/whatever", Debug::LOG_VERBOSE);
- $content = UrlHelper::fetch(["url" => $entry_href,
- "http_accept" => "text/*"]);
+ $content_type = $this->get_content_type($entry_href);
- if ($content) {
- $cdoc = new DOMDocument();
+ if ($content_type && strpos($content_type, "text/html") !== false) {
- if (@$cdoc->loadHTML($content)) {
- $cxpath = new DOMXPath($cdoc);
+ $content = UrlHelper::fetch(["url" => $entry_href,
+ "http_accept" => "text/*"]);
- /** @var ?DOMElement $rel_image */
- $rel_image = $cxpath->query("//link[@rel='image_src']")->item(0);
+ if ($content) {
+ $cdoc = new DOMDocument();
- if ($rel_image) {
+ if (@$cdoc->loadHTML($content)) {
+ $cxpath = new DOMXPath($cdoc);
- $img = $doc->createElement('img');
- $img->setAttribute("src", $rel_image->getAttribute("href"));
+ /** @var ?DOMElement $rel_image */
+ $rel_image = $cxpath->query("//link[@rel='image_src']")->item(0);
- $br = $doc->createElement('br');
- $entry->parentNode->insertBefore($img, $entry);
- $entry->parentNode->insertBefore($br, $entry);
+ if ($rel_image) {
+
+ $img = $doc->createElement('img');
+ $img->setAttribute("src", $rel_image->getAttribute("href"));
+
+ $br = $doc->createElement('br');
+ $entry->parentNode->insertBefore($img, $entry);
+ $entry->parentNode->insertBefore($br, $entry);
- $found = true;
+ $found = true;
+ }
}
}
+
+ } else {
+ Debug::log("skipping imgur $entry_href because of content type: $content_type", Debug::LOG_VERBOSE);
}
}
@@ -543,53 +551,60 @@ class Af_RedditImgur extends Plugin {
if (!$found) {
Debug::log("looking for meta og:image", Debug::LOG_VERBOSE);
- $content = UrlHelper::fetch(["url" => $entry_href,
- "http_accept" => "text/*"]);
+ $content_type = $this->get_content_type($entry_href);
+
+ if ($content_type && strpos($content_type, "text/html") !== false) {
- if ($content) {
- $cdoc = new DOMDocument();
+ $content = UrlHelper::fetch(["url" => $entry_href,
+ "http_accept" => "text/*"]);
- if (@$cdoc->loadHTML($content)) {
- $cxpath = new DOMXPath($cdoc);
+ if ($content) {
+ $cdoc = new DOMDocument();
- /** @var ?DOMElement $og_image */
- $og_image = $cxpath->query("//meta[@property='og:image']")->item(0);
+ if (@$cdoc->loadHTML($content)) {
+ $cxpath = new DOMXPath($cdoc);
- /** @var ?DOMElement $og_video */
- $og_video = $cxpath->query("//meta[@property='og:video']")->item(0);
+ /** @var ?DOMElement $og_image */
+ $og_image = $cxpath->query("//meta[@property='og:image']")->item(0);
- if ($og_video) {
+ /** @var ?DOMElement $og_video */
+ $og_video = $cxpath->query("//meta[@property='og:video']")->item(0);
- $source_stream = $og_video->getAttribute("content");
+ if ($og_video) {
- if ($source_stream) {
+ $source_stream = $og_video->getAttribute("content");
- if ($og_image) {
- $poster_url = $og_image->getAttribute("content");
- } else {
- $poster_url = false;
- }
+ if ($source_stream) {
- $this->handle_as_video($doc, $entry, $source_stream, $poster_url);
- $found = true;
- }
+ if ($og_image) {
+ $poster_url = $og_image->getAttribute("content");
+ } else {
+ $poster_url = false;
+ }
- } else if ($og_image) {
+ $this->handle_as_video($doc, $entry, $source_stream, $poster_url);
+ $found = true;
+ }
- $og_src = $og_image->getAttribute("content");
+ } else if ($og_image) {
- if ($og_src) {
- $img = $doc->createElement('img');
- $img->setAttribute("src", $og_src);
+ $og_src = $og_image->getAttribute("content");
- $br = $doc->createElement('br');
- $entry->parentNode->insertBefore($img, $entry);
- $entry->parentNode->insertBefore($br, $entry);
+ if ($og_src) {
+ $img = $doc->createElement('img');
+ $img->setAttribute("src", $og_src);
- $found = true;
+ $br = $doc->createElement('br');
+ $entry->parentNode->insertBefore($img, $entry);
+ $entry->parentNode->insertBefore($br, $entry);
+
+ $found = true;
+ }
}
}
}
+ } else {
+ Debug::log("BODY: skipping $entry_href because of content type: $content_type", Debug::LOG_VERBOSE);
}
}
}