Guest User

2chDoublesScript

a guest
Nov 18th, 2023
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. // ==UserScript==
  2. // @name 2chDoublesScript
  3. // @description Поиск даблов, триплов, хуиплов и их подсветка
  4. // @version 1.0.0
  5. // @match *://2ch.hk/*
  6. // ==/UserScript==
  7.  
  8. "use strict";
  9.  
  10. const postBorderColor = "red"; // Цвет обводки поста
  11. const postBorderWidth = 0.2; // Ширина обводки поста
  12.  
  13. const postIdColor = "black"; // Цвет текста номера поста
  14. const postIdBackgroundColor = "cyan"; // Цвет заднего фона текста номера поста
  15.  
  16. function addHighlight(post) {
  17. try {
  18. const postId = post.getAttribute("data-num");
  19.  
  20. // Поиск количества повторяющихся чисел с конца
  21. let count = 1;
  22. for (let i = postId.length - 2; i >= 0; --i) {
  23. if (postId[postId.length - 1] === postId[i]) {
  24. ++count;
  25. } else {
  26. break;
  27. }
  28. }
  29.  
  30. // Если номер поста дабл и выше, то выделяем область
  31. if (count >= 2) {
  32. post.style = `border: ${postBorderWidth}rem solid ${postBorderColor};`;
  33. const dom = post.querySelector(".post__details").querySelectorAll(".post__detailpart")[2].querySelectorAll("a")[1];
  34. dom.innerHTML = postId.slice(0, postId.length - count) + `<span style="color: ${postIdColor}; background-color: ${postIdBackgroundColor};">${postId.slice(postId.length - count, postId.length)}</span>`;
  35. }
  36. } catch {}
  37. }
  38.  
  39. // Создаём наблюдателя за новыми постами
  40. const observer = new MutationObserver((mutations) => {
  41. for (let i = 0; i < mutations.length; ++i) {
  42. const addedNodes = mutations[i].addedNodes;
  43. for (const node of addedNodes) {
  44. if (node.classList.contains("post")) {
  45. addHighlight(node);
  46. } else {
  47. const posts = node.querySelectorAll(".post");
  48. for (const post of posts) {
  49. addHighlight(post);
  50. }
  51. }
  52. }
  53. }
  54. });
  55. // Элемент, за которым наблюдаем
  56. const target = document.getElementById("js-posts");
  57. // Запускаем механизм наблюдения
  58. observer.observe(target, { childList: true });
  59.  
  60. // Подсветка существующих постов
  61. const posts = target.querySelectorAll(".post");
  62. for (const post of posts) {
  63. addHighlight(post);
  64. }
Add Comment
Please, Sign In to add comment