diff options
Diffstat (limited to 'bridges/SteamBridge.php')
-rw-r--r-- | bridges/SteamBridge.php | 226 |
1 files changed, 108 insertions, 118 deletions
diff --git a/bridges/SteamBridge.php b/bridges/SteamBridge.php index 47d1bdac..c4a720fc 100644 --- a/bridges/SteamBridge.php +++ b/bridges/SteamBridge.php @@ -1,121 +1,111 @@ <?php -class SteamBridge extends BridgeAbstract { - const NAME = 'Steam Bridge'; - const URI = 'https://store.steampowered.com/'; - const CACHE_TIMEOUT = 3600; // 1h - const DESCRIPTION = 'Returns apps list'; - const MAINTAINER = 'jacknumber'; - const PARAMETERS = array( - 'Wishlist' => array( - 'userid' => array( - 'name' => 'Steamid64 (find it on steamid.io)', - 'title' => 'User ID (17 digits). Find your user ID with steamid.io or steamidfinder.com', - 'required' => true, - 'exampleValue' => '76561198821231205', - 'pattern' => '[0-9]{17}', - ), - 'only_discount' => array( - 'name' => 'Only discount', - 'type' => 'checkbox', - ) - ) - ); - - public function collectData(){ - - $userid = $this->getInput('userid'); - - $sourceUrl = self::URI . 'wishlist/profiles/' . $userid . '/wishlistdata?p=0'; - $sort = array(); - - $json = getContents($sourceUrl); - - $appsData = json_decode($json); - - foreach($appsData as $id => $element) { - - $appType = $element->type; - $appIsBuyable = 0; - $appHasDiscount = 0; - $appIsFree = 0; - - if($element->subs) { - $appIsBuyable = 1; - $priceBlock = str_get_html($element->subs[0]->discount_block); - $appPrice = str_replace('--', '00', $priceBlock->find('.discount_final_price', 0)->plaintext); - - if($element->subs[0]->discount_pct) { - - $appHasDiscount = 1; - $discountBlock = str_get_html($element->subs[0]->discount_block); - $appDiscountValue = $discountBlock->find('.discount_pct', 0)->plaintext; - $appOldPrice = $discountBlock->find('.discount_original_price', 0)->plaintext; - - } else { - - if($this->getInput('only_discount')) { - continue; - } - - } - - } else { - - if($this->getInput('only_discount')) { - continue; - } - - if(isset($element->free) && $element->free = 1) { - $appIsFree = 1; - } - } - - $coverUrl = str_replace('_292x136', '', strtok($element->capsule, '?')); - $picturesPath = pathinfo($coverUrl)['dirname'] . '/'; - - $item = array(); - $item['uri'] = "http://store.steampowered.com/app/$id/"; - $item['title'] = $element->name; - $item['type'] = $appType; - $item['cover'] = $coverUrl; - $item['timestamp'] = $element->added; - $item['isBuyable'] = $appIsBuyable; - $item['hasDiscount'] = $appHasDiscount; - $item['isFree'] = $appIsFree; - $item['priority'] = $element->priority; - - if($appIsBuyable) { - - $item['price'] = floatval(str_replace(',', '.', $appPrice)); - $item['content'] = $appPrice; - - } - - if($appIsFree) { - $item['content'] = 'Free'; - } - - if($appHasDiscount) { - - $item['discount']['value'] = $appDiscountValue; - $item['discount']['oldPrice'] = $appOldPrice; - $item['content'] = '<s>' . $appOldPrice . '</s> <b>' . $appPrice . '</b> (' . $appDiscountValue . ')'; - - } - - $item['enclosures'] = array(); - $item['enclosures'][] = $coverUrl; - - foreach($element->screenshots as $screenshotFileName) { - $item['enclosures'][] = $picturesPath . $screenshotFileName; - } - - $sort[$id] = $element->priority; - - $this->items[] = $item; - } - - array_multisort($sort, SORT_ASC, $this->items); - } +class SteamBridge extends BridgeAbstract +{ + const NAME = 'Steam Bridge'; + const URI = 'https://store.steampowered.com/'; + const CACHE_TIMEOUT = 3600; // 1h + const DESCRIPTION = 'Returns apps list'; + const MAINTAINER = 'jacknumber'; + const PARAMETERS = [ + 'Wishlist' => [ + 'userid' => [ + 'name' => 'Steamid64 (find it on steamid.io)', + 'title' => 'User ID (17 digits). Find your user ID with steamid.io or steamidfinder.com', + 'required' => true, + 'exampleValue' => '76561198821231205', + 'pattern' => '[0-9]{17}', + ], + 'only_discount' => [ + 'name' => 'Only discount', + 'type' => 'checkbox', + ] + ] + ]; + + public function collectData() + { + $userid = $this->getInput('userid'); + + $sourceUrl = self::URI . 'wishlist/profiles/' . $userid . '/wishlistdata?p=0'; + $sort = []; + + $json = getContents($sourceUrl); + + $appsData = json_decode($json); + + foreach ($appsData as $id => $element) { + $appType = $element->type; + $appIsBuyable = 0; + $appHasDiscount = 0; + $appIsFree = 0; + + if ($element->subs) { + $appIsBuyable = 1; + $priceBlock = str_get_html($element->subs[0]->discount_block); + $appPrice = str_replace('--', '00', $priceBlock->find('.discount_final_price', 0)->plaintext); + + if ($element->subs[0]->discount_pct) { + $appHasDiscount = 1; + $discountBlock = str_get_html($element->subs[0]->discount_block); + $appDiscountValue = $discountBlock->find('.discount_pct', 0)->plaintext; + $appOldPrice = $discountBlock->find('.discount_original_price', 0)->plaintext; + } else { + if ($this->getInput('only_discount')) { + continue; + } + } + } else { + if ($this->getInput('only_discount')) { + continue; + } + + if (isset($element->free) && $element->free = 1) { + $appIsFree = 1; + } + } + + $coverUrl = str_replace('_292x136', '', strtok($element->capsule, '?')); + $picturesPath = pathinfo($coverUrl)['dirname'] . '/'; + + $item = []; + $item['uri'] = "http://store.steampowered.com/app/$id/"; + $item['title'] = $element->name; + $item['type'] = $appType; + $item['cover'] = $coverUrl; + $item['timestamp'] = $element->added; + $item['isBuyable'] = $appIsBuyable; + $item['hasDiscount'] = $appHasDiscount; + $item['isFree'] = $appIsFree; + $item['priority'] = $element->priority; + + if ($appIsBuyable) { + $item['price'] = floatval(str_replace(',', '.', $appPrice)); + $item['content'] = $appPrice; + } + + if ($appIsFree) { + $item['content'] = 'Free'; + } + + if ($appHasDiscount) { + $item['discount']['value'] = $appDiscountValue; + $item['discount']['oldPrice'] = $appOldPrice; + $item['content'] = '<s>' . $appOldPrice . '</s> <b>' . $appPrice . '</b> (' . $appDiscountValue . ')'; + } + + $item['enclosures'] = []; + $item['enclosures'][] = $coverUrl; + + foreach ($element->screenshots as $screenshotFileName) { + $item['enclosures'][] = $picturesPath . $screenshotFileName; + } + + $sort[$id] = $element->priority; + + $this->items[] = $item; + } + + array_multisort($sort, SORT_ASC, $this->items); + } } |