diff options
Diffstat (limited to 'bridges/ParuVenduImmoBridge.php')
-rw-r--r-- | bridges/ParuVenduImmoBridge.php | 223 |
1 files changed, 113 insertions, 110 deletions
diff --git a/bridges/ParuVenduImmoBridge.php b/bridges/ParuVenduImmoBridge.php index e7a0c02e..f48e36df 100644 --- a/bridges/ParuVenduImmoBridge.php +++ b/bridges/ParuVenduImmoBridge.php @@ -1,112 +1,115 @@ <?php -class ParuVenduImmoBridge extends BridgeAbstract { - - const MAINTAINER = 'polo2ro'; - const NAME = 'Paru Vendu Immobilier'; - const URI = 'https://www.paruvendu.fr'; - const CACHE_TIMEOUT = 10800; // 3h - const DESCRIPTION = 'Returns the ads from the first page of search result.'; - - const PARAMETERS = array( array( - 'minarea' => array( - 'name' => 'Minimal surface m²', - 'type' => 'number' - ), - 'maxprice' => array( - 'name' => 'Max price', - 'type' => 'number' - ), - 'pa' => array( - 'name' => 'Country code', - 'exampleValue' => 'FR' - ), - 'lo' => array( - 'name' => 'department numbers or postal codes, comma-separated' - ) - )); - - public function collectData(){ - $html = getSimpleHTMLDOM($this->getURI()); - - $elements = $html->find('#bloc_liste > div.ergov3-annonce a'); - - foreach($elements as $element) { - - if(!$element->title) { - continue; - } - - $img = ''; - foreach($element->find('span.img img') as $img) { - if($img->original) { - $img = '<img src="' . $img->original . '" />'; - } - } - - $description = $element->find('p', 0); - if ($description) { - $desc = str_replace("voir l'annonce", '', $description->innertext); - } else { - $desc = ''; - } - - $priceElement = $element->find('div.ergov3-priceannonce', 0); - if ($priceElement) { - $price = $priceElement->innertext; - } else { - $price = ''; - } - - list($href) = explode('#', $element->href); - - $item = array(); - $item['uri'] = self::URI . $href; - $item['title'] = $element->title; - $item['content'] = $img . $desc . $price; - $this->items[] = $item; - } - } - - public function getURI(){ - $appartment = '&tbApp=1&tbDup=1&tbChb=1&tbLof=1&tbAtl=1&tbPla=1'; - $maison = '&tbMai=1&tbVil=1&tbCha=1&tbPro=1&tbHot=1&tbMou=1&tbFer=1'; - $link = self::URI - . '/immobilier/annonceimmofo/liste/listeAnnonces?tt=1' - . $appartment - . $maison; - - if($this->getInput('minarea')) { - $link .= '&sur0=' . urlencode($this->getInput('minarea')); - } - - if($this->getInput('maxprice')) { - $link .= '&px1=' . urlencode($this->getInput('maxprice')); - } - - if($this->getInput('pa')) { - $link .= '&pa=' . urlencode($this->getInput('pa')); - } - - if($this->getInput('lo')) { - $link .= '&lo=' . urlencode($this->getInput('lo')); - } - return $link; - } - - public function getName(){ - if(!is_null($this->getInput('minarea'))) { - $request = ''; - $minarea = $this->getInput('minarea'); - if(!empty($minarea)) { - $request .= ' ' . $minarea . ' m2'; - } - $location = $this->getInput('lo'); - if(!empty($location)) { - $request .= ' In: ' . $location; - } - return 'Paru Vendu Immobilier' . $request; - } - - return parent::getName(); - } + +class ParuVenduImmoBridge extends BridgeAbstract +{ + const MAINTAINER = 'polo2ro'; + const NAME = 'Paru Vendu Immobilier'; + const URI = 'https://www.paruvendu.fr'; + const CACHE_TIMEOUT = 10800; // 3h + const DESCRIPTION = 'Returns the ads from the first page of search result.'; + + const PARAMETERS = [ [ + 'minarea' => [ + 'name' => 'Minimal surface m²', + 'type' => 'number' + ], + 'maxprice' => [ + 'name' => 'Max price', + 'type' => 'number' + ], + 'pa' => [ + 'name' => 'Country code', + 'exampleValue' => 'FR' + ], + 'lo' => [ + 'name' => 'department numbers or postal codes, comma-separated' + ] + ]]; + + public function collectData() + { + $html = getSimpleHTMLDOM($this->getURI()); + + $elements = $html->find('#bloc_liste > div.ergov3-annonce a'); + + foreach ($elements as $element) { + if (!$element->title) { + continue; + } + + $img = ''; + foreach ($element->find('span.img img') as $img) { + if ($img->original) { + $img = '<img src="' . $img->original . '" />'; + } + } + + $description = $element->find('p', 0); + if ($description) { + $desc = str_replace("voir l'annonce", '', $description->innertext); + } else { + $desc = ''; + } + + $priceElement = $element->find('div.ergov3-priceannonce', 0); + if ($priceElement) { + $price = $priceElement->innertext; + } else { + $price = ''; + } + + list($href) = explode('#', $element->href); + + $item = []; + $item['uri'] = self::URI . $href; + $item['title'] = $element->title; + $item['content'] = $img . $desc . $price; + $this->items[] = $item; + } + } + + public function getURI() + { + $appartment = '&tbApp=1&tbDup=1&tbChb=1&tbLof=1&tbAtl=1&tbPla=1'; + $maison = '&tbMai=1&tbVil=1&tbCha=1&tbPro=1&tbHot=1&tbMou=1&tbFer=1'; + $link = self::URI + . '/immobilier/annonceimmofo/liste/listeAnnonces?tt=1' + . $appartment + . $maison; + + if ($this->getInput('minarea')) { + $link .= '&sur0=' . urlencode($this->getInput('minarea')); + } + + if ($this->getInput('maxprice')) { + $link .= '&px1=' . urlencode($this->getInput('maxprice')); + } + + if ($this->getInput('pa')) { + $link .= '&pa=' . urlencode($this->getInput('pa')); + } + + if ($this->getInput('lo')) { + $link .= '&lo=' . urlencode($this->getInput('lo')); + } + return $link; + } + + public function getName() + { + if (!is_null($this->getInput('minarea'))) { + $request = ''; + $minarea = $this->getInput('minarea'); + if (!empty($minarea)) { + $request .= ' ' . $minarea . ' m2'; + } + $location = $this->getInput('lo'); + if (!empty($location)) { + $request .= ' In: ' . $location; + } + return 'Paru Vendu Immobilier' . $request; + } + + return parent::getName(); + } } |