Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name AveNoel
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description try to take over the world!
- // @author You
- // @match https://avenoel.org/*
- // @grant none
- // ==/UserScript==
- var banList = [
- {name:"banList1", rank:"0"},
- {name:"banList2", rank:"1"},
- {name:"banList3", rank:"2"}
- ];
- var surlignes = [
- {name:"loveList1", color:"lightgreen"},
- {name:"loveList2", color:"lightgreen"}
- ];
- var favs;
- var bans;
- const url = "https://avenoel.org";
- (function() {
- 'use strict';
- //debugger;
- //localStorage.removeItem("favs");
- //localStorage.removeItem("bans");
- initCache();
- var path = window.location.pathname;
- if (path.startsWith('/forum')) {
- traiterForum();
- } else if (path.startsWith('/topic')) {
- traiterTopic();
- }
- ajouterBarFav();
- })();
- function initCache() {
- favs = localStorage.favs === undefined ? [] : JSON.parse(localStorage.favs);
- bans = localStorage.bans === undefined ? [] : JSON.parse(localStorage.bans);
- }
- function ajouterBarFav() {
- var barFav = document.getElementsByClassName("col-md-3 col-sm-12 col-xs-12 pull-right hidden-sm hidden-xs");
- var innerHTML = "<section><div>Favoris</div>";
- for(var i = 0; i < favs.length; ++i) {
- var favIn = "";
- favs[i].split("-").splice(2).forEach(function(split) {
- favIn += split + " ";
- });
- innerHTML += "<li><a href=\"" + favs[i] + "\">" + favIn + "</a></li>";
- }
- innerHTML += "</section>";
- barFav[0].children[1].innerHTML = innerHTML;
- }
- //-----------------------------------------------------
- // Topic
- //-----------------------------------------------------
- function traiterTopic() {
- var lstTopic = document.getElementsByClassName("topic-messages");
- var trsTopic = lstTopic[0].children;
- for(var iTopic = 0; iTopic < trsTopic.length; ++iTopic) {
- traiterTrTopic(trsTopic[iTopic]);
- }
- traiterNavBarTopic();
- }
- function traiterNavBarTopic() {
- var relativePath = "";
- getPath().split("-").splice(2).forEach(function(split) {
- relativePath += split + "-";
- });
- relativePath = relativePath.slice(0, -1);
- var buttons = addButtonToNavBar(["buttonFav", "buttonBan"]);
- var buttonFav = buttons[0];
- var buttonBan = buttons[1];
- // Bouton des favoris
- var isInFav = contentsString(favs, relativePath) != -1;
- if (isInFav) {
- buttonFav.innerHTML = "- FAVORIS";
- buttonFav.onclick = function() {
- deleteFromCache(favs, "favs");
- };
- } else {
- buttonFav.innerHTML = "+ FAVORIS";
- buttonFav.onclick = function() {
- addInCache(favs, "favs");
- };
- }
- // Bouton des bans
- var isInBan = contentsString(bans, relativePath) != -1;
- if (isInBan) {
- buttonBan.innerHTML = "DEBAN";
- buttonBan.onclick = function() {
- deleteFromCache(bans, "bans");
- };
- } else {
- buttonBan.innerHTML = "BAN";
- buttonBan.onclick = function() {
- addInCache(bans, "bans");
- };
- }
- }
- function addInCache(cacheList, cacheName) {
- console.log("addInCache : " + cacheName);
- cacheList.push(getPath());
- localStorage.setItem(cacheName, JSON.stringify(cacheList));
- ajouterBarFav();
- traiterNavBarTopic();
- }
- function deleteFromCache(cacheList, cacheName) {
- console.log("deleteFromCache : " + cacheName);
- var relativePath = "";
- getPath().split("-").splice(2).forEach(function(split) {
- relativePath += split + "-";
- });
- relativePath = relativePath.slice(0, -1);
- var i = contentsString(cacheList, relativePath);
- if (i !== -1) {
- cacheList.splice(i, 1);
- localStorage.setItem(cacheName, JSON.stringify(cacheList));
- }
- ajouterBarFav();
- traiterNavBarTopic();
- }
- function traiterTrTopic(tr) {
- // Suppression des FDP
- banList.forEach(function(connard) {
- var message = null;
- if (hasProfilLink(tr, connard.name)) {
- message = "Réponse sur "+ connard.name;
- }
- if (hasProfilAvatar(tr, connard.name)) {
- message = "Message de "+ connard.name;
- }
- if (message !== null) {
- console.log(message);
- if (connard.rank == 1) {
- tr.innerHTML = message;
- } else if (connard.rank == 2) {
- tr.innerHTML =
- "<div class=\"spoiler\">"+ message +
- " <span class=\"spoiler-btn\">[Afficher]</span>"+
- " <div class=\"spoiler-content\" style=\"display: none;\"> "+ tr.innerHTML + "</div>"+
- "</div>";
- }
- return;
- }
- });
- }
- //-----------------------------------------------------
- // Forum
- //-----------------------------------------------------
- function traiterForum() {
- var lst = document.getElementsByClassName("table table-striped topics");
- var trs = lst[0].children[1].children;
- for(var i = 0; i < trs.length; ++i) {
- traiterTrForum(trs[i]);
- }
- }
- function traiterTrForum(tr) {
- // Suppression des caracteres ching chong
- if (tr.innerText.match(/[\u3400-\u9FBF]/)) {
- console.log("Suppression des caracteres ching chong");
- tr.innerHTML = "";
- return;
- }
- // Suppression des FDP
- banList.forEach(function(connard) {
- if (hasProfilLink(tr, connard.name)) {
- console.log("Suppression du FDP : " + connard.name);
- tr.innerHTML = "";
- return;
- }
- });
- bans.forEach(function(url) {
- if (hasUrl(tr, url)) {
- console.log("Suppression du sujet : " + url);
- tr.innerHTML = "";
- return;
- }
- });
- // Surlignage
- surlignes.forEach(function(surligne) {
- if (hasProfilLink(tr, surligne.name)) {
- console.log("Surlignage : " + surligne.name);
- tr.style.background = surligne.color;
- return;
- }
- });
- }
- //-----------------------------------------------------
- // Utils
- //-----------------------------------------------------
- function contentsString(list, match) {
- for(var i = 0; i < list.length; ++i) {
- if (stringContents(list[i], match)) {
- return i;
- }
- }
- return -1;
- }
- function getPath() {
- return url + window.location.pathname;
- }
- function designTopButton(button) {
- button.style.color = "white";
- button.style.backgroundColor = "transparent";
- button.style.border = "none";
- }
- function hasProfilLink(elem, name) {
- return stringContents(elem.innerHTML, "https://avenoel.org/profil/" + name + "\"");
- }
- function hasProfilAvatar(elem, name) {
- return stringContents(elem.innerHTML, "alt=\"Avatar de "+ name + "\"");
- }
- function hasUrl(elem, url) {
- return stringContents(elem.innerHTML, "<a href=\"" + url + "\">");
- }
- function stringContents(string, match) {
- return string.indexOf(match) !== -1;
- }
- function addButtonToNavBar(names) {
- var buttons = [];
- if (document.getElementById(names[0]) === null) {
- var navbar = document.getElementsByClassName("nav navbar-nav navbar-links");
- var innerHTML = "";
- names.forEach(function(name) {
- innerHTML += "<li class=\"\"><a><button id=\"" + name + "\" ></button></a></li>";
- });
- navbar[0].innerHTML += innerHTML;
- names.forEach(function(name) {
- //button = document.getElementById(name);
- designTopButton(document.getElementById(name));
- });
- }
- names.forEach(function(name) {
- buttons.push(document.getElementById(name));
- });
- return buttons;
- }
- //-----------------------------------------------------
- // Patch
- //-----------------------------------------------------
- //
- // 1.0.1 : add url pastebin
- // + correction du bug des bans de topics
- // + detection du favoris/ban à chaque page du topic
- // 1.0.0 : https://pastebin.com/bjVmYYgM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement