From e3552763784b141b49ca639c461f046b208c97c3 Mon Sep 17 00:00:00 2001 From: Pavel Korytov Date: Mon, 6 Jan 2025 21:08:08 +0300 Subject: [PATCH] [EconomistWorldInBriefBridge] Update bridge (#4397) * [EconomistWorldInBriefBridge] Fix and update bridge * [EconomistWorldInBriefBridge] Fix lint --- bridges/EconomistWorldInBriefBridge.php | 45 ++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/bridges/EconomistWorldInBriefBridge.php b/bridges/EconomistWorldInBriefBridge.php index 72b66198..3b717d81 100644 --- a/bridges/EconomistWorldInBriefBridge.php +++ b/bridges/EconomistWorldInBriefBridge.php @@ -41,6 +41,12 @@ class EconomistWorldInBriefBridge extends BridgeAbstract 'quote' => [ 'name' => 'Include the quote of the day', 'type' => 'checkbox' + ], + 'mergeEverything' => [ + 'name' => 'Merge everything into one entry', + 'type' => 'checkbox', + 'defaultValue' => false, + 'title' => 'Whether to merge all the stories into one entry' ] ] ]; @@ -61,7 +67,7 @@ class EconomistWorldInBriefBridge extends BridgeAbstract } $html = getSimpleHTMLDOM(self::URI, $headers); $gobbets = $html->find('p[data-component="the-world-in-brief-paragraph"]'); - if ($this->getInput('splitGobbets') == 1) { + if ($this->getInput('splitGobbets') == 1 && !$this->getInput('mergeEverything')) { $this->splitGobbets($gobbets); } else { $this->mergeGobbets($gobbets); @@ -77,6 +83,9 @@ class EconomistWorldInBriefBridge extends BridgeAbstract $quote = $html->find('blockquote[data-test-id="inspirational-quote"]', 0); $this->addQuote($quote); } + if ($this->getInput('mergeEverything') == 1) { + $this->mergeEverything(); + } } private function splitGobbets($gobbets) @@ -131,6 +140,9 @@ class EconomistWorldInBriefBridge extends BridgeAbstract if ($element->tag != 'div') { continue; } + if ($element->find('._newsletterContentPromo', 0) != null) { + continue; + } $image = $element->find('figure', 0); $title = $element->find('h3', 0)->plaintext; $content = $element->find('h3', 0)->parent(); @@ -165,4 +177,35 @@ class EconomistWorldInBriefBridge extends BridgeAbstract 'uid' => 'quote-' . $today->format('U') ]; } + + private function mergeEverything() + { + $today = new Datetime(); + $today->setTime(0, 0, 0, 0); + $contents = ''; + + foreach ($this->items as $item) { + $header = null; + if (str_contains($item['uid'], 'story-')) { + $header = $item['title']; + } elseif (str_contains($item['uid'], 'quote-')) { + $header = 'Quote of the day'; + } elseif (str_contains($item['uid'], 'world-in-brief-')) { + $header = 'World in brief'; + } + if ($header != null) { + $contents .= "

{$header}

"; + } + $contents .= $item['content']; + } + + $item = [ + 'uri' => self::URI, + 'title' => 'The Economist World in Brief ' . $today->format('d.m.Y'), + 'content' => $contents, + 'timestamp' => $today->format('U'), + 'uid' => 'world-in-brief-merged' . $today->format('U') + ]; + $this->items = [$item]; + } }