From 360f9da072e84e181b7f4938536e7a18071b1685 Mon Sep 17 00:00:00 2001 From: logmanoriginal Date: Mon, 27 Mar 2017 20:18:16 +0200 Subject: [PATCH] [EtsyBridge] Add new bridge This bridge generates feeds for a given search term, optionally adds the picture to the content and allows for additional query extensions (GET parameters) to be passed to the bridge. That way custom filter can be applied without the need to reproduce them in this bridge (they got a lot!) Etsy provides a good set of feeds as described here: https://www.etsy.com/help/article/100 (so there is no need to include them here) References #492 --- bridges/EtsyBridge.php | 83 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 bridges/EtsyBridge.php diff --git a/bridges/EtsyBridge.php b/bridges/EtsyBridge.php new file mode 100644 index 0000000..756ab10 --- /dev/null +++ b/bridges/EtsyBridge.php @@ -0,0 +1,83 @@ + array( + 'name' => 'Search query', + 'type' => 'text', + 'required' => true, + 'title' => 'Insert your search term here', + 'exampleValue' => 'Enter your search term' + ), + 'queryextension' => array( + 'name' => 'Query extension', + 'type' => 'text', + 'requied' => false, + 'title' => 'Insert additional query parts here +(anything after ?search=)', + 'exampleValue' => '&explicit=1&locationQuery=2921044' + ), + 'showimage' => array( + 'name' => 'Show image in content', + 'type' => 'checkbox', + 'requrired' => false, + 'title' => 'Activate to show the image in the content', + 'defaultValue' => false + ) + ) + ); + + public function collectData(){ + $html = getSimpleHTMLDOM($this->getURI()) + or returnServerError('Failed to receive ' . $this->getURI()); + + $results = $html->find('div.block-grid-item'); + + foreach($results as $result){ + // Skip banner cards (ads for categories) + if($result->find('a.banner-card')) + continue; + + $item = array(); + + $item['title'] = $result->find('a', 0)->title; + $item['uri'] = $result->find('a', 0)->href; + $item['author'] = $result->find('div.card-shop-name', 0)->plaintext; + + $item['content'] = '

' + . $result->find('div.card-price', 0)->plaintext + . '

' + . $result->find('div.card-title', 0)->plaintext + . '

'; + + $image = $result->find('img.placeholder', 0)->src; + + if($this->getInput('showimage')){ + $item['content'] .= ''; + } + + $item['enclosures'] = array($image); + + $this->items[] = $item; + } + } + + public function getURI(){ + if(!is_null($this->getInput('query'))){ + $uri = self::URI . '/search?q=' . urlencode($this->getInput('query')); + + if(!is_null($this->getInput('queryextension'))){ + $uri .= $this->getInput('queryextension'); + } + + return $uri; + } + + return parent::getURI(); + } +}