[ 'username' => [ 'name' => 'Username', 'type' => 'text', 'required' => true, 'exampleValue' => 'TomFulp' ] ] ]; public function collectData() { $username = $this->getInput('username'); if (!preg_match('/^\w+$/', $username)) { throw new \Exception('Illegal username'); } $html = getSimpleHTMLDOM($this->getURI()); $posts = $html->find('.item-portalitem-art-medium'); foreach ($posts as $post) { $item = []; $item['author'] = $username; $item['uri'] = $post->href; $titleOrRestricted = $post->find('h4')[0]->innertext; // Newgrounds doesn't show public previews for NSFW content. if ($titleOrRestricted === 'Restricted Content: Sign in to view!') { $item['title'] = 'NSFW: ' . $item['uri']; $item['content'] = << {$item['title']} EOD; } else { $item['title'] = $titleOrRestricted; $item['content'] = << {$item['title']} EOD; } $this->items[] = $item; } } public function getName() { if ($this->getInput('username')) { return sprintf('%s - %s', $this->getInput('username'), self::NAME); } return parent::getName(); } public function getURI() { if ($this->getInput('username')) { return sprintf('https://%s.newgrounds.com/art', $this->getInput('username')); } return parent::getURI(); } }