derivato da blallo/rss-bridge
5ad157d2fd
BridgeAbstract will return 3600 seconds by default, so the function can be removed from any bridge implementing getCacheDuration returning the same value. Documentation updated accordingly.
286 righe
No EOL
10 KiB
PHP
File eseguibile
286 righe
No EOL
10 KiB
PHP
File eseguibile
<?php
|
|
class LeBonCoinBridge extends BridgeAbstract{
|
|
|
|
public function loadMetadatas() {
|
|
|
|
$this->maintainer = "16mhz";
|
|
$this->name = "LeBonCoin";
|
|
$this->uri = "http://www.leboncoin.fr";
|
|
$this->description = "Returns most recent results from LeBonCoin for a region, and optionally a category and a keyword .";
|
|
$this->update = "2016-08-06";
|
|
|
|
$this->parameters[] =
|
|
'[
|
|
|
|
{
|
|
"name" : "Mot Clé",
|
|
"identifier" : "k"
|
|
},
|
|
|
|
{
|
|
"name" : "Région",
|
|
"identifier" : "r",
|
|
"type" : "list",
|
|
"values" : [
|
|
{
|
|
"name" : "Alsace",
|
|
"value" : "alsace"
|
|
},
|
|
{
|
|
"name" : "Aquitaine",
|
|
"value" : "aquitaine"
|
|
},
|
|
{
|
|
"name" : "Auvergne",
|
|
"value" : "auvergne"
|
|
},
|
|
{
|
|
"name" : "Basse Normandie",
|
|
"value" : "basse_normandie"
|
|
},
|
|
{
|
|
"name" : "Bourgogne",
|
|
"value" : "bourgogne"
|
|
},
|
|
{
|
|
"name" : "Bretagne",
|
|
"value" : "bretagne"
|
|
},
|
|
{
|
|
"name" : "Centre",
|
|
"value" : "centre"
|
|
},
|
|
{
|
|
"name" : "Champagne Ardenne",
|
|
"value" : "champagne_ardenne"
|
|
},
|
|
{
|
|
"name" : "Corse",
|
|
"value" : "corse"
|
|
},
|
|
{
|
|
"name" : "Franche Comté",
|
|
"value" : "franche_comte"
|
|
},
|
|
{
|
|
"name" : "Haute Normandie",
|
|
"value" : "haute_normandie"
|
|
},
|
|
{
|
|
"name" : "Ile de France",
|
|
"value" : "ile_de_france"
|
|
},
|
|
{
|
|
"name" : "Languedoc Roussillon",
|
|
"value" : "languedoc_roussillon"
|
|
},
|
|
{
|
|
"name" : "Limousin",
|
|
"value" : "limousin"
|
|
},
|
|
{
|
|
"name" : "Lorraine",
|
|
"value" : "lorraine"
|
|
},
|
|
{
|
|
"name" : "Midi Pyrénées",
|
|
"value" : "midi_pyrenees"
|
|
},
|
|
{
|
|
"name" : "Nord Pas De Calais",
|
|
"value" : "nord_pas_de_calais"
|
|
},
|
|
{
|
|
"name" : "Pays de la Loire",
|
|
"value" : "pays_de_la_loire"
|
|
},
|
|
{
|
|
"name" : "Picardie",
|
|
"value" : "picardie"
|
|
},
|
|
{
|
|
"name" : "Poitou Charentes",
|
|
"value" : "poitou_charentes"
|
|
},
|
|
{
|
|
"name" : "Provence Alpes Côte d\'Azur",
|
|
"value" : "provence_alpes_cote_d_azur"
|
|
},
|
|
{
|
|
"name" : "Rhône-Alpes",
|
|
"value" : "rhone_alpes"
|
|
},
|
|
{
|
|
"name" : "Guadeloupe",
|
|
"value" : "guadeloupe"
|
|
},
|
|
{
|
|
"name" : "Martinique",
|
|
"value" : "martinique"
|
|
},
|
|
{
|
|
"name" : "Guyane",
|
|
"value" : "guyane"
|
|
},
|
|
{
|
|
"name" : "Réunion",
|
|
"value" : "reunion"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name" : "Catégorie",
|
|
"identifier" : "c",
|
|
"type" : "list",
|
|
"values" : [
|
|
{ "name" : "---- Select ----", "value" : "" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "EMPLOI", "value" : "_emploi_" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "VEHICULES", "value" : "_vehicules_" },
|
|
{ "name" : " Voitures", "value" : "voitures" },
|
|
{ "name" : " Motos", "value" : "motos" },
|
|
{ "name" : " Caravaning", "value" : "caravaning" },
|
|
{ "name" : " Utilitaires", "value" : "utilitaires" },
|
|
{ "name" : " Equipement Auto", "value" : "equipement_auto" },
|
|
{ "name" : " Equipement Moto", "value" : "equipement_moto" },
|
|
{ "name" : " Equipement Caravaning", "value" : "equipement_caravaning" },
|
|
{ "name" : " Nautisme", "value" : "nautisme" },
|
|
{ "name" : " Equipement Nautisme", "value" : "equipement_nautisme" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "IMMOBILIER", "value" : "_immobilier_" },
|
|
{ "name" : " Ventes immobilieres", "value" : "ventes_immobilieres" },
|
|
{ "name" : " Locations", "value" : "locations" },
|
|
{ "name" : " Colocations", "value" : "colocations" },
|
|
{ "name" : " Bureaux & Commerces", "value" : "bureaux_commerces" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "VACANCES", "value" : "_vacances_" },
|
|
{ "name" : " Locations gites", "value" : "locations_gites" },
|
|
{ "name" : " Chambres d\'hôtes", "value" : "chambres_d_hotes" },
|
|
{ "name" : " Campings", "value" : "campings" },
|
|
{ "name" : " Hôtels", "value" : "hotels" },
|
|
{ "name" : " Hébergements insolites", "value" : "hebergements_insolites" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "MULTIMEDIA", "value" : "_multimedia_" },
|
|
{ "name" : " Informatique", "value" : "informatique" },
|
|
{ "name" : " Consoles & Jeux vidéo", "value" : "consoles_jeux_video" },
|
|
{ "name" : " Image & Son", "value" : "image_son" },
|
|
{ "name" : " Téléphonie", "value" : "telephonie" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "LOISIRS", "value" : "_loisirs_" },
|
|
{ "name" : " DVD / Films", "value" : "dvd_films" },
|
|
{ "name" : " CD / Musique", "value" : "cd_musique" },
|
|
{ "name" : " Livres", "value" : "livres" },
|
|
{ "name" : " Animaux", "value" : "animaux" },
|
|
{ "name" : " Vélos", "value" : "velos" },
|
|
{ "name" : " Sports & Hobbies", "value" : "sports_hobbies" },
|
|
{ "name" : " Instruments de musique", "value" : "instruments_de_musique" },
|
|
{ "name" : " Collection", "value" : "collection" },
|
|
{ "name" : " Jeux & Jouets", "value" : "jeux_jouets" },
|
|
{ "name" : " Vins & Gastronomie", "value" : "vins_gastronomie" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "MATERIEL PROFESSIONNEL", "value" : "_materiel_professionnel_" },
|
|
{ "name" : " Materiel Agricole", "value" : "materiel_agricole" },
|
|
{ "name" : " Transport - Manutention", "value" : "transport_manutention" },
|
|
{ "name" : " BTP - Chantier - Gros-oeuvre", "value" : "btp_chantier_gros_oeuvre" },
|
|
{ "name" : " Outillage - Materiaux 2nd-oeuvre", "value" : "outillage_materiaux_2nd_oeuvre" },
|
|
{ "name" : " Equipements Industriels", "value" : "equipements_industriels" },
|
|
{ "name" : " Restauration - Hôtellerie", "value" : "restauration_hotellerie" },
|
|
{ "name" : " Fournitures de Bureau", "value" : "fournitures_de_bureau" },
|
|
{ "name" : " Commerces & Marchés", "value" : "commerces_marches" },
|
|
{ "name" : " Matériel médical", "value" : "materiel_medical" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "SERVICES", "value" : "_services_" },
|
|
{ "name" : " Prestations de services", "value" : "prestations_de_services" },
|
|
{ "name" : " Billetterie", "value" : "billetterie" },
|
|
{ "name" : " Evénements", "value" : "evenements" },
|
|
{ "name" : " Cours particuliers", "value" : "cours_particuliers" },
|
|
{ "name" : " Covoiturage", "value" : "covoiturage" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "MAISON", "value" : "_maison_" },
|
|
{ "name" : " Ameublement", "value" : "ameublement" },
|
|
{ "name" : " Electroménager", "value" : "electromenager" },
|
|
{ "name" : " Arts de la table", "value" : "arts_de_la_table" },
|
|
{ "name" : " Décoration", "value" : "decoration" },
|
|
{ "name" : " Linge de maison", "value" : "linge_de_maison" },
|
|
{ "name" : " Bricolage", "value" : "bricolage" },
|
|
{ "name" : " Jardinage", "value" : "jardinage" },
|
|
{ "name" : " Vêtements", "value" : "vetements" },
|
|
{ "name" : " Chaussures", "value" : "chaussures" },
|
|
{ "name" : " Accessoires & Bagagerie", "value" : "accessoires_bagagerie" },
|
|
{ "name" : " Montres & Bijoux", "value" : "montres_bijoux" },
|
|
{ "name" : " Equipement bébé", "value" : "equipement_bebe" },
|
|
{ "name" : " Vêtements bébé", "value" : "vetements_bebe" },
|
|
|
|
{ "name" : "", "value" : "" },
|
|
{ "name" : "AUTRES", "value" : "autres" }
|
|
]
|
|
}
|
|
]';
|
|
|
|
}
|
|
|
|
|
|
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']);
|
|
}
|
|
$html = $this->file_get_html($link) or $this->returnError('Could not request LeBonCoin.', 404);
|
|
|
|
$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;
|
|
$title = html_entity_decode($element->getAttribute('title'));
|
|
$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;
|
|
}
|
|
}
|
|
|
|
public function getName(){
|
|
return 'LeBonCoin';
|
|
}
|
|
|
|
public function getURI(){
|
|
return 'http://www.leboncoin.fr';
|
|
}
|
|
} |