NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Sorties OVS filtrees en fonction de l'age des organisateurs // @updateURL https://openuserjs.org/meta/schnourtz/Sorties_OVS_filtrees_en_fonction_de_lage_des_organisateurs.meta.js // @license MIT // @copyright 2018, schnourtz (https://openuserjs.org/users/schnourtz) // @date March 09, 2018 // @author Tashido // @version 2.0 // @description Supprimer les sorties OVS organisees en fonction de l'age des organisateurs // @include https://*.onvasortir.com/vue_sortie* // @include https://*.onvasortir.com/vue_infos.php // @matches https://*.onvasortir.com/vue_sortie* // @matches https://*.onvasortir.com/vue_infos.php // @run_at document_end // ==/UserScript== //redefinition des methodes pour chrome (partie de code touve sur le web) if (typeof GM_deleteValue == 'undefined') { GM_getValue = function (name, defaultValue) { var value = localStorage.getItem(name); if (!value) return defaultValue; var type = value[0]; value = value.substring(1); switch (type) { case 'b': return value == 'true'; case 'n': return Number(value); default: return value; } } GM_setValue = function (name, value) { value = (typeof value)[0] + value; localStorage.setItem(name, value); } } //la variable bouton recupere l'element bouton qui contient le bouton "Recherche avancée >>" ou "Deviens Membre PREMIUM >>" selon la page var bouton = document.querySelector('input[value="Recherche avancée >>"]'); if (document.location.href.match('https://.*\.onvasortir\.com/vue_infos.*')) bouton = document.querySelector('input[value="Deviens Membre PREMIUM >>"]'); if (document.location.href.match('https://.*\.onvasortir\.com/vue_sortie_all.*')) bouton = document.querySelector('input[value="Recherche avancée »"]'); if (document.location.href.match('https://.*\.onvasortir\.com/vue_sortie_day.*')) bouton = document.querySelector('input[value="Recherche avancée >>"]'); //alert("Debug: "+bouton.parentNode.innerHTML); //la variable ageSelect1 contient un element liste deroulante pour l'age minimal de notre filtre //la variable ageSelect2 contient un element liste deroulante pour l'age maximal de notre filtre var ageSelect1 = document.createElement('select'), ageSelect2 = document.createElement('select'); //on remplie nos deux listes deroulantes, et on les force sur les valeurs precedemment sauvegardes for (var i = 17; i < 100; i++) { if (i == GM_getValue("ageMin", 17)) ageSelect1.innerHTML += '<option value="' + i + '" selected>De ' + i + ' ans </option>'; else ageSelect1.innerHTML += '<option value="' + i + '">De ' + i + ' ans </option>'; if (i == GM_getValue("ageMax", 99)) ageSelect2.innerHTML += '<option value="' + i + '" selected>à ' + i + ' ans</option>'; else ageSelect2.innerHTML += '<option value="' + i + '">à ' + i + ' ans</option>'; } //on rajoute nos deux listes deroulantes a la page web avant le bouton bouton.parentNode.appendChild(ageSelect1); bouton.parentNode.appendChild(ageSelect2); bouton.parentNode.insertBefore(ageSelect1, bouton); bouton.parentNode.insertBefore(ageSelect2, bouton); //on attribue a nos deux listes deroulantes des actions lorsqu'on leurs selectionne une valeur; sauvegarder nouvelle valeur et rechanger la page si le filtre est actif ageSelect1.addEventListener('change', function () { GM_setValue("ageMin", ageSelect1.options[ageSelect1.selectedIndex].getAttribute('value')); if (GM_getValue("etat", false) == true) document.location.reload(); }, false); ageSelect2.addEventListener('change', function () { GM_setValue("ageMax", ageSelect2.options[ageSelect2.selectedIndex].getAttribute('value')); if (GM_getValue("etat", false) == true) document.location.reload(); }, false); //on cree un nouveau bouton var nouveauBouton = document.createElement('input'); nouveauBouton.setAttribute('type', 'button'); nouveauBouton.setAttribute('value', 'Activé'); //on attribu a notre bouton une action lorsque l'on clique dessus nouveauBouton.addEventListener("click", clickButton, false); //on remplace l'ancien bouton par le notre bouton.parentNode.replaceChild(nouveauBouton, bouton); //si le filtre est precedemment active et si l'intervale des ages est correct, alors on filtre directement, sinon non if (GM_getValue("etat", false) == true && GM_getValue("ageMin", 17) < GM_getValue("ageMax", 99)) { run(); nouveauBouton.setAttribute('value', 'Filtre Activé'); } else { nouveauBouton.setAttribute('value', 'Filtre Non Activé'); } //fonction lorsque l'on click sur le bouton function clickButton() { //si l'on n'a pas active le script precedemment et l'intervale des ages est correct, on l'active et on enregistre son etat, sinon on le desactive et on recharge la page if (GM_getValue("etat", false) == false && GM_getValue("ageMin", 17) < GM_getValue("ageMax", 99)) { //on sauvegarde le nouvelle etat de filtrage GM_setValue("etat", true); //on lance notre filtre run(); //on met a jour le texte du bouton nouveauBouton.setAttribute('value', 'Filtre Activé'); alert('Execution du script "Sorties OVS filtrees en fonction de l\'age des organisateurs"\n\nVous allez filter maintenant les sorties des organisateurs dont l\'age est entre ' + GM_getValue("ageMin", 17) + ' ans et ' + GM_getValue("ageMax", 99) + ' ans\n\n\n\nAuteur: BlazingSun (utilisateur OVS Paris)\nPS: Si vous trouvez ce script utile et vous souhaitez remercier pour son travail bénévole son auteur, envoyez-lui un petit message sympa de remerciement sur le site ou payez-lui un coup à boire si vous le rencontrez ;-)\n\nLicence: Copyleft GPLv2'); } else { //on sauvegarde le nouvelle etat de filtrage GM_setValue("etat", false); //on recharge la page document.location.reload(); } } //on execute le filtrage si il a ete active function run() { if (!document.location.href.match('https://.*\.onvasortir\.com/vue_sortie_all.*')) { //la variable toutesLesSorties recupere tous les indentifacateurs de sorties var toutesLesSorties = document.querySelectorAll('tr td[style] table tr td img[src^="sortie_"]'); //alert("Debug: "+toutesLesSorties[0].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.querySelector('a[onmouseover]').getAttribute('onmouseover')); //on parcout tous les sorties une a une for (var i = 0; i < toutesLesSorties.length; i++) { //la variable sortie recupere en fonction d'un indentifacateur de sorties toutes les informations sur la sortie var sortie = toutesLesSorties[i].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode; //alert("Debug: "+sortie.innerHTML); //si le compte de l'organisateur a ete supprime, on supprime la sortie et on passe a la suivante if (!sortie.querySelector('a[onmouseover]')) { sortie.parentNode.removeChild(sortie); continue; } //la variable donneesOrganisateur recupere les informations sur l'organisateur de la sortie var donneesOrganisateur = sortie.querySelector('a[onmouseover]').getAttribute('onmouseover'); //alert("Debug: "+donneesOrganisateur); //on verifie si l'organisateur a indique son age, sinon on supprime sa sortie de la pageOrganisateur web if (donneesOrganisateur.indexOf(' ans') > -1) { //la variable ageOrganisateur recupere l'age de l'organisateur de la sortie var ageOrganisateur = donneesOrganisateur.substring(donneesOrganisateur.indexOf(' ans<') - 2, donneesOrganisateur.indexOf(' ans<')); //alert("Debug: "+ageOrganisateur); //si l'organisateur de la sortie a plus de l'age max, on supprime sa sortie de la page web if (ageOrganisateur > GM_getValue("ageMax", 99)) { sortie.parentNode.removeChild(sortie); //alert("Debug: "+sortie.innerHTML); } //si l'organisateur de la sortie a moins de l'age min, on supprime sa sortie de la page web if (ageOrganisateur < GM_getValue("ageMin", 17)) { sortie.parentNode.removeChild(sortie); //alert("Debug: "+sortie.innerHTML); } } else { //l'organisateur m'a pas indique son age, on supprime sa sortie de la page web sortie.parentNode.removeChild(sortie); //alert("Debug: "+sortie.innerHTML); } } } else { //la variable toutesLesSorties recupere tous les indentifacateurs de sorties var toutesLesSorties = document.querySelectorAll('div[class=Event_Line]'); //alert("Debug: "+toutesLesSortiestoutesLesSorties.item(0)); //on parcout tous les sorties une a une for (var i = 1; i < toutesLesSorties.length; i++) { //la variable sortie recupere en fonction d'un indentifacateur de sorties toutes les informations sur la sortie var sortie = toutesLesSorties.item(i); //alert("Debug: "+sortie.querySelector('div[class=Event_Orga]')); //si le compte de l'organisateur a ete supprime, on supprime la sortie et on passe a la suivante if (!sortie.querySelector('a[onmouseover]')) { sortie.parentNode.removeChild(sortie); continue; } //la variable donneesOrganisateur recupere les informations sur l'organisateur de la sortie var donneesOrganisateur = sortie.querySelector('div[class=Event_Orga]').textContent; //alert("Debug: "+donneesOrganisateur); //on verifie si l'organisateur a indique son age, sinon on supprime sa sortie de la pageOrganisateur web if (donneesOrganisateur.indexOf(' ans') > -1) { //la variable ageOrganisateur recupere l'age de l'organisateur de la sortie var ageOrganisateur = donneesOrganisateur.substring(donneesOrganisateur.indexOf(' ans') - 2, donneesOrganisateur.indexOf(' ans')); //alert("Debug: "+ageOrganisateur); //si l'organisateur de la sortie a plus de l'age max, on supprime sa sortie de la page web if (ageOrganisateur > GM_getValue("ageMax", 99)) { sortie.parentNode.removeChild(sortie); //alert("Debug: "+sortie.innerHTML); } //si l'organisateur de la sortie a moins de l'age min, on supprime sa sortie de la page web if (ageOrganisateur < GM_getValue("ageMin", 17)) { sortie.parentNode.removeChild(sortie); //alert("Debug: "+sortie.innerHTML); } } else { //l'organisateur m'a pas indique son age, on supprime sa sortie de la page web sortie.parentNode.removeChild(sortie); //alert("Debug: "+sortie.innerHTML); } } } }