mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-27 03:50:42 +03:00
deb9a7269e
* [MotatosBridge] add bridge * [MotatosBridge] fix uid as string * [MotatosBridge] add support for all regions * [MotatosBridge] fix: region: "required" attribute not supported for list
102 lines
3.3 KiB
PHP
102 lines
3.3 KiB
PHP
<?php
|
|
|
|
class MotatosBridge extends BridgeAbstract
|
|
{
|
|
const NAME = 'Motatos / Matsmart';
|
|
const URI = 'https://www.motatos.de/neu-im-shop';
|
|
const CACHE_TIMEOUT = 3600; // 1h
|
|
const DESCRIPTION = 'New articles in the Motatos / Matsmart online shop';
|
|
const MAINTAINER = 'knrdl';
|
|
const PARAMETERS = [[
|
|
'region' => [
|
|
'name' => 'Region',
|
|
'type' => 'list',
|
|
'title' => 'Choose country',
|
|
'values' => [
|
|
'Austria' => 'at',
|
|
'Denmark' => 'dk',
|
|
'Finland' => 'fi',
|
|
'Germany' => 'de',
|
|
'Sweden' => 'se',
|
|
],
|
|
],
|
|
]];
|
|
|
|
public function getName()
|
|
{
|
|
switch ($this->getInput('region')) {
|
|
case 'at':
|
|
return 'Motatos';
|
|
case 'dk':
|
|
return 'Motatos';
|
|
case 'de':
|
|
return 'Motatos';
|
|
case 'fi':
|
|
return 'Matsmart';
|
|
case 'se':
|
|
return 'Matsmart';
|
|
default:
|
|
return self::NAME;
|
|
}
|
|
}
|
|
|
|
public function getURI()
|
|
{
|
|
switch ($this->getInput('region')) {
|
|
case 'at':
|
|
return 'https://www.motatos.at/neu-im-shop';
|
|
case 'dk':
|
|
return 'https://www.motatos.dk/nye-varer';
|
|
case 'de':
|
|
return 'https://www.motatos.de/neu-im-shop';
|
|
case 'fi':
|
|
return 'https://www.matsmart.fi/uusimmat';
|
|
case 'se':
|
|
return 'https://www.matsmart.se/nyinkommet';
|
|
default:
|
|
return self::URI;
|
|
}
|
|
}
|
|
|
|
public function getIcon()
|
|
{
|
|
return 'https://www.motatos.de/favicon.ico';
|
|
}
|
|
|
|
private function getApiUrl()
|
|
{
|
|
switch ($this->getInput('region')) {
|
|
case 'at':
|
|
return 'https://api.findify.io/v4/4359f7b3-17e0-4f74-9fdb-e6606dfed25c/smart-collection/new-arrivals';
|
|
case 'dk':
|
|
return 'https://api.findify.io/v4/3709426e-621a-49df-bd61-ac8543452022/smart-collection/new-arrivals';
|
|
case 'de':
|
|
return 'https://api.findify.io/v4/2a044754-6cda-4541-b159-39133b75386c/smart-collection/new-arrivals';
|
|
case 'fi':
|
|
return 'https://api.findify.io/v4/63946f89-2a82-4839-a412-883b79144f7b/smart-collection/new-arrivals';
|
|
case 'se':
|
|
return 'https://api.findify.io/v4/3ae86b36-a1bd-4442-a3d9-2af6845908e6/smart-collection/new-arrivals';
|
|
}
|
|
}
|
|
|
|
public function collectData()
|
|
{
|
|
// motatos uses this api to dynamically load more items on page scroll
|
|
$json = getContents($this->getApiUrl() . '?t_client=0&user={%22uid%22:%220%22,%22sid%22:%220%22}');
|
|
$jsonFile = json_decode($json, true);
|
|
|
|
foreach ($jsonFile['items'] as $entry) {
|
|
$item = [];
|
|
$item['uid'] = $entry['custom_fields']['uuid'][0];
|
|
$item['uri'] = $entry['product_url'];
|
|
$item['timestamp'] = $entry['created_at'] / 1000;
|
|
$item['title'] = $entry['title'];
|
|
$item['content'] = <<<HTML
|
|
<h1>{$entry['title']}</h1>
|
|
<img src="{$entry['image_url']}" />
|
|
<p>{$entry['price'][0]}€</p>
|
|
HTML;
|
|
$this->items[] = $item;
|
|
}
|
|
}
|
|
}
|