Advertisement
Guest User

Untitled

a guest
Jan 27th, 2018
618
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.19 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. var relativePath = "";
  86. getPath().split("-").splice(2).forEach(function(split) {
  87. relativePath += split + "-";
  88. });
  89. relativePath = relativePath.slice(0, -1);
  90.  
  91. var buttons = addButtonToNavBar(["buttonFav", "buttonBan"]);
  92. var buttonFav = buttons[0];
  93. var buttonBan = buttons[1];
  94.  
  95. // Bouton des favoris
  96. var isInFav = contentsString(favs, relativePath) != -1;
  97. if (isInFav) {
  98. buttonFav.innerHTML = "- FAVORIS";
  99. buttonFav.onclick = function() {
  100. deleteFromCache(favs, "favs");
  101. };
  102. } else {
  103. buttonFav.innerHTML = "+ FAVORIS";
  104. buttonFav.onclick = function() {
  105. addInCache(favs, "favs");
  106. };
  107. }
  108.  
  109. // Bouton des bans
  110. var isInBan = contentsString(bans, relativePath) != -1;
  111. if (isInBan) {
  112. buttonBan.innerHTML = "DEBAN";
  113. buttonBan.onclick = function() {
  114. deleteFromCache(bans, "bans");
  115. };
  116. } else {
  117. buttonBan.innerHTML = "BAN";
  118. buttonBan.onclick = function() {
  119. addInCache(bans, "bans");
  120. };
  121. }
  122.  
  123. }
  124.  
  125. function addInCache(cacheList, cacheName) {
  126. console.log("addInCache : " + cacheName);
  127. cacheList.push(getPath());
  128. localStorage.setItem(cacheName, JSON.stringify(cacheList));
  129. ajouterBarFav();
  130. traiterNavBarTopic();
  131. }
  132.  
  133. function deleteFromCache(cacheList, cacheName) {
  134. console.log("deleteFromCache : " + cacheName);
  135.  
  136. var relativePath = "";
  137. getPath().split("-").splice(2).forEach(function(split) {
  138. relativePath += split + "-";
  139. });
  140. relativePath = relativePath.slice(0, -1);
  141.  
  142. var i = contentsString(cacheList, relativePath);
  143. if (i !== -1) {
  144. cacheList.splice(i, 1);
  145. localStorage.setItem(cacheName, JSON.stringify(cacheList));
  146. }
  147.  
  148. ajouterBarFav();
  149. traiterNavBarTopic();
  150. }
  151.  
  152. function traiterTrTopic(tr) {
  153.  
  154. // Suppression des FDP
  155. banList.forEach(function(connard) {
  156.  
  157. var message = null;
  158. if (hasProfilLink(tr, connard.name)) {
  159. message = "Réponse sur "+ connard.name;
  160. }
  161. if (hasProfilAvatar(tr, connard.name)) {
  162. message = "Message de "+ connard.name;
  163. }
  164.  
  165. if (message !== null) {
  166. console.log(message);
  167.  
  168. if (connard.rank == 1) {
  169. tr.innerHTML = message;
  170. } else if (connard.rank == 2) {
  171. tr.innerHTML =
  172. "<div class=\"spoiler\">"+ message +
  173. " <span class=\"spoiler-btn\">[Afficher]</span>"+
  174. " <div class=\"spoiler-content\" style=\"display: none;\"> "+ tr.innerHTML + "</div>"+
  175. "</div>";
  176. }
  177.  
  178. return;
  179. }
  180. });
  181. }
  182.  
  183. //-----------------------------------------------------
  184. // Forum
  185. //-----------------------------------------------------
  186.  
  187.  
  188. function traiterForum() {
  189. var lst = document.getElementsByClassName("table table-striped topics");
  190. var trs = lst[0].children[1].children;
  191. for(var i = 0; i < trs.length; ++i) {
  192. traiterTrForum(trs[i]);
  193. }
  194. }
  195.  
  196. function traiterTrForum(tr) {
  197.  
  198. // Suppression des caracteres ching chong
  199. if (tr.innerText.match(/[\u3400-\u9FBF]/)) {
  200. console.log("Suppression des caracteres ching chong");
  201. tr.innerHTML = "";
  202. return;
  203. }
  204.  
  205. // Suppression des FDP
  206. banList.forEach(function(connard) {
  207. if (hasProfilLink(tr, connard.name)) {
  208. console.log("Suppression du FDP : " + connard.name);
  209. tr.innerHTML = "";
  210. return;
  211. }
  212. });
  213.  
  214. bans.forEach(function(url) {
  215. if (hasUrl(tr, url)) {
  216. console.log("Suppression du sujet : " + url);
  217. tr.innerHTML = "";
  218. return;
  219. }
  220. });
  221.  
  222. // Surlignage
  223. surlignes.forEach(function(surligne) {
  224. if (hasProfilLink(tr, surligne.name)) {
  225. console.log("Surlignage : " + surligne.name);
  226. tr.style.background = surligne.color;
  227. return;
  228. }
  229. });
  230.  
  231. }
  232.  
  233. //-----------------------------------------------------
  234. // Utils
  235. //-----------------------------------------------------
  236.  
  237. function contentsString(list, match) {
  238. for(var i = 0; i < list.length; ++i) {
  239. if (stringContents(list[i], match)) {
  240. return i;
  241. }
  242. }
  243. return -1;
  244. }
  245.  
  246. function getPath() {
  247. return url + window.location.pathname;
  248. }
  249.  
  250. function designTopButton(button) {
  251. button.style.color = "white";
  252. button.style.backgroundColor = "transparent";
  253. button.style.border = "none";
  254. }
  255.  
  256. function hasProfilLink(elem, name) {
  257. return stringContents(elem.innerHTML, "https://avenoel.org/profil/" + name + "\"");
  258. }
  259.  
  260. function hasProfilAvatar(elem, name) {
  261. return stringContents(elem.innerHTML, "alt=\"Avatar de "+ name + "\"");
  262. }
  263.  
  264. function hasUrl(elem, url) {
  265. return stringContents(elem.innerHTML, "<a href=\"" + url + "\">");
  266. }
  267.  
  268. function stringContents(string, match) {
  269. return string.indexOf(match) !== -1;
  270. }
  271.  
  272. function addButtonToNavBar(names) {
  273.  
  274. var buttons = [];
  275.  
  276. if (document.getElementById(names[0]) === null) {
  277. var navbar = document.getElementsByClassName("nav navbar-nav navbar-links");
  278. var innerHTML = "";
  279. names.forEach(function(name) {
  280. innerHTML += "<li class=\"\"><a><button id=\"" + name + "\" ></button></a></li>";
  281. });
  282. navbar[0].innerHTML += innerHTML;
  283. names.forEach(function(name) {
  284. //button = document.getElementById(name);
  285. designTopButton(document.getElementById(name));
  286. });
  287. }
  288.  
  289. names.forEach(function(name) {
  290. buttons.push(document.getElementById(name));
  291. });
  292.  
  293. return buttons;
  294. }
  295.  
  296. //-----------------------------------------------------
  297. // Patch
  298. //-----------------------------------------------------
  299. //
  300. // 1.0.1 : add url pastebin
  301. // + correction du bug des bans de topics
  302. // + detection du favoris/ban à chaque page du topic
  303. // 1.0.0 : https://pastebin.com/bjVmYYgM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement