[ 'name' => 'Product URL', 'exampleValue' => 'https://remedybg.itch.io/remedybg', 'required' => true, ] ]]; const CACHE_TIMEOUT = 21600; // 6 hours public function collectData() { $url = $this->getInput('url'); $html = getSimpleHTMLDOM($url); // if the page is password protected, abort if ($html->find('.game_password_page', 0) !== null) { returnClientError('The requested page is password protected.'); } $title = $html->find('.game_title', 0)->innertext; $content = 'The following files are available to download:
'; foreach ($html->find('div.upload') as $element) { $filename = $element->find('strong.name', 0)->innertext; $filesize = $element->find('span.file_size', 0)->first_child()->innertext; $content = $content . $filename . ' (' . $filesize . ')
'; } // On 2021-04-28/29, itch.io changed their project page format so that the // 'last updated' timestamp is only shown to logged-in users. // Since we can't use the last-updated date to identify a post, we include // the description text in the input for the UID hash so that if the // project posts an update that changes the description but does not add // or rename any files, we'll still flag it as an update. $project_description = $html->find('div.formatted_description', 0)->plaintext; $uidContent = $project_description . $content; $item = []; $item['uri'] = $url; $item['uid'] = $uidContent; $item['title'] = 'Update for ' . $title; $item['content'] = $content; $this->items[] = $item; } }