🏠 返回首頁 

Greasy Fork is available in English.

Lebonscrap

Usage privé pour Thomas


Installer ce script?
// ==UserScript==
// @name         Lebonscrap
// @namespace    http://tampermonkey.net/
// @version      4.07
// @description  Usage privé pour Thomas
// @author       Thomas
// @match        https://www.leboncoin.fr/*
// @icon         https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=http://leboncoin.fr&size=64
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://code.jquery.com/ui/1.14.0/jquery-ui.min.js
// @license MIT
// @grant        none
// ==/UserScript==
(function() {
'use strict';
// A MODIFIER
var sound = false; // true ou false, pour activer par défaut le son
var autorefresh = false; // true ou false, permet d'activer par défaut le robot
// Pour les couleurs, utilisez: https://htmlcolorcodes.com et indiquez le code couleur de 6 caractères précédé d'un dièse, le tout entre guillemets : Exemple: "#ff00ff"
var theme_main_color = "#ec5a13"; // Couleur hexadecimale #1
var theme_grey_color = "#bbbbbb"; // Couleur hexadecimale #2
var refreshDelay = 5; // Undiquez un chiffre sans guillemets, c'est la durée du chrono par défaut
var excludedCategories = ['livres', 'dvd_films', 'jeux_jouets', 'vetements', 'jeux_video', 'equipement_moto', 'equipement_auto', 'cd_musique']; // Indiquez ici les catégories à exclure du robot
var effetDuBoutonDuTemps = 2; // Modifie l'impacte des boutons en ajoutant ou retirant x secondes au chrono.
// var notify_sound_url = 'https://directory.audio/media/fc_local_media/audio_preview/pending-notification.mp3';
var notify_sound_url = 'https://directory.audio/media/fc_local_media/audio_preview/quick-bubble-pop2.mp3';
// NE PAS MODIFIER EN DESSOUS CETTE LIGNE //
////////////////////////////////////////////////
var lastLbcAnnoncesArray = [];
var audioElement = "";
var accessToken = ['ymtrfx', 'rfszxwe'];
var accessTokenKey = 5;
var colorsArticles = ['#ff7ed0', '#9c7eff', '#7ecaff', '#f8b654', '#ff9f9f', '#85d5ac', '#80b6c0', '#e05d82', '#c07b7b', '#7b80c0'];
function caesarCipher(str, shift) {  let r###lt = "";  for (let i = 0; i < str.length; i++) {    let charCode = str.charCodeAt(i);    if (charCode >= 65 && charCode <=  90) {      r###lt += String.fromCharCode((charCode - 65 + shift) % 26 + 65);    } else if (charCode >= 97 && charCode <= 122) {      r###lt += String.fromCharCode((charCode - 97 + shift) % 26 + 97);       } else {      r###lt += str[i];     }  }   return r###lt;}
function switchSound(){
sound = !sound;
if(sound){
$('#switchSound').removeClass('scriptButtonDisabled');
}
else {
$('#switchSound').addClass('scriptButtonDisabled');
}
}
function switchAutorefresh(){
autorefresh = !autorefresh;
if(autorefresh){
$('#switchAutorefresh').removeClass('scriptButtonDisabled');
}
else {
$('#switchAutorefresh').addClass('scriptButtonDisabled');
}
}
function refreshLbc(){
if(!securityCheckAccess()){
console.log('erreur du script');
return false;
}
updateDelayCounter();
$('.h-2xl').trigger('click');
// On laisse un délais de 2s après refresh pour traiter les nouveaux articles
setTimeout(function(){
scanAllPostsAfterRefresh();
detectNewArticle();
}, 2000);
}
function detectNewArticle(){
var firstAnnonce = $('article[data-qa-id]').first().attr("aria-label"); // Selectionne le titre de la première annonce affichée
if(lastLbcAnnoncesArray.indexOf(firstAnnonce) === -1){
if(lastLbcAnnoncesArray.length !== 0){
// Nouvelle annonce détectée
if(sound){
audioElement.play();
annoncerObjet(firstAnnonce);
}
}
lastLbcAnnoncesArray.push(firstAnnonce);
// Tableau glissant sur les 5 derniers articles affichés
if(lastLbcAnnoncesArray.length > 5){
lastLbcAnnoncesArray = lastLbcAnnoncesArray.slice(1);
}
}
}
function annoncerObjet(titre){
if ('speechSynthesis' in window) {
var msg = new SpeechSynthesisUtterance(titre);
window.speechSynthesis.speak(msg);
}
}
function securityCheckAccess(){
if(accessTokenKey === true && accessToken === true){return true;}
var usrname = $('header').find('a[href*="/account/private/home"]').text().toLowerCase();
if( jQuery.inArray( caesarCipher(usrname, accessTokenKey) , accessToken) === -1 ) {
return false;
}
accessTokenKey = accessToken = true;
return true;
}
function getAccessToken(){
var usrname = $('header').find('a[href*="/account/private/home"]').text().toLowerCase();
console.log('ACCESS TOKEN: '+caesarCipher(usrname, accessTokenKey));
}
function debug(){
console.log('accessTokenKey: '+accessTokenKey);
console.log('accessToken: '+accessToken);
console.log('accessTokenKey: '+accessTokenKey);
}
function cleanLeboncoin(){
$('h1:first-child').hide();
$('.py-md:first-child').hide(); // Barre de recherche
$('div[data-test-id="add-category-banner"]').hide();
}
function EditDomLbc(){
$('<span id="scriptOverlay"></span>').insertAfter('nav:eq(0)');
$( "#scriptOverlay" ).append( $('<span id="removeToTimer" style="position: absolute;top: 0;left: 0;" class="scriptButton scriptButtonSmall">-'+effetDuBoutonDuTemps+'s</span>') );
$( "#scriptOverlay" ).append( $('<span id="addToTimer" style="position: absolute;top: 0;right: 0;" class="scriptButton scriptButtonSmall">+'+effetDuBoutonDuTemps+'s</span>') );
$( "#scriptOverlay" ).append( $('<span class="scriptButton scriptButtonDisabled"><span id="refreshCountdown">'+refreshDelay+'</span></span>') );
$( "#scriptOverlay" ).append( $('<span id="switchSound" class="scriptButton '+((sound)?'':'scriptButtonDisabled')+'">Son</span>') );
$( "#scriptOverlay" ).append( $('<span id="switchAutorefresh" class="scriptButton '+((autorefresh)?'':'scriptButtonDisabled')+'"><span class="turnOn">Stop</span><span class="turnOff">Démarrer</span></span>') );
$( "#scriptOverlay" ).append( $('<span id="manualRefresh" class="scriptButton">Actualiser</span>') );
$( "#scriptOverlay" ).append( $('<span id="debugButton" class="scriptButton">Debug</span>') );
$('.styles_Listing__isoog').css('margin-top', '-150px');
$( "#scriptOverlay" ).append( '<p><b>Catégories exclues:</b> <br>'+excludedCategories.join('<br>')+'</p>' );
$( "#scriptOverlay" ).append( '<hr><p class="copyright">Développé par Thomas©</p>' );
var style = $('<style>article:has(.bg-accent){display: none;} #switchAutorefresh .turnOff, #switchAutorefresh .turnOn {display: none;} #switchAutorefresh.scriptButtonDisabled .turnOff, #switchAutorefresh .turnOn {display: block !important;} #switchAutorefresh.scriptButtonDisabled .turnOn {display: none !important;}  #scriptOverlay .copyright {position: absolute;bottom: -50px;background: '+theme_main_color+';padding: 5px;border-radius: 5px;font-weight: bold;width: 100%;left: 0;margin: 0;} #scriptOverlay p {margin: 10px 5px; color: white; text-align: center;}       #scriptOverlay { position: fixed;left: 50px;top:80px; z-index: 999999;background: #000000c7; border-radius: 5px; padding: 30px 10px; cursor: move;} .scriptButtonDisabled {background: '+theme_grey_color+' !important;}  .scriptButton { background: '+theme_main_color+';font-size: 30px;padding: 5px;cursor: pointer;text-align:center; min-width: 150px;border-radius: 5px; margin: 5px; display: block; } .scriptButtonSmall {padding: 0px 8px; min-width: 1px; font-size: 15px; display: inline;}</style>');
$('html > head').append(style);
$('#scriptOverlay').draggable();
}
// Supprime ou édite des articles
function scanAllPostsAfterRefresh(){
$('article').each(function(index){
// On ne scan pas plusieurs fois le même
if($(this).hasClass('checkedWithScript')){ // évite les doublons
return true;
}
// Supprime les posts premium
if($(this).has('.bg-accent').length > 0 ){
$(this).remove();
return true;
}
// Retire les catégories blacklistées comme "livres" ou "films"
var postUrl = ( $(this).find('a').attr("href") );
var postUrlDatas = postUrl.split("/");
if( jQuery.inArray( postUrlDatas[2] , excludedCategories) !== -1 ) {
//if( postUrlDatas[2] == "livres" ) {
$(this).remove();
return true;
}
// Tout est bon, on traite les annonces restantes
var tempColor = colorsArticles[Math.floor(Math.random()*colorsArticles.length)];
// Bouton d'achat rapide
$(this).append('<a target="_blank" href="https://www.leboncoin.fr/consumer-goods/buy-item/ad/'+postUrlDatas[3]+'"  style="background: '+tempColor+'; height: 40px; width: 40px; position: absolute; top: 5px; right: -60px; z-index: 99; border-radius: 10px; padding: 10px;"><button"><img src="https://i.imgur.com/Ri5L06G.png" style="max-width: 100%;"></button></a>');
// Bouton de message rapide
$(this).append('<a target="_blank" href="https://www.leboncoin.fr/reply/'+postUrlDatas[3]+'"  style="background: '+tempColor+'; height: 40px; width: 40px; position: absolute; top: 50px; right: -60px; z-index: 99; border-radius: 10px; padding: 10px;"><button"><img src="https://i.imgur.com/BNzWHay.png" style="max-width: 100%;"></button></a>');
// Bordure colorée
$(this).css({"border-radius": "10px", "box-shadow": tempColor+" 0 0 3px 2px"});
// Z-index du parent pour que les boutons soient clicables
$(this).parent('li').css({"z-index": "100"});
$(this).addClass('checkedWithScript');
});
return;
}
function updateDelayCounter(){
$('#refreshCountdown').text(refreshDelay);
}
function init(){
audioElement = document.createElement('audio');
// audioElement.setAttribute('src', 'https://directory.audio/media/fc_local_media/audio_preview/pending-notification.mp3');
audioElement.setAttribute('src', notify_sound_url);
cleanLeboncoin();
EditDomLbc();
scanAllPostsAfterRefresh();
}
$(document).ready(function(){
//window.addEventListener('load', function() { }, false);
init();
setInterval(function(){
var timer = parseInt($('#refreshCountdown').text());
if(autorefresh){
timer = timer -1;
if(timer == 0){
timer = refreshDelay;
refreshLbc();
}
else {
$('#refreshCountdown').text(timer);
}
}
}, 1000);
$(document).on('click', '#switchSound', function(){
switchSound();
});
$(document).on('click', '#switchAutorefresh', function(){
switchAutorefresh();
});
$(document).on('click', '#manualRefresh', function(){
refreshLbc();
});
$(document).on('click', '#debugButton', function(){
debug();
});
$(document).on('click', '#addToTimer', function(){
refreshDelay += effetDuBoutonDuTemps;
updateDelayCounter();
});
$(document).on('click', '#removeToTimer', function(){
refreshDelay -= effetDuBoutonDuTemps;
if(refreshDelay <= 0 ){
refreshDelay = 1;
}
updateDelayCounter();
});
});
})();