mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-27 12:01:09 +03:00
eec1163fb9
This significantly increases the possibility of missing updates (if files are uploaded but no file names or post contents are changed) and of showing an update when there is none (if the post text is changed but no new files are uploaded). However with the on-page timestamps removed I'm not sure if there is a good way to do this more accurately so this is good as we can do at the moment.
47 lines
1.6 KiB
PHP
47 lines
1.6 KiB
PHP
<?php
|
|
|
|
class ItchioBridge extends BridgeAbstract {
|
|
const NAME = 'itch.io';
|
|
const URI = 'https://itch.io';
|
|
const DESCRIPTION = 'Fetches the file uploads for a product';
|
|
const MAINTAINER = 'jacquesh';
|
|
const PARAMETERS = array(array(
|
|
'url' => array(
|
|
'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)
|
|
or returnServerError('Could not request: ' . $url);
|
|
|
|
$title = $html->find('.game_title', 0)->innertext;
|
|
|
|
$content = 'The following files are available to download:<br/>';
|
|
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 . ')<br/>';
|
|
}
|
|
|
|
// 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 = array();
|
|
$item['uri'] = $url;
|
|
$item['uid'] = $uidContent;
|
|
$item['title'] = 'Update for ' . $title;
|
|
$item['content'] = $content;
|
|
$this->items[] = $item;
|
|
}
|
|
}
|