cytube_validate_url

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

  1. // ==UserScript==
  2. // @name cytube_validate_url
  3. // @namespace https://cytube.xyz/
  4. // @version 0.3
  5. // @description cytubeに独自のURLチェックを追加します
  6. // @author utubo
  7. // @match *://cytube.xyz/*
  8. // @match *://cytube.mm428.net/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (window.unsafeWindow || window).eval(` // チャンネルのJSに設定するときはこの行(と最後の行)を削除
  13. (function() {
  14. // 設定 ------------------------------------
  15. var BAD_URLS = [
  16. { startsWith:'https://www.nicovideo.jp/watch/nm', msg:'ニコニコ動画の動画IDが"nm~~"で始まるURLは未対応です。' },
  17. { startsWith:'URLがこれで始まってたらNG', msg:'サンプル1' },
  18. { regex:/URLがこの正規表現にマッチしたらNG/, msg:'サンプル2' }
  19. ];
  20. // 本体 ------------------------------------
  21. // 2重起動されたら前のはクリア
  22. var win = (window.unsafeWindow || window);
  23. if (win.BAD_URLS_HANDLER) {
  24. win.document.body.removeEventListener(win.BAD_URLS_HANDLER);
  25. }
  26. // ここからメイン
  27. var toHttps = url => url.replace('http://', 'https://');
  28. win.BAD_URLS_HANDLER = e => {
  29. if (!e.target) return;
  30. if (e.target.id !== 'queue_next' && e.target.id !== 'queue_end') return;
  31. var url = toHttps(document.getElementById('mediaurl').value);
  32. for (var badURL of BAD_URLS) {
  33. if (badURL.startsWith && url.startsWith(toHttps(badURL.startsWith)) || badURL.regex && url.match(badURL.regex)) {
  34. queueMessage({ msg: badURL.msg }, 'alert-danger');
  35. e.preventDefault();
  36. e.stopPropagation();
  37. return false;
  38. }
  39. }
  40. };
  41. win.document.body.addEventListener('click', win.BAD_URLS_HANDLER, true);
  42. })();
  43. `); // チャンネルのJSに設定するときはこの行も削除