[ 'name' => 'User', 'type' => 'text', 'required' => true, 'exampleValue' => 'joerogan', ], 'limit' => [ 'name' => 'Limit', 'type' => 'number', 'title' => 'Maximum number of items to return (maximum 20)', 'defaultValue' => 5, 'required' => true, ], ] ]; public function collectData() { $user = $this->getInput('user'); $api = sprintf( 'https://api.gettr.com/u/user/%s/posts?offset=0&max=%s&dir=fwd&incl=posts&fp=f_uo', $user, min($this->getInput('limit'), 20) ); try { $json = getContents($api); } catch (HttpException $e) { if ($e->getCode() === 400 && str_contains($e->response->getBody(), 'E_USER_NOTFOUND')) { throw new \Exception('User not found: ' . $user); } throw $e; } $data = json_decode($json, false); foreach ($data->result->aux->post as $post) { $this->items[] = [ 'title' => mb_substr($post->txt ?? $post->uid . '@gettr.com', 0, 100), 'uri' => sprintf('https://gettr.com/post/%s', $post->_id), 'author' => $post->uid, // Convert from ms to s 'timestamp' => substr($post->cdate, 0, strlen($post->cdate) - 3), 'uid' => $post->_id, // Hashtags found within post text 'categories' => $post->htgs ?? [], 'content' => $this->createContent($post), ]; } } /** * Collect text, image and video, if they exist */ private function createContent(\stdClass $post): string { $content = ''; // Text if (isset($post->txt)) { $isRepost = $this->getInput('user') !== $post->uid; if ($isRepost) { $content .= 'Reposted by ' . $this->getInput('user') . '@gettr.com

'; } $content .= "$post->txt

"; } // Preview image if (isset($post->previmg)) { $content .= << Unable to load image

HTML; } // Images foreach ($post->imgs ?? [] as $imageUrl) { $content .= <<

HTML; } // Video if (isset($post->ovid)) { $mainImage = $post->main; $content .= << Your browser does not support the video element. Kindly update it to latest version. HTML; // This is typically a m3u8 which I don't know how to present in a browser $streamingUrl = $post->vid; } $this->processMetadata($post); return $content; } public function getIcon() { return 'https://gettr.com/favicon.ico'; } /** * @param stdClass $post */ private function processMetadata(stdClass $post): void { // Unused metadata, maybe used later $textLanguage = $post->txt_lang ?? 'en'; $replies = $post->cm ?? 0; $likes = $post->lkbpst ?? 0; $reposts = $post->shbpst ?? 0; // I think a visibility of "p" means that it's public $visibility = $post->vis ?? 'p'; } }