您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Supprimer les sorties OVS organisees en fonction de l'age des organisateurs
// ==UserScript== // @name Sorties OVS filtrees en fonction de l'age des organisateurs (NANTES) // @date May 16, 2014 // @author Yohann nizon -> https://www.gameandme.fr // @description Supprimer les sorties OVS organisees en fonction de l'age des organisateurs // @include http://*.onvasortir.com/vue_sortie* // @include http://*.onvasortir.com/vue_infos.php // @version 1.0 // @matches http://*.onvasortir.com/vue_sortie* // @matches http://*.onvasortir.com/vue_infos.php // @run_at document_end // @namespace https://greasyfork.org/users/63143 // ==/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 == 'http://paris.onvasortir.com/vue_infos.php') bouton=document.querySelector('input[value="Deviens Membre PREMIUM >>"]'); //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() { //la variable toutesLesSorties recupere tous les indentifacateurs de sorties var toutesLesSorties = document.querySelectorAll('div[class="Event_Line"]'); //alert("Debug: "+toutesLesSorties[0].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.querySelector('a[onmouseover]').getAttribute('onmouseover')); //on parcout tous les sorties une a une //alert(toutesLesSorties.length); 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]; //alert("Debug: "+sortie.innerHTML); //la variable donneesOrganisateur recupere les informations sur l'organisateur de la sortie var donneesOrganisateur = sortie.querySelector('div[class="Event_Orga"]'); if (donneesOrganisateur != null){ //si le compte de l'organisateur a ete supprime, on supprime la sortie et on passe a la suivante var span = donneesOrganisateur.querySelector('span'); donneesOrganisateur = $(donneesOrganisateur).text(); //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')); //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); } } } }