Advertisement
Guest User

Untitled

a guest
Jan 27th, 2018
459
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.05 KB | None | 0 0
  1. // ==UserScript==
  2. // @name AveNoel
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description try to take over the world!
  6. // @author You
  7. // @match https://avenoel.org/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. var banList = [
  12. {name:"banList1", rank:"0"},
  13. {name:"banList2", rank:"1"},
  14. {name:"banList3", rank:"2"}
  15. ];
  16.  
  17. var surlignes = [
  18. {name:"loveList1", color:"lightgreen"},
  19. {name:"loveList2", color:"lightgreen"}
  20. ];
  21.  
  22. var favs;
  23. var bans;
  24. const url = "https://avenoel.org";
  25.  
  26. (function() {
  27. 'use strict';
  28.  
  29. //debugger;
  30. //localStorage.removeItem("favs");
  31. //localStorage.removeItem("bans");
  32.  
  33. initCache();
  34.  
  35. var path = window.location.pathname;
  36.  
  37. if (path.startsWith('/forum')) {
  38. traiterForum();
  39. } else if (path.startsWith('/topic')) {
  40. traiterTopic();
  41. }
  42.  
  43. ajouterBarFav();
  44.  
  45. })();
  46.  
  47. function initCache() {
  48. favs = localStorage.favs === undefined ? [] : JSON.parse(localStorage.favs);
  49. bans = localStorage.bans === undefined ? [] : JSON.parse(localStorage.bans);
  50. }
  51.  
  52. function ajouterBarFav() {
  53. var barFav = document.getElementsByClassName("col-md-3 col-sm-12 col-xs-12 pull-right hidden-sm hidden-xs");
  54. var innerHTML = "<section><div>Favoris</div>";
  55.  
  56. for(var i = 0; i < favs.length; ++i) {
  57. var favIn = "";
  58. favs[i].split("-").splice(2).forEach(function(split) {
  59. favIn += split + " ";
  60. });
  61. innerHTML += "<li><a href=\"" + favs[i] + "\">" + favIn + "</a></li>";
  62. }
  63.  
  64. innerHTML += "</section>";
  65. barFav[0].children[1].innerHTML = innerHTML;
  66. }
  67.  
  68. //-----------------------------------------------------
  69. // Topic
  70. //-----------------------------------------------------
  71.  
  72. function traiterTopic() {
  73. var lstTopic = document.getElementsByClassName("topic-messages");
  74. var trsTopic = lstTopic[0].children;
  75. for(var iTopic = 0; iTopic < trsTopic.length; ++iTopic) {
  76. traiterTrTopic(trsTopic[iTopic]);
  77. }
  78.  
  79. traiterNavBarTopic();
  80. }
  81.  
  82.  
  83. function traiterNavBarTopic() {
  84.  
  85. // Bouton des favoris
  86. var buttonFav = addButtonToNavBar("buttonFav");
  87. var isInFav = contentsString(favs, getPath()) != -1;
  88. if (isInFav) {
  89. buttonFav.innerHTML = "- FAVORIS";
  90. buttonFav.onclick = function() {
  91. deleteFromCache(favs, "favs");
  92. };
  93. } else {
  94. buttonFav.innerHTML = "+ FAVORIS";
  95. buttonFav.onclick = function() {
  96. addInCache(favs, "favs");
  97. };
  98. }
  99.  
  100. if (false) {
  101. // Bouton des bans
  102. var buttonBan = addButtonToNavBar("buttonBan");
  103. var isInBan = contentsString(bans, getPath()) != -1;
  104. if (isInBan) {
  105. buttonBan.innerHTML = "DEBAN";
  106. buttonBan.onclick = function() {
  107. deleteFromCache(bans, "bans");
  108. };
  109. } else {
  110. buttonBan.innerHTML = "BAN";
  111. buttonBan.onclick = function() {
  112. addInCache(bans, "bans");
  113. };
  114. }
  115. }
  116.  
  117. }
  118.  
  119. function addInCache(cacheList, cacheName) {
  120. cacheList.push(getPath());
  121. localStorage.setItem(cacheName, JSON.stringify(cacheList));
  122. ajouterBarFav();
  123. traiterNavBarTopic();
  124. }
  125.  
  126. function deleteFromCache(cacheList, cacheName) {
  127.  
  128. var i = contentsString(cacheList, getPath());
  129. if (i !== -1) {
  130. cacheList.splice(i, 1);
  131. localStorage.setItem(cacheName, JSON.stringify(cacheList));
  132. }
  133.  
  134. ajouterBarFav();
  135. traiterNavBarTopic();
  136. }
  137.  
  138. function traiterTrTopic(tr) {
  139.  
  140. // Suppression des FDP
  141. banList.forEach(function(connard) {
  142.  
  143. var message = null;
  144. if (hasProfilLink(tr, connard.name)) {
  145. message = "Réponse sur "+ connard.name;
  146. }
  147. if (hasProfilAvatar(tr, connard.name)) {
  148. message = "Message de "+ connard.name;
  149. }
  150.  
  151. if (message !== null) {
  152. console.log(message);
  153.  
  154. if (connard.rank == 1) {
  155. tr.innerHTML = message;
  156. } else if (connard.rank == 2) {
  157. tr.innerHTML =
  158. "<div class=\"spoiler\">"+ message +
  159. " <span class=\"spoiler-btn\">[Afficher]</span>"+
  160. " <div class=\"spoiler-content\" style=\"display: none;\"> "+ tr.innerHTML + "</div>"+
  161. "</div>";
  162. }
  163.  
  164. return;
  165. }
  166. });
  167. }
  168.  
  169. //-----------------------------------------------------
  170. // Forum
  171. //-----------------------------------------------------
  172.  
  173.  
  174. function traiterForum() {
  175. var lst = document.getElementsByClassName("table table-striped topics");
  176. var trs = lst[0].children[1].children;
  177. for(var i = 0; i < trs.length; ++i) {
  178. traiterTrForum(trs[i]);
  179. }
  180. }
  181.  
  182. function traiterTrForum(tr) {
  183.  
  184. // Suppression des caracteres ching chong
  185. if (tr.innerText.match(/[\u3400-\u9FBF]/)) {
  186. console.log("Suppression des caracteres ching chong");
  187. tr.innerHTML = "";
  188. return;
  189. }
  190.  
  191. // Suppression des FDP
  192. banList.forEach(function(connard) {
  193. if (hasProfilLink(tr, connard.name)) {
  194. console.log("Suppression du FDP : " + connard.name);
  195. tr.innerHTML = "";
  196. return;
  197. }
  198. });
  199.  
  200. bans.forEach(function(url) {
  201. if (hasUrl(tr, url)) {
  202. console.log("Suppression du sujet : " + url);
  203. tr.innerHTML = "";
  204. return;
  205. }
  206. });
  207.  
  208. // Surlignage
  209. surlignes.forEach(function(surligne) {
  210. if (hasProfilLink(tr, surligne.name)) {
  211. console.log("Surlignage : " + surligne.name);
  212. tr.style.background = surligne.color;
  213. return;
  214. }
  215. });
  216.  
  217. }
  218.  
  219. //-----------------------------------------------------
  220. // Utils
  221. //-----------------------------------------------------
  222.  
  223. function contentsString(list, string) {
  224. for(var i = 0; i < list.length; ++i) {
  225. if (list[i] === string) {
  226. return i;
  227. }
  228. }
  229. return -1;
  230. }
  231.  
  232. function getPath() {
  233. return url + window.location.pathname;
  234. }
  235.  
  236. function designTopButton(button) {
  237. button.style.color = "white";
  238. button.style.backgroundColor = "transparent";
  239. button.style.border = "none";
  240. }
  241.  
  242. function hasProfilLink(elem, name) {
  243. return elem.innerHTML.indexOf("https://avenoel.org/profil/" + name + "\"") !== -1;
  244. }
  245.  
  246. function hasProfilAvatar(elem, name) {
  247. return elem.innerHTML.indexOf("alt=\"Avatar de "+ name + "\"") !== -1;
  248. }
  249.  
  250. function hasUrl(elem, url) {
  251. return elem.innerHTML.indexOf("<a href=\"" + url + "\">") !== -1;
  252. }
  253.  
  254. function addButtonToNavBar(name) {
  255. var button = document.getElementById(name);
  256. if (button === null) {
  257. var navbar = document.getElementsByClassName("nav navbar-nav navbar-links");
  258. navbar[0].innerHTML += "<li class=\"\"><a><button id=\"" + name + "\" ></button></a></li>";
  259. button = document.getElementById(name);
  260. designTopButton(button);
  261. }
  262. return button;
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement