Skip to content

Commit

Permalink
[MotatosBridge] add bridge (RSS-Bridge#3799)
Browse files Browse the repository at this point in the history
* [MotatosBridge] add bridge

* [MotatosBridge] fix uid as string

* [MotatosBridge] add support for all regions

* [MotatosBridge] fix: region: "required" attribute not supported for list
  • Loading branch information
knrdl authored Dec 6, 2023
1 parent f3df283 commit deb9a72
Showing 1 changed file with 102 additions and 0 deletions.
102 changes: 102 additions & 0 deletions bridges/MotatosBridge.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<?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;
}
}
}

0 comments on commit deb9a72

Please sign in to comment.