From 974f00cd6a3fb4f4ccda08069408edb9c7e1d6f4 Mon Sep 17 00:00:00 2001 From: Sebastian Wolf <117176763+swofl@users.noreply.github.com> Date: Thu, 2 Jan 2025 17:17:54 +0100 Subject: [PATCH] [MixologyBridge] adapt to latest site changes (#4368) * [MixologyBridge] adapt to latest site changes * [MixologyBridge] fix category selector --- bridges/MixologyBridge.php | 66 ++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/bridges/MixologyBridge.php b/bridges/MixologyBridge.php index 1246b4dbe4c..e954d0d638e 100644 --- a/bridges/MixologyBridge.php +++ b/bridges/MixologyBridge.php @@ -1,49 +1,73 @@ self::LIMIT, - ] ]; public function collectData() { - $feed_url = self::URI . '/feed'; - $limit = $this->getInput('limit') ?? 10; - $this->collectExpandableDatas($feed_url, $limit); + $html = getSimpleHTMLDOM(self::URI); + + $teasers = []; + $teaserElements = []; + + $teaserElements[] = $html->find('.aufmacher .views-view-responsive-grid__item-inner', 0); + foreach ($html->find('.block-views-blockmixology-frontpage-block-2 .views-col') as $teaser) { + $teaserElements[] = $teaser; + } + + foreach ($teaserElements as $teaser) { + $teasers[] = $this->parseTeaser($teaser); + } + + foreach ($teasers as $article) { + $this->items[] = $this->parseItem($article); + } + } + + protected function parseTeaser($teaser) + { + $result = []; + + $title = $teaser->find('.views-field-title a', 0); + $result['title'] = $title->plaintext; + $result['uri'] = self::URI . $title->href; + $result['enclosures'] = []; + $result['enclosures'][] = self::URI . $teaser->find('img', 0)->src; + $result['uid'] = hash('sha256', $result['title']); + + $categories = $teaser->find('.views-field-field-kategorie', 0); + if ($categories) { + $result['categories'] = []; + foreach ($categories->find('a') as $category) { + $result['categories'][] = $category->innertext; + } + } + + return $result; } protected function parseItem(array $item) { $article = getSimpleHTMLDOMCached($item['uri']); - $content = ''; + $item['author'] = $article->find('.beitrag-author a', 0)->plaintext; + $item['timestamp'] = strtotime($article->find('.beitrag-date time', 0)->datetime); - $headerImage = $article->find('div.edgtf-full-width img.wp-post-image', 0); + $content = ''; - if (is_object($headerImage)) { - $item['enclosures'] = []; - $item['enclosures'][] = $headerImage->src; - $content .= ''; - } + $content .= ''; - foreach ($article->find('article .wpb_content_element > .wpb_wrapper') as $element) { + foreach ($article->find('article .wpb_content_element>.wpb_wrapper, article .field--type-text-with-summary>.wp-block-columns>.wp-block-column') as $element) { $content .= $element->innertext; } $item['content'] = $content; - $item['categories'] = []; - - foreach ($article->find('.edgtf-tags > a') as $tag) { - $item['categories'][] = $tag->plaintext; - } - return $item; } }