# nlフィルタ定義(文字コード判定用なのでこの行は削除しないこと)
# 23/07/04

#[Script]
Name = キャッシュメニューを追加
URL = www\.nicovideo\.jp/
ContentType = text/html
Append<
// TODO: 挿入が終わった後に呼び出すhookを作る
(function() {
  const
    commonHeader = document.getElementById("CommonHeader"),
    F1 = function(mutations) {
      var elem = document.querySelector("#CommonHeader>div>div>div");
      if (elem) {
        observer.disconnect();
        F2(elem.children[0], elem.children[1]);
      }
    }.bind(this),
    F2 = function(left, right) {
      // TODO
      console.log(left, right);
    },
    observer = new MutationObserver(F1);
  observer.observe(commonHeader, {
    childList: true,
    subtree: true,
  });
  F1();
})();
>

#[Replace]
Name = キャッシュメニューを追加
URL = www\.nicovideo\.jp/
ContentType = text/html
Match<
<li>\s*+<a href="[^>]+><span>(?:|総合)ランキング</span></a>\s*+</li>|
<li id="siteHeaderRankingMenu">[\s\S]*?<ul[\s\S]*?</ul>[\s\S]*?</li>
>
Replace<
$0
<li onmouseover="document.getElementById('cachemenu').style.display='block';" onmouseout="document.getElementById('cachemenu').style.display='none'">
	<a href="javascript:void(0);"><span>キャッシュ▼</span></a>
	<ul style="display: none;" id="cachemenu" onmouseover="this.style.display='block';" onmouseout="this.style.display='none'">
	<li><a href="/cache/">空き <freeSpace>GB</a></li>
<!--li_cachemenu_item_start-->
<!--li_cachemenu_item_end-->
	</ul>
</li>
>

[Replace]
Name = 空き容量警告を追加
URL = www\.nicovideo\.jp/
ContentType = text/html
Match<
(?=</head>)
>
Replace<
<script type="text/javascript">
if (<freeSpace> < 3) alert("キャッシュフォルダの空き容量が3GBを下回っています！");
</script>

>

#[Replace]
Name = watchページ用メニューを追加
URL = www\.nicovideo\.jp/watch/
ContentType = text/html
Match<
(?<=<!--li_cachemenu_item_start-->\r?\n?)
>
Replace<
	<li><a href="/cache/<smid>/auto/movie" id="cache_movie">動画を保存</a></li>
	<li><a href="/cache/<smid>/auto/audio" id="cache_audio">音声を保存</a></li>
	<li><a href="/cache/<memoryId>.xml" id="cache_comment">コメントを保存</a></li>
	<li><a href="/cache/ajax_rmall?<smid>" id="cache_remove" onclick="NicoCache_nl.removeCache(this); return false;">キャッシュ削除</a></li>
<script type="text/javascript"><!--
NicoCache_nl.removeCache = function(a) {
	this.get(a.href, function(xhr) {
		var orig = a.innerHTML;
		a.innerHTML = orig + " " + xhr.responseText;
		setTimeout(function(){ a.innerHTML = orig }, 3000);
	});
};
//--></script>
>

[Replace]
Name = キャッシュ削除ボタンを追加
URL = www\.nicovideo\.jp/watch/
ContentType = text/html
Match<
(?=<!--nicocachenl-head-->)
>
Replace<
<script type="text/javascript" src="/$TS(local/05_cache_remove_button.js)"></script><CRLF>
>

# - 2024-09-06. ずっと前から動作していない.
# 20_watchFilter.txt のライブラリ埋め込みに依存
#[Script]
Name = watchページ用メニューの更新スクリプト(HTML5)
URL = www\.nicovideo\.jp/watch/
ContentType = text/html
Require = "js-initial-watch-data"
Append<
if (window.NicoCache_nl && window.NicoCache_nl.watch) {
	NicoCache_nl.watch.addEventListener('videoChanged', function(videoId) {
		if (videoId) {
			document.getElementById('cache_movie'  ).href = '/cache/' + videoId + '/auto/movie';
			document.getElementById('cache_audio'  ).href = '/cache/' + videoId + '/auto/audio';
			document.getElementById('cache_comment').href = '/cache/' + videoId + ".xml"; // How to get memoryId?
			document.getElementById('cache_remove' ).href = '/cache/ajax_rmall?' + videoId;
		}
	});
}
>

