// ==UserScript==
// @name LeBonCoin plus plus General
// @namespace lbc_general
// @include https://www.leboncoin.fr/*
// @version 1.0
// @grant GM.xmlHttpRequest
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
// @description lbc++general
// ==/UserScript==
this.$ = this.$$$ = jQuery.noConflict(true);
// if($( "#searcharea option:selected" ).text().indexOf('Côte') !== -1) {
// var onlyAddInfo = true;
// } else {
// var onlyAddInfo = false;
// }
$(function () {
console.log("LBC++ loading...");
var googleApiKey = "AIzaSyCHSc3xuyTzEa2fJfspmoibJduKa1iNmVs";
var destCity = ["3 rue du docteur quignard, 21000, DIJON, France", ""];
// http://atlas.cosmosia.com/
var postalCodes = ["21121", "21120", "21240", "21370", "21380", "21490", "21850", "21800", "21560", "21110", "21600", "21300", "21910", "21220", "21160", "21410", "21640", "21540", "21470", "21310", "21270"];
function getDistances(place, el, cityEl, dest, cityName) {
console.log("place.city: "+ place.city);
console.log("dest: "+ dest);
// transit: https://developers.google.com/maps/documentation/distance-matrix/intro?hl=fr#travel_modes
var request = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=21 "+place.city+"&destinations="+dest+"&mode=driving&sensor=false&key="+googleApiKey;
console.log(`request: `, request);
GM.xmlHttpRequest ({
method: "GET",
url: request,
onload: function(result) {
console.log(`result: `, result);
var res = $.parseJSON(result.response);
var status = res.rows[0].elements[0].status;
if(status === "OK") {
var duration = res.rows[0].elements[0].duration.text;
var distance = res.rows[0].elements[0].distance.text;
var infosAdd = distance+ ', ' +duration;
console.log(`infosAdd: `, infosAdd);
// var pBlock = '<p class="item_supp">'+cityName+': '+infosAdd+'</p>';
var pBlock = '<p class="item_supp">'+cityName+': '+infosAdd+'</p><p><a href="https://www.google.fr/maps/dir/'+ dest +'/21 '+ place.city +'/" target="_blank">map</a></p>';
cityEl.after(pBlock);
}
else {
var pBlock = '<p class="item_supp">'+cityName+': NOT FOUND (<a href="'+request+'">gmaps link</a>)</p>';
cityEl.after(pBlock);
}
}
});
}
function parsePageDom() {
var offers = $('.tabsContent ul li');
// var offers = $('#react-tabs-1 div ul li');
console.log(`offers: `, offers);
$.each(offers, function(i, el){
// add target blank to a link
// console.log('el', $(el).find('a').attr("target","_blank"));
var href = $(el).find('a').attr('href');
$(el).find('a').attr("target","_blank");
var ctn = $(el).find('.item_price');
// ctn.prev().prev().append('<p class="item_supp loading" content=""><strong>Loading values...</strong></p>');
// requestPagesBis(href, el);
// change pro/private container style
var isProContainer = ($(el).find('.ispro').length !== 0);
if(isProContainer) {
$(el).css('opacity', '0.8').css('background', '#ddd');
}
if(!isProContainer && $(el).find('.lbcppheader').length === 0) {
$(el).css('border', '1px solid #aaa');
}
// get city name to retrieve distance and duration
var cityEl = $(el).find('.item_infos .item_supp:eq(1)');
var cityTxt = $.trim(cityEl.text());
var cityParsing = cityTxt.replace(/\r\n/g, "\n").split("\n");
var place = { "city" : cityParsing[0], "departement" : cityParsing[cityParsing.length-1].trim() };
getDistances(place, el, cityEl, destCity[0], "Travail");
});
}
parsePageDom()
});