Guest User

Untitled

a guest
Jan 20th, 2021
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $(() => {
  2.     let FILTERED_BOARD_LIST = ['fs', 'figurch', 'drugfk', 'kosto'];
  3.     let BANNED_COUNTRIES = [/*'Romania'*/ /*, 'Portugal'*/];
  4.  
  5.     if (!FILTERED_BOARD_LIST.includes(config.board_uri)) {
  6.         return;
  7.     }
  8.  
  9.     let filteredIdx = 0;
  10.  
  11.     // MD5 хуенгровских и др. реакшенов
  12.     let reactionsMd5 = [
  13.        "7992694fff1a3e8a6e459ffb45e327cf",
  14.        "79748ef10dd9d55081ab767f5d91cb71",
  15.        "62bbfdd72913e4a613870c8b210239ed",
  16.        "303ac8aade690af536c14eb45a5bda9c",
  17.        "323cbd4d72c3af4772cc7cdee099c46d",
  18.        "bb7d555f0abb4c105d78954c24d11ffc",
  19.        "e946f48e3ee3a70d2aafdfc662f9d659",
  20.        "020a5c32273a2bc751b122c2cfa926eb",
  21.        "a4232db2d92b4a1a129ea61967ce165d",
  22.        "ff0975695723e19840499ddc44c5867c",
  23.        "656032ce773521301b37e4c7d5a97986",
  24.        "e743d8b264585f11201f28dad8c95b47",
  25.        "8b9f7beaacf90fa01cc08cccaf5b73be",
  26.        "3d0cb129a61d622c3ddb8e70338ab5f8",
  27.        "278b3bd362407806d8cc7ef78ef90339",
  28.        "6b60b6a6d279ced159355d0c8ae79811",
  29.        "330dbd2f0a0f47058aa6e89e8d1d805f",
  30.        "442ce705150350e402e52cf48463328b",
  31.        "ed2e35bbac35772a3057d98cdc51e224",
  32.        "2520b8cb07d80d77588f2b72be6c3ac5",
  33.        "1d10bdeabf05edf243843ba65514f4e8",
  34.        "23faadacdb3e0b816053202da8afc828",
  35.        "19d438c228de4a1e128aa0249db52437",
  36.        "4ac7dbe285fd0997bb5bcbdd0d9edd86",
  37.        "dd55378e1ac29cc6e6b2d07f96479a35",
  38.        "e9f704f2c383f83a3fdeeb8fcec2ad61",
  39.        "88cbb5f05775297af984b34623cf2a9a",
  40.        "801eeba4d644fcb30ca7b8e8b8d00d4e"
  41.     ];
  42.  
  43.     function filterMsg(el) {
  44.         let postMessage = $(el).find('.post-message');
  45.  
  46.         let msgText = postMessage.text();
  47.         let msgFiles = $(el).find('.post-file').length;
  48.         let msgFlag = $(el).find('.flag').attr('alt');
  49.         let postIdx = parseInt($(el).attr('data-post'));
  50.  
  51.         if (msgText.toLowerCase().match('билет|ticket|бронир')) {
  52.             return 'show';
  53.         }
  54.  
  55.         // детектор перекатов
  56.         let m = msgText.match(/>>([0-9]+)/);
  57.         if (m) {
  58.             let linkRef = parseInt(m[1]);
  59.             let matchCount = 0;
  60.             let rxLink = />>([0-9]+)/g;
  61.  
  62.             do {
  63.                 m = rxLink.exec(msgText);
  64.                 if (m && parseInt(m[1]) == linkRef) {
  65.                     matchCount++;
  66.                 }
  67.             } while (m);
  68.  
  69.             if (/*linkRef > postIdx &&*/ matchCount >= 3) {
  70.                 return 'show';
  71.             }
  72.         }
  73.  
  74.         if (BANNED_COUNTRIES.includes(msgFlag)) {
  75.             return 'removeAll';
  76.         }
  77.  
  78.         // голосовалки всегда бесполезны
  79.         if (postMessage.find('.poll').length > 0) {
  80.             return 'removeAll';
  81.         }
  82.  
  83.         let isResponse = msgText.match(/>>[0-9]+/);
  84.         let containsQuotedText = msgText.match(/^>.*/);
  85.         let containsUrl = postMessage.find('a:not(.post-link)').length;
  86.  
  87.         if (containsUrl) {
  88.             return 'removeNonQuotedText';
  89.         }
  90.  
  91.         if (containsQuotedText && !isResponse) {
  92.             return 'removeNonQuotedText';
  93.         }
  94.  
  95.         return 'removeText';
  96.     }
  97.  
  98.     function cleansePost(el) {
  99.         let filterMethod = filterMsg(el);
  100.         switch(filterMethod) {
  101.             case 'removeNonQuotedText':
  102.                 $(el).find('.post-message :not(blockquote, a, i, :has(a))').hide();
  103.                 break;
  104.  
  105.             case 'removeText':
  106.                 let badFileCount = 0;
  107.                 $(el).find('.post-file').each((idx, postFileEl) => {
  108.                     if ($(postFileEl).find('.deleted').length != 0
  109.                      || reactionsMd5.includes($(postFileEl).find('img').attr('data-md5'))
  110.                     ) {
  111.                         badFileCount++;
  112.                     }
  113.                 });
  114.  
  115.                 if ($(el).find('.post-file').length === badFileCount) {
  116.                     $(el).hide();
  117.                     filterMethod = 'removeAll';
  118.                 } else {
  119.                     $(el).find('.post-message').hide();
  120.                 }
  121.  
  122.                 break;
  123.  
  124.             case 'removeAll':
  125.                 $(el).hide();
  126.                 break;
  127.         }
  128.         $(el).find('.post-footer').hide();
  129.  
  130.         filteredIdx = Math.max(filteredIdx, parseInt($(el).attr('data-post')));
  131.  
  132.         return filterMethod;
  133.     }
  134.  
  135.     $('article.post').each((idx, el) => {
  136.         cleansePost(el);
  137.     })
  138.  
  139.     $(document).on('new_post', function(e,post) {
  140.         $('.post').each((idx, el) => {
  141.             postIdx = parseInt($(el).attr('data-post'));
  142.             if (postIdx > filteredIdx) {
  143.                 let res = cleansePost(el);
  144.                 if (res == 'removeAll') {
  145.                     new_posts = Math.max(0, new_posts - 1);
  146.                     new_you_posts = Math.min(new_you_posts, new_posts);
  147.                     if (new_posts == 0) {
  148.                         makeIcon(icon_normal);
  149.                     }
  150.                 }
  151.             }
  152.         })
  153.     });
  154. });
  155.  
Add Comment
Please, Sign In to add comment