cytube_validate_url

cytubeに独自のURLチェックを追加します

// ==UserScript==
// @name         cytube_validate_url
// @namespace    https://cytube.xyz/
// @version      0.3
// @description  cytubeに独自のURLチェックを追加します
// @author       utubo
// @match        *://cytube.xyz/*
// @match        *://cytube.mm428.net/*
// @grant        none
// ==/UserScript==

(window.unsafeWindow || window).eval(` // チャンネルのJSに設定するときはこの行(と最後の行)を削除
(function() {
  // 設定 ------------------------------------
  var BAD_URLS = [
    { startsWith:'https://www.nicovideo.jp/watch/nm', msg:'ニコニコ動画の動画IDが"nm~~"で始まるURLは未対応です。' },
    { startsWith:'URLがこれで始まってたらNG', msg:'サンプル1' },
    { regex:/URLがこの正規表現にマッチしたらNG/, msg:'サンプル2' }
  ];
  // 本体 ------------------------------------
  // 2重起動されたら前のはクリア
  var win = (window.unsafeWindow || window);
  if (win.BAD_URLS_HANDLER) {
    win.document.body.removeEventListener(win.BAD_URLS_HANDLER);
  }
  // ここからメイン
  var toHttps = url => url.replace('http://', 'https://');
  win.BAD_URLS_HANDLER = e => {
    if (!e.target) return;
    if (e.target.id !== 'queue_next' && e.target.id !== 'queue_end') return;
    var url = toHttps(document.getElementById('mediaurl').value);
    for (var badURL of BAD_URLS) {
      if (badURL.startsWith && url.startsWith(toHttps(badURL.startsWith)) || badURL.regex && url.match(badURL.regex)) {
        queueMessage({ msg: badURL.msg }, 'alert-danger');
        e.preventDefault();
        e.stopPropagation();
        return false;
      }
    }
  };
  win.document.body.addEventListener('click', win.BAD_URLS_HANDLER, true);
})();
`); // チャンネルのJSに設定するときはこの行も削除