app
Console
Exceptions
Http
Parser
ImmobilierNotaires.php
LBC.php
LannionImmo.php
Orpi.php
OuestFrance.php
Pap.php
Safti.php
SeLoger.php
Providers
Home.php
ParsedHome.php
Parser.php
User.php
bootstrap
config
database
public
resources
routes
storage
tests
.drone.yml
.editorconfig
.env.example
.gitattributes
.gitignore
.styleci.yml
README.md
artisan
composer.json
composer.lock
package-lock.json
package.json
phpunit.xml
server.php
webpack.mix.js
52 lines
1.5 KiB
PHP
52 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Parser;
|
|
|
|
use Absmoca\Leboncoin;
|
|
use App\ParsedHome;
|
|
use App\Parser;
|
|
|
|
class LBC extends Parser
|
|
{
|
|
public function __construct($url)
|
|
{
|
|
parent::__construct($url);
|
|
}
|
|
|
|
/**
|
|
* @return \App\ParsedHome
|
|
*/
|
|
public function parse(): ParsedHome
|
|
{
|
|
$idAnnonce = (int) $this->getIdAnnonceFromUrl($this->url);
|
|
$lbc = new Leboncoin();
|
|
$annonce = $lbc->getAnnonce($idAnnonce);
|
|
$parsedHome = new ParsedHome();
|
|
$parsedHome->title = $annonce->getName();
|
|
$parsedHome->price = $annonce->getPrice();
|
|
$attributes = $annonce->getAttributes();
|
|
$parsedHome->surface = $attributes[1]->value;
|
|
$parsedHome->rooms = $attributes[2]->value;
|
|
$parsedHome->energy = strtoupper($attributes[3]->value);
|
|
$parsedHome->ges = strtoupper($attributes[4]->value);
|
|
$parsedHome->description = $annonce->getDescription();
|
|
$parsedHome->pictures = $annonce->getImages();
|
|
$location = $annonce->getLocation();
|
|
$parsedHome->city = $location['city'];
|
|
$parsedHome->map = ['lat' => $location['lat'], 'lng' => $location['lng']];
|
|
|
|
return $parsedHome;
|
|
}
|
|
|
|
/**
|
|
* @param $url
|
|
*
|
|
* @return string
|
|
*/
|
|
private function getIdAnnonceFromUrl($url)
|
|
{
|
|
// ex : https://www.leboncoin.fr/ventes_immobilieres/1813996383.htm/
|
|
return collect(explode('.', collect(array_filter(explode('/', $url)))->last()))->first();
|
|
}
|
|
}
|