array( 'username' => array( 'name' => 'Username', 'type' => 'text', 'required' => true, 'exampleValue' => '@tiktok', ) )); const TEST_DETECT_PARAMETERS = array( 'https://www.tiktok.com/@tiktok' => array( 'context' => 'By user', 'username' => '@tiktok' ) ); const CACHE_TIMEOUT = 900; // 15 minutes private $feedName = ''; public function detectParameters($url) { if(preg_match('/tiktok\.com\/(@[\w]+)/', $url, $matches) > 0) { return array( 'context' => 'By user', 'username' => $matches[1] ); } return null; } public function collectData() { $html = getSimpleHTMLDOM($this->getURI()); $this->feedName = htmlspecialchars_decode($html->find('h1', 0)->plaintext); foreach ($html->find('div.tiktok-x6y88p-DivItemContainerV2') as $div) { $item = []; $link = $div->find('a', 0)->href; $image = $div->find('img', 0)->src; $views = $div->find('strong.video-count', 0)->plaintext; $item['uri'] = $link; $item['title'] = $div->find('a', 1)->plaintext; $item['enclosures'][] = $image; $item['content'] = <<

{$views} views

EOD; $this->items[] = $item; } } public function getURI() { switch($this->queriedContext) { case 'By user': return self::URI . '/' . $this->processUsername(); default: return parent::getURI(); } } public function getName() { switch($this->queriedContext) { case 'By user': return $this->feedName . ' (' . $this->processUsername() . ') - TikTok'; default: return parent::getName(); } } private function processUsername() { if (substr($this->getInput('username'), 0, 1) !== '@') { return '@' . $this->getInput('username'); } return $this->getInput('username'); } }