From 40c84b5dc3e240ed724aeff01d01e75fe141aecd Mon Sep 17 00:00:00 2001 From: Matthieu Rakotojaona Date: Tue, 30 Mar 2021 18:56:17 +0200 Subject: [PATCH] [HackerNewsUserThreads] New bridge (#1902) --- bridges/HackerNewsUserThreadsBridge.php | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 bridges/HackerNewsUserThreadsBridge.php diff --git a/bridges/HackerNewsUserThreadsBridge.php b/bridges/HackerNewsUserThreadsBridge.php new file mode 100644 index 00000000..2a4073ac --- /dev/null +++ b/bridges/HackerNewsUserThreadsBridge.php @@ -0,0 +1,47 @@ + array( + 'name' => 'User', + 'type' => 'text', + 'required' => true, + 'title' => 'User whose threads you want to see' + ) + )); + + public function collectData(){ + $url = 'https://news.ycombinator.com/threads?id=' . $this->getInput('user'); + $html = getSimpleHTMLDOM($url) or returnServerError('Could not request HN.'); + Debug::log('queried ' . $url); + Debug::log('found ' . $html); + + $item = array(); + $articles = $html->find('tr[class*="comtr"]'); + $story = ''; + + foreach ($articles as $element) { + $id = $element->getAttribute('id'); + $item['uri'] = 'https://news.ycombinator.com/item?id=' . $id; + + $author = $element->find('span[class*="comhead"]', 0)->find('a[class="hnuser"]', 0)->innertext; + $newstory = $element->find('span[class*="comhead"]', 0)->find('span[class="storyon"]', 0); + if (count($newstory->find('a')) > 0) { + $story = $newstory->find('a', 0)->innertext; + } + + $title = $author . ' | on ' . $story; + $item['author'] = $author; + $item['title'] = $title; + $item['timestamp'] = $element->find('span[class*="age"]', 0)->find('a', 0)->innertext; + $item['content'] = $element->find('span[class*="commtext"]', 0)->innertext; + + $this->items[] = $item; + } + } +}