125 lines
2.6 KiB
Python
125 lines
2.6 KiB
Python
import vapoursynth as vs
|
|
|
|
from tanteidan_common import (PrettyConfig, PrettySource, antialias, deband,
|
|
denoise, finalize, regrain, stupid_op_scenefilter)
|
|
|
|
from yt_common.automation import SelfRunner
|
|
from yt_common.source import waka_replace
|
|
|
|
from typing import List, Optional
|
|
|
|
from lvsfunc.dehardsub import HardsubSignFade, HardsubMask, bounded_dehardsub
|
|
from lvsfunc.types import Range
|
|
|
|
import os
|
|
|
|
|
|
core = vs.core
|
|
|
|
|
|
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
|
|
CONFIG: PrettyConfig = PrettyConfig(EPNUM)
|
|
SOURCE: PrettySource = PrettySource(CONFIG)
|
|
|
|
OP: Optional[int] = 792
|
|
|
|
WAKA_REPLACE: List[List[Range]] = [
|
|
[(31864, 32652)],
|
|
[],
|
|
]
|
|
|
|
TITLECARDS: List[Range] = [
|
|
(0, 35),
|
|
(2949, 2996),
|
|
(6470, 6505),
|
|
(8460, 8495),
|
|
(8976, 9011),
|
|
(11058, 11141),
|
|
(13221, 13268),
|
|
(15780, 15818),
|
|
(19494, 19529),
|
|
(21303, 21338),
|
|
(24000, 24023),
|
|
(25207, 25242),
|
|
(26654, 26683),
|
|
(30290, 30337),
|
|
]
|
|
|
|
SIGNS_RU: List[HardsubMask] = [
|
|
HardsubSignFade([
|
|
(318, 347),
|
|
(4607, 4702),
|
|
(6506, 6547),
|
|
(31792, 31863),
|
|
(3714, 3773),
|
|
(3774, 3851),
|
|
(4886, 4933),
|
|
(5972, 6091),
|
|
(12060, 12083),
|
|
(12084, 12113),
|
|
(18132, 18200),
|
|
(19446, 19493),
|
|
(24178, 24196),
|
|
(24201, 24216),
|
|
(26768, 26815),
|
|
(26816, 26857),
|
|
]),
|
|
|
|
]
|
|
|
|
SIGNS_RU += [HardsubSignFade(tc) for tc in TITLECARDS]
|
|
|
|
AA_STRONG: List[Range] = [
|
|
# the stars in this range respond poorly to nnedi3-clamped AAs, but fine to sraa
|
|
(13374, 13889),
|
|
(14022, 14270),
|
|
(14994, 15233),
|
|
(15540, 15779),
|
|
(19530, 19805),
|
|
(19995, 20177),
|
|
(20190, 20669),
|
|
(20856, 21020),
|
|
]
|
|
|
|
AA_WEAK: List[Range] = [
|
|
(0, 35),
|
|
(282, 347),
|
|
(16086, 16277),
|
|
(17757, 18068),
|
|
(18069, 18440),
|
|
]
|
|
|
|
AA_WEAK += TITLECARDS
|
|
|
|
AA_NONE: List[Range] = [
|
|
(5972, 6091), # this is heavily stylized and i'm not touching it
|
|
]
|
|
|
|
|
|
def filter_basic() -> vs.VideoNode:
|
|
wakas, ref = SOURCE.source()
|
|
wakas = [w[0] + w for w in wakas]
|
|
waka = wakas[0]
|
|
waka, wakas = waka_replace(waka, wakas[1:], WAKA_REPLACE)
|
|
src = bounded_dehardsub(waka, ref, SIGNS_RU, wakas)
|
|
src.set_output(1)
|
|
return src
|
|
|
|
|
|
def filter() -> vs.VideoNode:
|
|
src = filter_basic()
|
|
den = denoise(src)
|
|
deb = deband(den)
|
|
aa = antialias(deb, strong=AA_STRONG, weak=AA_WEAK, noaa=AA_NONE)
|
|
scenefilter = stupid_op_scenefilter(aa, deb, OP)
|
|
grain = regrain(scenefilter)
|
|
final = finalize(grain)
|
|
final.set_output()
|
|
return final
|
|
|
|
|
|
if __name__ == "__main__":
|
|
SelfRunner(CONFIG, filter, filter_basic)
|
|
else:
|
|
filter()
|