[PicnobBridge] fix missing images (#3506)

* [PicnobBridge] fix missing images

* [PicnobBridge] handle invalid relative date (e.g.: 'Just now')

* [PicnobBridge] fix code indent
This commit is contained in:
User123698745 2023-07-07 08:16:45 +02:00 committed by GitHub
parent d49ea235f0
commit ef0b86968c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -47,37 +47,36 @@ class PicnobBridge extends BridgeAbstract
$html = getSimpleHTMLDOM($this->getURI()); $html = getSimpleHTMLDOM($this->getURI());
foreach ($html->find('.items') as $part) { foreach ($html->find('.items') as $part) {
foreach ($part->find('.item') as $element) { foreach ($part->find('.item') as $element) {
$url = urljoin(self::URI, $element->find('a', 0)->href); $url = urljoin(self::URI, $element->find('a', 0)->href);
$date = date_create();
$relativeDate = date_interval_create_from_date_string(str_replace(' ago', '', $element->find('.time', 0)->plaintext));
if ($relativeDate) {
date_sub($date, $relativeDate);
}
$date = date_create(); $description = defaultLinkTo(trim($element->find('.sum', 0)->innertext), self::URI);
$relativeDate = str_replace(' ago', '', $element->find('.time', 0)->plaintext);
date_sub($date, date_interval_create_from_date_string($relativeDate));
$description = defaultLinkTo(trim($element->find('.sum', 0)->innertext), self::URI); $isVideo = (bool) $element->find('.icon_video', 0);
$videoNote = $isVideo ? '<p><i>(video)</i></p>' : '';
$isVideo = (bool) $element->find('.icon_video', 0); $isTV = (bool) $element->find('.icon_tv', 0);
$videoNote = $isVideo ? '<p><i>(video)</i></p>' : ''; $tvNote = $isTV ? '<p><i>(TV)</i></p>' : '';
$isTV = (bool) $element->find('.icon_tv', 0); $isMoreContent = (bool) $element->find('.icon_multi', 0);
$tvNote = $isTV ? '<p><i>(TV)</i></p>' : ''; $moreContentNote = $isMoreContent ? '<p><i>(multiple images and/or videos)</i></p>' : '';
$isMoreContent = (bool) $element->find('.icon_multi', 0); $imageUrl = $element->find('.img', 0)->getAttribute('data-src');
$moreContentNote = $isMoreContent ? '<p><i>(multiple images and/or videos)</i></p>' : '';
$imageUrl = $element->find('.img', 0)->getAttribute('data-src'); $uid = explode('/', parse_url($url, PHP_URL_PATH))[2];
parse_str(parse_url($imageUrl, PHP_URL_QUERY), $imageVars);
$imageUrl = $imageVars['u'];
$uid = explode('/', parse_url($url, PHP_URL_PATH))[2]; $this->items[] = [
'uri' => $url,
$this->items[] = [ 'timestamp' => date_format($date, 'r'),
'uri' => $url, 'title' => strlen($description) > 60 ? mb_substr($description, 0, 57) . '...' : $description,
'timestamp' => date_format($date, 'r'), 'thumbnail' => $imageUrl,
'title' => strlen($description) > 60 ? mb_substr($description, 0, 57) . '...' : $description, 'enclosures' => [$imageUrl],
'thumbnail' => $imageUrl, 'content' => <<<HTML
'enclosures' => [$imageUrl],
'content' => <<<HTML
<a href="{$url}"> <a href="{$url}">
<img loading="lazy" src="{$imageUrl}" /> <img loading="lazy" src="{$imageUrl}" />
</a> </a>
@ -86,8 +85,8 @@ class PicnobBridge extends BridgeAbstract
{$moreContentNote} {$moreContentNote}
<p>{$description}<p> <p>{$description}<p>
HTML, HTML,
'uid' => $uid 'uid' => $uid
]; ];
} }
} }
} }