_options['dump'])) { $this->_options['force'] = TRUE; } if (isset($this->_options['force'])) { $this->_cacheTimeout = '1 second'; } } protected function __getUserAgent() { return 'curl/7.72.0'; } protected function _getCachePath() { return '../cache/facebook.%s'; } protected function _getFeedUrl($feed) { return sprintf('https://m.facebook.com/%s/posts', $feed); } private function _extractTimestamp($block) { $origString = (string)$block->find('abbr')->eq(0)->text(); $string = str_replace("\xc2\xa0", ' ', $origString); $string = str_replace(' godzinie ', ' ', $string); $string = str_replace(' o ', ', ', $string); $string = str_replace('godz.', 'hours ago', $string); $string = str_replace('Wczoraj', 'Yesterday', $string); $string = str_replace(['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia'], ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], $string); $time = strtotime($string); if (!$time) { throw new Exception('Cannot parse date string: ' . $origString); } return $string; } protected function _parseFeedContent($tree) { $items = []; if (isset($this->_options['dump'])) { print($tree->html()); } foreach ($tree->find('#timelineBody div[data-ft]') as $header) { $data = json_decode($header->attr()['data-ft'], TRUE); if (isset($this->_options['dump'])) { var_dump($data); } if (isset($data['mf_story_key'])) { $key = $data['mf_story_key']; $texts = []; foreach ($header->find('p, h3') as $paragraph) { $text = $paragraph->text(); if ($text != 'Więcej') { $texts[] = $text; } } if (isset($this->_options['dump'])) { print_r($data); print($key); print(PHP_EOL); print_r($texts); print(PHP_EOL); } if (count($texts)) { $items[$key] = [ 'id' => $key, 'time' => $this->_extractTimestamp($header), 'content' => $header->html(), 'texts' => $texts ]; } } } if (isset($this->_options['dump'])) { die(); } return array_values($items); } protected function _mapItems($content) { return array_map( function ($obj) { $item = new Item(); $item->ID = $obj['id']; $item->Link = sprintf( 'https://facebook.com/%s', $obj['id'] ); $item->Title = $obj['texts'][0]; $item->Text = implode('
', $obj['texts']); $item->Time = $obj['time']; return $item; }, $content ); } public function title() { return sprintf("%s's Facebook page posts", $this->_feed); } } ?>