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に設定するときはこの行も削除