Greasy Fork

oo.pe redirection remover

remove oo.pe redirection in Arca.live

当前为 2024-04-09 提交的版本,查看 最新版本

// ==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.21
// @author          Laria
// @description     remove oo.pe redirection in Arca.live
// @description:ko  아카라이브 oo.pe 리디렉션을 제거합니다.
// @supportURL      https://greasyfork.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://greasyfork.org/scripts/485591
 *
*/

/*
 * == Change log ==
 * 1.0 - release
 * 1.1 - add retry
 * 1.2 - detect comment reload
 * 1.21 - apply link's description
 */

//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();
      //resolve link when comment reload
      document.querySelector('.article-comment').querySelector('.newcomment-alert').addEventListener('click', (event) => {
        event.preventDefault();
        for (let i = 1; i <= 7; i++) {
          setTimeout(function() {
            resolveLink(document.querySelector('.article-comment'));
          }, 100 * i);
        }
      });
    }, 200);
})();