[ 'name' => 'News Feed', 'type' => 'list', 'title' => 'Feeds from the Portuguese sports newspaper A BOLA.PT', 'values' => [ 'Concelhos' => [ 'Espinho' => 'espinho', 'Ovar' => 'ovar', 'Santa Maria da Feira' => 'santa-maria-da-feira', ], 'Cultura' => 'ovar/cultura', 'Desporto' => 'desporto', 'Economia' => 'santa-maria-da-feira/economia', 'Política' => 'santa-maria-da-feira/politica', 'Opinião' => 'santa-maria-da-feira/opiniao', 'Sociedade' => 'santa-maria-da-feira/sociedade', ] ] ] ]; const PT_MONTH_NAMES = [ 'janeiro' => '01', 'fevereiro' => '02', 'março' => '03', 'abril' => '04', 'maio' => '05', 'junho' => '06', 'julho' => '07', 'agosto' => '08', 'setembro' => '09', 'outubro' => '10', 'novembro' => '11', 'dezembro' => '12', ]; public function getIcon() { return 'https://www.jornaln.pt/wp-content/uploads/2023/01/cropped-NovoLogoJornal_Instagram-192x192.png'; } public function getName() { return !is_null($this->getKey('feed')) ? self::NAME . ' | ' . $this->getKey('feed') : self::NAME; } public function getURI() { return self::URI . $this->getInput('feed'); } public function collectData() { $url = sprintf(self::URI . '/%s', $this->getInput('feed')); $dom = getSimpleHTMLDOMCached($url); $domSelector = '.elementor-widget-container > .elementor-posts-container'; $dom = $dom->find($domSelector, 0); if (!$dom) { throw new \Exception(sprintf('Unable to find css selector on `%s`', $url)); } $dom = defaultLinkTo($dom, $this->getURI()); foreach ($dom->find('article') as $article) { //Get thumbnail $image = $article->find('.elementor-post__thumbnail img', 0)->src; //Timestamp $date = $article->find('.elementor-post-date', 0)->plaintext; $date = trim($date, "\t "); $date = preg_replace('/ de /i', '/', $date); $date = preg_replace('/, /', '/', $date); $date = explode('/', $date); $year = (int) $date[2]; $month = (int) $date[1]; $day = (int) $date[0]; foreach (self::PT_MONTH_NAMES as $key => $item) { if ($key === strtolower($month)) { $month = (int) $item; } } $timestamp = mktime(0, 0, 0, $month, $day, $year); //Content $content = '' . $article->find('.elementor-post__title > a', 0)->plaintext . ''; $this->items[] = [ 'title' => $article->find('.elementor-post__title > a', 0)->plaintext, 'uri' => $article->find('a', 0)->href, 'content' => $content, 'timestamp' => $timestamp ]; } } }