use Wallabag\CoreBundle\Tools\Utils;
/**
- * This kind of proxy class take care of getting the content from an url
- * and update the entry with what it found.
+ * This kind of proxy class takes care of getting the content from an url
+ * and updates the entry with what it found.
*/
class ContentProxy
{
*/
public function updateEntry(Entry $entry, $url, array $content = [], $disableContentUpdate = false)
{
+ $this->graby->toggleImgNoReferrer(true);
if (!empty($content['html'])) {
$content['html'] = $this->graby->cleanupHtml($content['html'], $url);
}
$entry->setTitle($content['open_graph']['og_title']);
}
- $html = $content['html'];
- if (false === $html) {
- $html = $this->fetchingErrorMessage;
+ if (empty($content['html'])) {
+ $content['html'] = $this->fetchingErrorMessage;
if (!empty($content['open_graph']['og_description'])) {
- $html .= '<p><i>But we found a short description: </i></p>';
- $html .= $content['open_graph']['og_description'];
+ $content['html'] .= '<p><i>But we found a short description: </i></p>';
+ $content['html'] .= $content['open_graph']['og_description'];
}
}
- $entry->setContent($html);
- $entry->setReadingTime(Utils::getReadingTime($html));
+ $entry->setContent($content['html']);
+ $entry->setReadingTime(Utils::getReadingTime($content['html']));
if (!empty($content['status'])) {
$entry->setHttpStatus($content['status']);
$this->updateLanguage($entry, $content['language']);
}
+ $previewPictureUrl = '';
if (!empty($content['open_graph']['og_image'])) {
- $this->updatePreviewPicture($entry, $content['open_graph']['og_image']);
+ $previewPictureUrl = $content['open_graph']['og_image'];
}
// if content is an image, define it as a preview too
if (!empty($content['content_type']) && \in_array($this->mimeGuesser->guess($content['content_type']), ['jpeg', 'jpg', 'gif', 'png'], true)) {
- $this->updatePreviewPicture($entry, $content['url']);
+ $previewPictureUrl = $content['url'];
+ } elseif (empty($previewPictureUrl)) {
+ $this->logger->debug('Extracting images from content to provide a default preview picture');
+ $imagesUrls = DownloadImages::extractImagesUrlsFromHtml($content['html']);
+ $this->logger->debug(\count($imagesUrls) . ' pictures found');
+ if (!empty($imagesUrls)) {
+ $previewPictureUrl = $imagesUrls[0];
+ }
+ }
+
+ if (!empty($previewPictureUrl)) {
+ $this->updatePreviewPicture($entry, $previewPictureUrl);
}
if (!empty($content['content_type'])) {