Niconico Link Modifier

ニコニコのリンク先URLを改変して快適にニコニコします。

  1. // ==UserScript==
  2. // @name Niconico Link Modifier
  3. // @namespace knoa.jp
  4. // @description ニコニコのリンク先URLを改変して快適にニコニコします。
  5. // @include http*://www.nicovideo.jp/*
  6. // @include http*://dic.nicovideo.jp/*
  7. // @include http*://live.nicovideo.jp/*
  8. // @version 1
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function(){
  13. const SCRIPTNAME = 'NiconicoLinkModifier';
  14. function modify(as){
  15. let href;
  16. for(let i = 0; i<as.length; i++){
  17. switch(true){
  18. // 連続再生ボタンはいじらない(けど機能しない…)
  19. case as[i].id === 'BTN_playlist_play_all':
  20. break;
  21. // CSSのVisitedを活用するため、アンカーURLからクエリ文字列を取り除いて正規化
  22. case (href = as[i].href.match(/^(https?:\/\/[a-z]+\.nicovideo\.jp\/watch\/[a-z]+\d+)\?/)) !== null:
  23. case (href = as[i].href.match(/^(https?:\/\/live\.nicovideo\.jp\/searchresult\?v=[a-z]+\d+)/)) !== null:
  24. as[i].href = href[1];
  25. break;
  26. // タグのデフォルト並び替えを「マイリスト数が多い順」にする
  27. case (href = as[i].href.match(/^(https?:\/\/www\.nicovideo\.jp\/tag\/[^\?]+)$/)) !== null:
  28. case (href = as[i].href.match(/^(https?:\/\/www\.nicovideo\.jp\/tag\/[^\?]+)\?ref=tagconcerned$/)) !== null:
  29. as[i].href = href[1] + '?sort=m';
  30. break;
  31. // お便りの投稿を通常リンクにすべき?
  32. }
  33. as[i].classList.add(SCRIPTNAME);
  34. }
  35. }
  36. //window.addEventListener('load', function(){modify(document.getElementsByTagName('a'))}, false);
  37. //document.body.addEventListener('AutoPagerize_DOMNodeInserted', function(e){modify(e.target.getElementsByTagName('a'))}, false);
  38. //ロード数秒後のタイミングで書き換わったりするからいっそのことIntervalでいいや。
  39. //select要素のchangeでAjaxで書き換えられる場合にも対応できて一石二鳥。
  40. setInterval(function(){modify(document.querySelectorAll(`a:not(.${SCRIPTNAME})`))}, 1000);
  41. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址