getIdAnnonceFromUrl($this->url); $url = sprintf('https://www.immobilier.notaires.fr/pub-services/inotr-www-annonces/v1/annonces/%s', (int)$idAnnonce); $request = $this->client->get( $url, [ 'headers' => [ 'Referer' => $this->url, 'User-Agent' => 'Dalvik/2.1.0 (Linux; U; Android 6.0.1; D5803 Build/MOB30M.Z1)', 'Connection' => 'Keep-Alive', 'Accept-Encoding' => 'gzip' ], ] ); $annonce = json_decode($request->getBody()->getContents(), true); $parsedHome = new ParsedHome(); $transaction = $annonce[strtolower($annonce['typeTransaction'])]; $images = $transaction['multimedias']; $parsedHome->pictures = []; foreach ($images as $image) { $parsedHome->pictures[] = $image['vga']; } $parsedHome->description = $transaction['descriptions'][0]['descLongue']; if (array_key_exists('prixTotal', $transaction)) { $parsedHome->price = $transaction['prixTotal']; } elseif ($transaction['redevableEmoluments'] === 'ACQUEREUR') { $parsedHome->price = $transaction['prix'] + $transaction['emoluments']; } else { $parsedHome->price = $transaction['prix']; } $bien = $annonce['bien']; $maison = $bien['maison']; $parsedHome->city = $maison['communeNom']; $parsedHome->surface = $maison['surfaceHabitable']; $parsedHome->garden_surface = $maison['surfaceTerrain'] ?? null; $parsedHome->rooms = $maison['nbPieces']; $parsedHome->title = $transaction['descriptions'][0]['descCourte']; $parsedHome->energy = $maison['consommationClasse'] === 'Y' ? null : $maison['consommationClasse']; $parsedHome->ges = $maison['emissionGesClasse'] === 'Y' ? null : $maison['emissionGesClasse']; if (array_key_exists('coordonneesExactesW84', $maison)) { $parsedHome->map = [ 'lat' => $maison['coordonneesExactesW84']['coordonneeY'], 'lng' => $maison['coordonneesExactesW84']['coordonneeX'] ]; } return $parsedHome; } private function getIdAnnonceFromUrl($url) { // ex: https://www.immobilier.notaires.fr/fr/annonce-immo/immo-interactif/maison/rognac-13/1263723 // ou : https://www.immobilier.notaires.fr/fr/annonce-immo-detail?idAnnonce=1268978&utm_source=alert&utm_medium=email&utm_campaign=annonces if (strpos($url, 'idAnnonce=') === false) { $url = parse_url($url, PHP_URL_PATH); return collect(explode('/', $url))->last(); } parse_str(parse_url($url, PHP_URL_QUERY), $query_string); return $query_string['idAnnonce']; } }