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;
}
}