oo.pe redirection remover

remove oo.pe redirection in Arca.live

2024-04-28 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name            oo.pe redirection remover
// @name:ko         oo.pe 리디렉션 제거기
// @namespace       OOPE_REMOVER_V1
// @match           https://arca.live/b/*
// @run-at          document-end
// @version         1.22
// @author          Laria
// @description     remove oo.pe redirection in Arca.live
// @description:ko  아카라이브 oo.pe 리디렉션을 제거합니다.
// @supportURL      https://greasyforks.org/scripts/485591
// @icon            https://www.google.com/s2/favicons?sz=64&domain=oo.pe
// @license         MIT
// @encoding        utf-8
// ==/UserScript==

/*
 * Note: Please install with greasyfork, it will update automatically..
 *
 * More info. https://greasyforks.org/scripts/485591
 *
*/

/*
 * == Change log ==
 * 1.0 - release
 * 1.1 - add retry
 * 1.2 - detect comment reload
 * 1.21 - apply link's description
 * 1.22 - check article comment before register event listner, retry 7 -> 10
 */

//root
(function() {
    'use strict';
    function resolveLink(tar = document) {
      function _res(tar) {
        //tokenizing
        const token = tar.split('/');
        //search oo.pe prefix
        const pref = token.indexOf('oo.pe');
        //join link after prefix
        return token.slice(pref + 1).join('/');
      }
      //search link include 'oo.pe'
      tar.querySelectorAll('a[href*="oo.pe"]').forEach(function(src) {
        try {
          src.title = _res(src.title);
          src.href = _res(src.href);
        } catch (_) {}
      });
    }
    resolveLink();
    //repeat resolve and add event listner
    setTimeout(() => {
      resolveLink();
    }, 50);
    setTimeout(() => {
      resolveLink();
      if(document.querySelector('.article-comment')) {
        //resolve link when comment reload
        document.querySelector('.article-comment').querySelector('.newcomment-alert').addEventListener('click', (event) => {
          event.preventDefault();
          //try to resole while server connection pending (1000ms)
          for (let i = 1; i <= 10; i++) {
            setTimeout(function() {
              resolveLink(document.querySelector('.article-comment'));
            }, 100 * i);
          }
        });
      }
    }, 200);
})();
长期地址
遇到问题?请前往 GitHub 提 Issues。