From 9e33a15b93de43a1f8ef3fc705748c59d8dbeed7 Mon Sep 17 00:00:00 2001 From: mruac Date: Wed, 30 Aug 2023 00:34:10 +0930 Subject: [PATCH] [FurAffinityBridge] Fix if search result contains hidden submission (#3637) * Reverts to preview submission if full is hidden * Reverts to preview submission if full is hidden * revert * added fallback to higher res preview if SWF * amend --- bridges/FurAffinityBridge.php | 87 ++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/bridges/FurAffinityBridge.php b/bridges/FurAffinityBridge.php index 6c2d7b52..977fbb6b 100644 --- a/bridges/FurAffinityBridge.php +++ b/bridges/FurAffinityBridge.php @@ -892,7 +892,7 @@ class FurAffinityBridge extends BridgeAbstract $item = []; $submissionURL = $figure->find('b u a', 0)->href; - $imgURL = 'https:' . $figure->find('b u a img', 0)->src; + $imgURL = $figure->find('b u a img', 0)->src; $item['uri'] = $submissionURL; $item['title'] = html_entity_decode( @@ -900,52 +900,43 @@ class FurAffinityBridge extends BridgeAbstract ); $item['author'] = $figure->find('figcaption p a[href*=/user/]', 0)->title; + $item['content'] = " "; + if ($this->getInput('full') === true) { $submissionHTML = $this->getFASimpleHTMLDOM($submissionURL, $cache); + if (!$this->isHiddenSubmission($submissionHTML)) { + $stats = $submissionHTML->find('.stats-container', 0); + $popupDate = $stats->find('.popup_date', 0); + if ($popupDate) { + $item['timestamp'] = strtotime($popupDate->title); + } - $stats = $submissionHTML->find('.stats-container', 0); - $popupDate = $stats->find('.popup_date', 0); - if ($popupDate) { - $item['timestamp'] = strtotime($popupDate->title); + $var = $submissionHTML->find('.actions a[href^=https://d.facdn]', 0); + if ($var) { + $item['enclosures'] = [$var->href]; + } + + foreach ($stats->find('#keywords a') as $keyword) { + $item['categories'][] = $keyword->plaintext; + } + + $previewSrc = $submissionHTML->find('#submissionImg', 0); + if ($previewSrc) { + $imgURL = 'https:' . $previewSrc->{'data-preview-src'}; + } else { + $imgURL = $submissionHTML->find('[property="og:image"]', 0)->{'content'}; + } + + $description = $submissionHTML->find('div.submission-description', 0); + if ($description) { + $this->setReferrerPolicy($description); + $description = trim($description->innertext); + } else { + $description = ''; + } + + $item['content'] = "

{$description}

"; } - - $var = $submissionHTML->find('.actions a[href^=https://d.facdn]', 0); - if ($var) { - $item['enclosures'] = [$var->href]; - } - - foreach ($stats->find('#keywords a') as $keyword) { - $item['categories'][] = $keyword->plaintext; - } - - $previewSrc = $submissionHTML->find('#submissionImg', 0) - ->{'data-preview-src'}; - if ($previewSrc) { - $imgURL = 'https:' . $previewSrc; - } - - $description = $submissionHTML->find('div.submission-description', 0); - if ($description) { - $this->setReferrerPolicy($description); - $description = trim($description->innertext); - } else { - $description = ''; - } - - $item['content'] = << - - -

-{$description} -

-EOD; - } else { - $item['content'] = << - - -EOD; } $this->items[] = $item; @@ -964,4 +955,14 @@ EOD; $img->referrerpolicy = 'no-referrer'; } } + + private function isHiddenSubmission($html) + { + //Disabled accounts prevents their userpage, gallery, favorites and journals from being viewed. + //Submissions can require maturity limit or logged-in account. + $system_message = $html->find('.section-body.alignleft', 0); + $system_message = $system_message ? $system_message->plaintext : ''; + + return str_contains($system_message, 'System Message'); + } }