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

# idGroupを指定することで、キャッシュがあるときのみ置換される
#  ID取得用に、idGroupに動画ID(sm〜)、サムネID(数字部分のみ)への参照番号を
#  ","区切りで2つ指定する
#  "idGroup = 1,2"とすれば、$1,$2が参照され、キャッシュがあれば置換される
#  1つだけ指定することも可能
#
#  2つ指定しているのは、マイメモリやチャンネルで数字のみ10桁の動画IDの時、
#  サムネIDから検索して表示するため
#  リンクの色変えなどでIDが1つしかない時は、1つ指定してあればよい
#
# また、Replace中にセパレータとして"<$>"を入れる事で、
# キャッシュが通常/エコノミーでReplaceのパターンを変えることが出来る
#  "<$>"以前が通常キャッシュ用、以後がエコノミーキャッシュ用となる。
#  改行は入れなくても良いし、EachLineで使用することも出来る
#  "<$>"が無いときは通常/エコノミーで同じ置換が行われる
#  Replace中の一部分だけ変えたい場合は"cache<icon$economy>.gif"と記述出来る
#  \w+以外の文字列を記述するとセパレータとして認識しない、複数記述も不可
#
# dmc/エコノミーを同時に判定して切り替えたい場合は次の記法が利用できる。
#   <非dmc通常$$非dmcエコノミー$$dmc通常$$dmcエコノミー>
#   非dmc通常<$>非dmcエコノミー<$>dmc通常<$>dmcエコノミー
#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュアイコン追加
URL = (?:www|ext|live|ch|com|uad|news|ex)\.nicovideo\.jp/(?!thumb_|openlist/)
ContentType = text/(?:html|plain|xml)
Multi = TRUE
idGroup = 1,2
Match<
href="(?:
(?:(?:|/|[^"]*http://www\.nicovideo\.jp/)watch/|[^"]+video_id=)(\w{2}\d+)|http://(?:rd|ch)\.nicovideo\.jp/|/ch\d+
)[^"]*"[^>]*>(?:(?!</a\s*>)[\s\S])*?
<img [^>]*(?:src|title|longdesc|data-original)="[^"]+(?:smile\?i=(\d+)(?:\.(?:[SML]|\d+))?|video_deleted[^.]*\.jpg|del_img\.jpg)\s*"[^>]*>
(?:(?!</a\s*>)[\s\S])*?</a\s*>(?:\s*</p\s*>)?
>
Replace<
$0
<div class="cacheIcon <cache$economy>IconImg"></div>
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ済動画のリンク色変更(検索系)
#URL = (?:www|ext|ch|news)\.nicovideo\.jp/(?:$|category_recent.php$|\?g|tag/|search/|thumb/|ranking|history|newarrival|random|recent|api/getthumbinfo/\w{2}\d+\?nlFilter|(?:|api/my/tlget)user/|hotlist|channel/|community/|search_video/|video/c[ho]\d+|top/|video_top|my/history)
URL = (?:www|ext|ch|news)\.nicovideo\.jp/(?:$|category_recent.php$|\?g|tag/|search/|thumb/|ranking|history|newarrival|random|recent|api/getthumbinfo/\w{2}\d+\?nlFilter|(?:|api/my/tlget)user/|hotlist|channel/|community/|search_video/|video/c[ho]\d+|top/|video_top|my/history)
ContentType = text/(?:html|plain|xml)
Multi = TRUE
idGroup = 2
Match<
(href="(?:(?:|/|http://www\.nicovideo\.jp/)watch/|[^"]+video_id=)((?:[a-z]{2})?\d++)(?:\?[^"]+)?"(?:(?!title|playlist)[^>])*?(?: title="[^"]+"[^>]*)?)(>\s*+)(?!<img)
>
Replace<
$1 style="color:#<C00000$C08000>;"$3
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュアイコン位置(共通 CSS)
URL = (?:www|ext|live|ch|com|uad|news|ex)\.nicovideo\.jp/(?!thumb_|openlist/)
ContentType = text/html
Match<
(?=</head>)
>
Replace<
<link rel="stylesheet" type="text/css" charset="utf-8" href="/$TS(local/nl_cacheIcon.css)"><CRLF>
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(wwwドメイン)
URL = www\.nicovideo\.jp/(?:ranking|video_top|tag|search)
Append<
	.cacheIcon { z-index:3;}
	.main .cacheIcon { position:absolute; top:90px; bottom:auto;}
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(世界の新着動画)
URL = live\.nicovideo\.jp/newworld
Append<
	#box_b .box_b02 { position:relative;}
	#box_b .box_b02 .cacheIcon { position:absolute; top:calc(96px + 5px + 3px + 15px); bottom:auto;}
	#box_b .box_b02 .cacheIcon::after { left:auto; right:8px;}
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(ボカロ音楽)
URL = ex\.nicovideo\.jp/vocaloid
Append<
	/* vocaloid */
	.thumb_94 .cacheIcon
	,.thumb_120 .cacheIcon
	,.thumb_360 .cacheIcon { position:absolute; top:0; bottom:auto;}
	.thumb_94 .cacheIcon::after { top:2px; bottom:auto; left:2px; width:20px; background-position-x:-58px;}
	.thumb_120 .cacheIcon::after { top:2px; bottom:auto; left:auto; right:2px;}
	.thumb_360 .cacheIcon::after { top:5px; bottom:auto; left:5px;}
	/* vocaloid/new */
	.new_list .left_box { position:relative;}
	.new_list .cacheIcon { position:absolute;}
	.new_list .cacheIcon::after { bottom:6px; left:6px; width:20px; background-position-x:-58px;}
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(チャンネル トップ)
URL = ch\.nicovideo\.jp/$
Append<
	#column_main .cacheIcon { bottom:54px;}
	#column_main .cacheIcon::after { left:auto; right:0; width:20px; background-position-x:-58px;}
	#popularity .cacheIcon::after { left:0; right:auto; width:59px; background-position-x:0px;}
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(チャンネル/映画・ドラマ)
URL = ch\.nicovideo\.jp/portal/movie
Append<
	#sec_ranking_comment .cacheIcon::after
	,#sec_ranking_viewed .cacheIcon::after { left:auto; right:0;}
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(チャンネル/社会・言論)
URL = ch\.nicovideo\.jp/portal/media
Append<
	#contents_main .cacheIcon { bottom:4px;}
	#contents_side .cacheIcon { position:absolute; bottom:2px;}
	#contents_side .cacheIcon::after { width:20px; background-position-x:-58px;}
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(チャンネル/特撮)
URL = ch\.nicovideo\.jp/portal/tokusatsu
Append<
	.pager .cacheIcon { top:100px; bottom:auto;}
	#column_main .cacheIcon { bottom:38px;}
	#column_main .cacheIcon::after { left:auto; right:0;}
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(チャンネル/上記以外)
URL = ch\.nicovideo\.jp/portal/(?!anime|movie|media|tokusatsu)
Append<
	.pager { position:relative;}
	.pager .cacheIcon { position:absolute; top:100px; bottom:auto;}
	.pager .cacheIcon::after { left:auto; right:8px;}
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ済動画のリンク色変更(チャンネル)
URL = ch\.nicovideo\.jp/
ContentType = text/(?:html|plain|xml)
Multi = TRUE
idGroup = 2
Match<
(href="http://www\.nicovideo\.jp/watch/((?:[a-z]{2})?\d++)"(?:(?!title=)[^>])*(?: title="[^"]+"[^>]*)?)(>\s*+)(?!<img)
>
Replace<
$1 style="color:#<C00000$C08000>;"$3
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュアイコン位置(ニコニ広告)
URL = uad\.nicovideo\.jp/
ContentType = text/html
Append<
	/* 新着広告 */
	.v_info .cacheIcon { left:21px; bottom:5px;}
	.v_info .cacheIcon ~ br { display:none;}
	/* ランキング */
	.rank .l { position:relative;}
	.rank .cacheIcon { position:absolute;}
	.rank .cacheIcon::after { width:20px; background-position-x:-58px;}
	.rank1 .cacheIcon::after
	,.rank2 .cacheIcon::after
	,.rank3 .cacheIcon::after { width:59px; background-position-x:0;}
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ済動画のリンク色変更(ニコニ広告)
URL = uad\.nicovideo\.jp/(?:landing|latest|rank|ads)/
Multi = TRUE
idGroup = 2
Match<
(href="http://www\.nicovideo\.jp/watch/([a-z]{2}\d+)"[^>]+class="video_ttl[^>]+)(>\s*)(?!<img)
>
Replace<
$1 style="color:#<C00000$C08000>"$3
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ情報を付加(mylist)
URL = www\.nicovideo\.jp/(?:mylist/\d+|my/mylist|api/(?:deflist|mylist|mymemory)/list)
Multi = TRUE
idGroup = 1
Match<
"video_id":\s*"([a-z]{2}\d+)"
>
Replace<
$0,"cache":"<cache$economy>"
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュアイコン追加(mylist)
URL = www\.nicovideo\.jp/(?:my/)?mylist
Match<
(?<=time_format\}</span>(?:</p>|\{/if\}))
>
Replace<
<CRLF>	{if \$item.item_data.cache}<div class="cacheIcon {\$item.item_data.cache}IconImg"></div>{/if}
>

#----------------------------------------------------------------------------------------
#[Replace]
Name = キャッシュアイコン追加(my/mylist)
URL = www\.nicovideo\.jp/my/mylist
Match<
<img[^>]+item_data\.thumbnail_url[^>]+class="lazyimage"\s*/?>\s*
(?:\{if[^<]+<span class="videoTime[^<]+</span>\{/if\}\s*)?</a>
>
Replace<
$0{if \$item.item_data.cache}<div class="cacheIcon {\$item.item_data.cache}IconImg"></div>{/if}
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ済動画のリンク色変更(mylist)
URL = www\.nicovideo\.jp/(?:mylist/\d+|my/mylist)
Multi = TRUE
Match<
<a href="/?watch/\{\$item\.item_data\.watch_id[^\}]*\}[^"]*"
>
Replace<
$0 {if \$item.item_data.cache=="cache"} style="color:#C00000;"{elseif \$item.item_data.cache=="economy"} style="color:#C08000;"{/if}
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ済動画のリンク色変更(my/mylist)
URL = www\.nicovideo\.jp/my/mylist
Match<
<h[45]><a href="/?watch/\{\$item\.item_data\.watch_id.*?\}"
>
Replace<
$0 {if \$item.item_data.cache=="cache"} style="color:#C00000;"{elseif \$item.item_data.cache=="economy"} style="color:#C08000;"{/if}
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ情報を付加(recommendations)
URL = www\.nicovideo\.jp/(?:|api/)recommendations
Multi = TRUE
idGroup = 1
Match<
"id":\s*"([a-z]{2}\d+)"
>
Replace<
$0,"cache":"<cache$economy>"
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュアイコン追加(recommendations)
URL = www\.nicovideo\.jp/recommendations
Match<
<img[^>]+src="\{\$item\.thumbnail_url\}"[^>]*>[^<]*</a>[^<]*<span[^>]*>\{\$item\.length\}</span>
>
Replace<
$0{if \$item.cache}<div class="cacheIcon {\$item.cache}IconImg"></div>{/if}
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ済動画のリンク色変更(recommendations)
URL = www\.nicovideo\.jp/recommendations
Match<
class="font12"><a href="\{\$nico_base_url\}watch/\{\$item\.id\|escape:url\}"
>
Replace<
$0 {if \$item.cache == "cache"} style="color:#C00000;"{elseif \$item.cache == "economy"} style="color:#C08000;"{/if}
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ情報を付加(riapi)
URL = riapi\.nicovideo\.jp/api/
Multi = TRUE
idGroup = 1
Match<
"thumbnail_url"\s*:\s*"[^"]+smile\?i=(\d+)"
>
Replace<
$0,"cache":"<cache$economy>"
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ情報を付加(getthumbinfo)
URL = ext\.nicovideo\.jp/api/getthumbinfo(?:\?v=|/)\w{2}\d+
idGroup = 1
Match<
<video_id>([a-z]{2}\d+)</video_id>(\s*)
>
Replace<
$0<cache><cache$economy></cache>$2
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ済動画のリンク色変更(コミュニティ)
URL = com\.nicovideo\.jp/video/
Multi = TRUE
idGroup = 3,2
Match<
(<a [^>]*?href="http://www\.nicovideo\.jp/watch/\d+"[^>]*>\s*<img[^>]+src="[^"]+(?:\?i=(\d+)|video_deleted\.jpg|del_img\.jpg)"[^>]*>\s*</a>[\s\S]+?マイリスト:</span>(?:<a[^>]+mylistcomment/video/([a-z]{2}\d+)"|)[\s\S]+?href="http://www\.nicovideo\.jp/watch/\d+"[^>]*)(>\s*+)(?!<img)
>
Replace<
$1 style="color:#<C00000$C08000> !important;"$4
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュ情報を付加(検索系埋込みニコニ広告)
URL = api\.uad\.nicovideo\.jp/UadsBannerService/deliveryJsonp
Multi = TRUE
idGroup = 2
Match<
("video_id":"([a-z]{2}\d+)"[^}]*?,"level"):(\d+),
>
Replace<
$1:"$3 uad<Cache$Economy> videoId-$2",
>

#----------------------------------------------------------------------------------------
[Replace]
Name = キャッシュアイコン追加template(検索系埋込みニコニ広告)
URL = www\.nicovideo\.jp/tag/
Match<
<span class="videoLength uadPoint">%point%pts</span></div></div>
>
Replace<
$0<div class="cacheIcon" style="display:none;"></div>
>

#----------------------------------------------------------------------------------------
[Script]
Name = キャッシュアイコン追加script(検索系埋込みニコニ広告)
URL = www\.nicovideo\.jp/tag/
Append<
new MutationObserver(function() {
  \$(".uadCache .cacheIcon").css("display", "block").addClass("cacheIconImg");
  \$(".uadEconomy .cacheIcon").css("display", "block").addClass("economyIconImg");
  \$(".uadDmcCache .cacheIcon").css("display", "block").addClass("cacheIconImg");
  \$(".uadDmcEconomy .cacheIcon").css("display", "block").addClass("economyIconImg");
}).observe(\$("[data-uad-video-list]")[0], {childList: true});
>

#----------------------------------------------------------------------------------------
[Style]
Name = キャッシュ済動画のリンク色変更(検索系埋込みニコニ広告)
URL = www\.nicovideo\.jp/tag/
Append<
.uadCache a { color: #C00000 !important }
.uadEconomy a { color: #C08000 !important }
.uadDmcCache a { color: #C00000 !important }
.uadDmcEconomy a { color: #C08000 !important }
>
