2014-07-22 17:20:43 +02:00
|
|
|
<?php
|
|
|
|
class LeBonCoinBridge extends BridgeAbstract{
|
|
|
|
|
2015-11-05 16:50:18 +01:00
|
|
|
public function loadMetadatas() {
|
|
|
|
|
|
|
|
$this->maintainer = "16mhz";
|
|
|
|
$this->name = "LeBonCoin";
|
|
|
|
$this->uri = "http://www.leboncoin.fr";
|
2016-05-02 00:55:22 +02:00
|
|
|
$this->description = "Returns most recent results from LeBonCoin for a region, and optionally a category and a keyword .";
|
2015-11-05 16:50:18 +01:00
|
|
|
|
2016-08-22 01:25:56 +02:00
|
|
|
$this->parameters[] = array(
|
|
|
|
'k'=>array('name'=>'Mot Clé'),
|
|
|
|
'r'=>array(
|
|
|
|
'name'=>'Région',
|
|
|
|
'type'=>'list',
|
|
|
|
'values'=>array(
|
|
|
|
'Alsace'=>'alsace',
|
|
|
|
'Aquitaine'=>'aquitaine',
|
|
|
|
'Auvergne'=>'auvergne',
|
|
|
|
'Basse Normandie'=>'basse_normandie',
|
|
|
|
'Bourgogne'=>'bourgogne',
|
|
|
|
'Bretagne'=>'bretagne',
|
|
|
|
'Centre'=>'centre',
|
|
|
|
'Champagne Ardenne'=>'champagne_ardenne',
|
|
|
|
'Corse'=>'corse',
|
|
|
|
'Franche Comté'=>'franche_comte',
|
|
|
|
'Haute Normandie'=>'haute_normandie',
|
|
|
|
'Ile de France'=>'ile_de_france',
|
|
|
|
'Languedoc Roussillon'=>'languedoc_roussillon',
|
|
|
|
'Limousin'=>'limousin',
|
|
|
|
'Lorraine'=>'lorraine',
|
|
|
|
'Midi Pyrénées'=>'midi_pyrenees',
|
|
|
|
'Nord Pas De Calais'=>'nord_pas_de_calais',
|
|
|
|
'Pays de la Loire'=>'pays_de_la_loire',
|
|
|
|
'Picardie'=>'picardie',
|
|
|
|
'Poitou Charentes'=>'poitou_charentes',
|
|
|
|
'Provence Alpes Côte d\'Azur'=>'provence_alpes_cote_d_azur',
|
|
|
|
'Rhône-Alpes'=>'rhone_alpes',
|
|
|
|
'Guadeloupe'=>'guadeloupe',
|
|
|
|
'Martinique'=>'martinique',
|
|
|
|
'Guyane'=>'guyane',
|
|
|
|
'Réunion'=>'reunion'
|
|
|
|
)
|
|
|
|
),
|
|
|
|
'c'=>array(
|
|
|
|
'name'=>'Catégorie',
|
|
|
|
'type'=>'list',
|
|
|
|
'values'=>array(
|
|
|
|
'EMPLOI'=>'_emploi_',
|
|
|
|
'VEHICULES'=>array(
|
|
|
|
'Tous'=>'_vehicules_',
|
|
|
|
'Voitures'=>'voitures',
|
|
|
|
'Motos'=>'motos',
|
|
|
|
'Caravaning'=>'caravaning',
|
|
|
|
'Utilitaires'=>'utilitaires',
|
|
|
|
'Équipement Auto'=>'equipement_auto',
|
|
|
|
'Équipement Moto'=>'equipement_moto',
|
|
|
|
'Équipement Caravaning'=>'equipement_caravaning',
|
|
|
|
'Nautisme'=>'nautisme',
|
|
|
|
'Équipement Nautisme'=>'equipement_nautisme'
|
|
|
|
),
|
|
|
|
'IMMOBILIER'=>array(
|
|
|
|
'Tous'=>'_immobilier_',
|
|
|
|
'Ventes immobilières'=>'ventes_immobilieres',
|
|
|
|
'Locations'=>'locations',
|
|
|
|
'Colocations'=>'colocations',
|
|
|
|
'Bureaux & Commerces'=>'bureaux_commerces'
|
|
|
|
),
|
|
|
|
'VACANCES'=>array(
|
|
|
|
'Tous'=>'_vacances_',
|
|
|
|
'Location gîtes'=>'locations_gites',
|
|
|
|
'Chambres d\'hôtes'=>'chambres_d_hotes',
|
|
|
|
'Campings'=>'campings',
|
|
|
|
'Hôtels'=>'hotels',
|
|
|
|
'Hébergements insolites'=>'hebergements_insolites'
|
|
|
|
),
|
|
|
|
'MULTIMEDIA'=>array(
|
2016-08-22 11:15:00 +02:00
|
|
|
'Tous'=>'_multimedia_',
|
2016-08-22 01:25:56 +02:00
|
|
|
'Informatique'=>'informatique',
|
|
|
|
'Consoles & Jeux vidéo'=>'consoles_jeux_video',
|
|
|
|
'Image & Son'=>'image_son',
|
|
|
|
'Téléphonie'=>'telephonie'
|
|
|
|
),
|
|
|
|
'LOISIRS'=>array(
|
|
|
|
'Tous'=>'_loisirs_',
|
|
|
|
'DVD / Films'=>'dvd_films',
|
|
|
|
'CD / Musique'=>'cd_musique',
|
|
|
|
'Livres'=>'livres',
|
|
|
|
'Animaux'=>'animaux',
|
|
|
|
'Vélos'=>'velos',
|
|
|
|
'Sports & Hobbies'=>'sports_hobbies',
|
|
|
|
'Instruments de musique'=>'instruments_de_musique',
|
|
|
|
'Collection'=>'collection',
|
|
|
|
'Jeux & Jouets'=>'jeux_jouets',
|
|
|
|
'Vins & Gastronomie'=>'vins_gastronomie'
|
|
|
|
),
|
|
|
|
'MATÉRIEL PROFESSIONNEL'=>array(
|
|
|
|
'Tous'=>'_materiel_professionnel_',
|
|
|
|
'Matériel Agricole'=>'mateiel_agricole',
|
|
|
|
'Transport - Manutention'=>'transport_manutention',
|
|
|
|
'BTP - Chantier - Gros-œuvre'=>'btp_chantier_gros_oeuvre',
|
|
|
|
'Outillage - Matériaux 2nd-œuvre'=>'outillage_materiaux_2nd_oeuvre',
|
|
|
|
'Équipements Industriels'=>'equipement_industriels',
|
|
|
|
'Restauration - Hôtellerie'=>'restauration_hotellerie',
|
|
|
|
'Fournitures de Bureau'=>'fournitures_de_bureau',
|
|
|
|
'Commerces & Marchés'=>'commerces_marches',
|
|
|
|
'Matériel médical'=>'materiel_medical'
|
|
|
|
),
|
|
|
|
'SERVICES'=>array(
|
|
|
|
'Tous'=>'_services_',
|
|
|
|
'Prestations de services'=>'prestations_de_services',
|
|
|
|
'Billetterie'=>'billetterie',
|
|
|
|
'Évènements'=>'evenements',
|
|
|
|
'Cours particuliers'=>'cours_particuliers',
|
|
|
|
'Covoiturage'=>'covoiturage'
|
|
|
|
),
|
|
|
|
'MAISON'=>array(
|
|
|
|
'Tous'=>'_maison_',
|
|
|
|
'Ameublement'=>'ameublement',
|
|
|
|
'Électroménager'=>'electromenager',
|
|
|
|
'Arts de la table'=>'arts_de_la_table',
|
|
|
|
'Décoration'=>'decoration',
|
|
|
|
'Linge de maison'=>'linge_de_maison',
|
|
|
|
'Bricolage'=>'bricolage',
|
|
|
|
'Jardinage'=>'jardinage',
|
|
|
|
'Vêtements'=>'vetements',
|
|
|
|
'Chaussures'=>'chaussures',
|
|
|
|
'Accessoires & Bagagerie'=>'accessoires_bagagerie',
|
|
|
|
'Montres & Bijoux'=>'montres_bijoux',
|
|
|
|
'Équipement bébé'=>'equipement_bebe',
|
|
|
|
'Vêtements bébé'=>'vetements_bebe'
|
|
|
|
),
|
|
|
|
'AUTRES'=>'autres'
|
|
|
|
)
|
|
|
|
)
|
|
|
|
);
|
2015-11-05 16:50:18 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-05-02 00:55:22 +02:00
|
|
|
public function collectData(array $param){
|
|
|
|
|
|
|
|
$html = '';
|
|
|
|
if (empty($param['c'])) {
|
|
|
|
$link = 'http://www.leboncoin.fr/annonces/offres/' . $param['r'] . '/?f=a&th=1&q=' . urlencode($param['k']);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$link = 'http://www.leboncoin.fr/' . $param['c'] . '/offres/' . $param['r'] . '/?f=a&th=1&q=' . urlencode($param['k']);
|
|
|
|
}
|
2016-07-08 19:06:35 +02:00
|
|
|
$html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request LeBonCoin.');
|
2016-05-02 00:55:22 +02:00
|
|
|
|
|
|
|
$list = $html->find('.tabsContent', 0);
|
|
|
|
if($list === NULL) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$tags = $list->find('li');
|
|
|
|
|
|
|
|
foreach($tags as $element) {
|
|
|
|
|
|
|
|
$element = $element->find('a', 0);
|
|
|
|
|
|
|
|
$item = new \Item();
|
|
|
|
$item->uri = $element->href;
|
2016-05-02 10:30:13 +02:00
|
|
|
$title = html_entity_decode($element->getAttribute('title'));
|
2016-05-02 00:55:22 +02:00
|
|
|
$content_image = $element->find('div.item_image', 0)->find('.lazyload', 0);
|
|
|
|
|
|
|
|
if($content_image !== NULL) {
|
|
|
|
$content = '<img src="' . $content_image->getAttribute('data-imgsrc') . '" alt="thumbnail">';
|
|
|
|
} else {
|
|
|
|
$content = "";
|
|
|
|
}
|
|
|
|
$date = $element->find('aside.item_absolute', 0)->find('p.item_sup', 0);
|
|
|
|
|
|
|
|
$detailsList = $element->find('section.item_infos', 0);
|
|
|
|
|
|
|
|
for($i = 0; $i <= 1; $i++) $content .= $detailsList->find('p.item_supp', $i)->plaintext;
|
|
|
|
$price = $detailsList->find('h3.item_price', 0);
|
|
|
|
$content .= $price === NULL ? '' : $price->plaintext;
|
|
|
|
|
|
|
|
$item->title = $title;
|
|
|
|
$item->content = $content . $date;
|
|
|
|
$this->items[] = $item;
|
|
|
|
}
|
|
|
|
}
|
2016-07-08 19:06:35 +02:00
|
|
|
}
|