vivy: tv: 07
This commit is contained in:
parent
26725817cb
commit
f506bb3e8c
121
Vivy/07/07.vpy
Normal file
121
Vivy/07/07.vpy
Normal file
@ -0,0 +1,121 @@
|
||||
import vapoursynth as vs
|
||||
|
||||
from vivy_common import (VivyConfig, VivySource, antialias, deband, denoise,
|
||||
finalize, fsrcnnx_rescale, letterbox_edgefix, regrain)
|
||||
|
||||
from yt_common.automation import SelfRunner
|
||||
from yt_common.denoise import bm3d
|
||||
from yt_common.source import waka_replace
|
||||
|
||||
from lvsfunc.types import Range
|
||||
from lvsfunc.dehardsub import HardsubLine, HardsubLineFade, HardsubSign, HardsubSignFade, HardsubMask, bounded_dehardsub
|
||||
from lvsfunc.misc import replace_ranges
|
||||
from vardefunc import dumb3kdb
|
||||
|
||||
from typing import List
|
||||
|
||||
import os
|
||||
|
||||
core = vs.core
|
||||
|
||||
|
||||
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
|
||||
CONFIG: VivyConfig = VivyConfig(EPNUM)
|
||||
SOURCE: VivySource = VivySource(CONFIG)
|
||||
|
||||
WAKA_REPLACE: List[List[Range]] = [
|
||||
[(31528, 32857)],
|
||||
[],
|
||||
]
|
||||
SIGNS_RU: List[HardsubMask] = [
|
||||
HardsubSignFade([
|
||||
(2834, 2941),
|
||||
(16031, 16035),
|
||||
]),
|
||||
HardsubSignFade([
|
||||
(33949, 34045),
|
||||
], refframe=1, expand=9),
|
||||
HardsubSignFade([
|
||||
(21060, 21113),
|
||||
], refframe=0),
|
||||
HardsubSignFade([
|
||||
(21107, 21132),
|
||||
], refframe=1),
|
||||
HardsubSign([
|
||||
(7079, 7111),
|
||||
]),
|
||||
HardsubLineFade([
|
||||
(21508, 21572),
|
||||
]),
|
||||
HardsubLine([
|
||||
(961, 1106),
|
||||
(1111, 1252),
|
||||
(1265, 1408),
|
||||
(1414, 1502),
|
||||
(1509, 1578),
|
||||
(1583, 1657),
|
||||
(1663, 1815),
|
||||
(1862, 2006),
|
||||
(2011, 2079),
|
||||
(2084, 2171),
|
||||
(2179, 2309),
|
||||
(2313, 2382),
|
||||
(2387, 2486),
|
||||
(2491, 2556),
|
||||
(2570, 2686),
|
||||
(12150, 12261),
|
||||
(12279, 12403),
|
||||
(12413, 12525),
|
||||
(12530, 12633),
|
||||
(12637, 12783),
|
||||
(12789, 12891),
|
||||
(12896, 13049),
|
||||
(13054, 13116),
|
||||
(13121, 13255),
|
||||
(14930, 14990),
|
||||
], ((283, 844), (1349, 204))),
|
||||
]
|
||||
NOSCALE: List[Range] = []
|
||||
AA_NONE: List[Range] = [
|
||||
(14413, 14422),
|
||||
(15428, 15431),
|
||||
]
|
||||
AA_STRONGER: List[Range] = [
|
||||
(11972, 12080),
|
||||
]
|
||||
DB_WEAK: List[Range] = [
|
||||
(0, 579),
|
||||
]
|
||||
|
||||
LETTERBOX: List[Range] = []
|
||||
|
||||
|
||||
def filter_basic() -> vs.VideoNode:
|
||||
wakas, ref = SOURCE.source()
|
||||
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()
|
||||
rescale = fsrcnnx_rescale(src, NOSCALE)
|
||||
den = denoise(rescale)
|
||||
deb = deband(den)
|
||||
den2 = bm3d(rescale, sigma=4, radius=1)
|
||||
deb2 = dumb3kdb(den2, radius=16, threshold=24)
|
||||
deb = replace_ranges(deb, deb2, DB_WEAK)
|
||||
aa = antialias(deb, stronger=AA_STRONGER, noaa=AA_NONE)
|
||||
grain = regrain(aa)
|
||||
edgefix = letterbox_edgefix(grain, LETTERBOX)
|
||||
final = finalize(edgefix)
|
||||
final.set_output()
|
||||
return final
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
SelfRunner(CONFIG, filter, filter_basic)
|
||||
else:
|
||||
filter()
|
@ -1,8 +1,9 @@
|
||||
import vapoursynth as vs
|
||||
|
||||
from yt_common import source
|
||||
from yt_common.logging import log
|
||||
from yt_common.config import Config
|
||||
from yt_common.logging import log
|
||||
from yt_common.source import AMAZON_FILENAME_VBR
|
||||
|
||||
import os
|
||||
|
||||
@ -38,11 +39,11 @@ class VivySource(source.FunimationSource):
|
||||
# ep1-3 have good funi video, let's just use that
|
||||
if self.config.epnum < 4:
|
||||
raise FileNotFoundError()
|
||||
if not os.path.isfile(self.config.format_filename(AMAZON_FILENAME)):
|
||||
if not os.path.isfile(self.config.format_filename(AMAZON_FILENAME_VBR)):
|
||||
log.warn("Amazon not found, falling back to Funimation")
|
||||
raise FileNotFoundError()
|
||||
log.success("Found Amazon video")
|
||||
return core.ffms2.Source(self.config.format_filename(AMAZON_FILENAME))
|
||||
return core.ffms2.Source(self.config.format_filename(AMAZON_FILENAME_VBR))
|
||||
|
||||
def get_waka_filenames(self) -> List[str]:
|
||||
return [self.config.format_filename(f) for f in [
|
||||
|
@ -12,7 +12,7 @@ from typing import Any, BinaryIO, Callable, List, Optional, Sequence, Union, cas
|
||||
|
||||
from .config import Config
|
||||
from .logging import log
|
||||
from .source import AMAZON_FILENAME, ER_FILENAME, SUBSPLS_FILENAME, FUNI_INTRO, glob_filename
|
||||
from .source import AMAZON_FILENAME_CBR, AMAZON_FILENAME_VBR, ER_FILENAME, SUBSPLS_FILENAME, FUNI_INTRO, glob_filename
|
||||
|
||||
core = vs.core
|
||||
|
||||
@ -135,8 +135,14 @@ class AudioGetter():
|
||||
return
|
||||
|
||||
# look for amazon first
|
||||
if os.path.isfile(self.config.format_filename(AMAZON_FILENAME)):
|
||||
self.audio_file = self.config.format_filename(AMAZON_FILENAME)
|
||||
if os.path.isfile(self.config.format_filename(AMAZON_FILENAME_CBR)):
|
||||
self.audio_file = self.config.format_filename(AMAZON_FILENAME_CBR)
|
||||
self.video_src = core.ffms2.Source(self.audio_file)
|
||||
log.success("Found Amazon audio")
|
||||
return
|
||||
|
||||
if os.path.isfile(self.config.format_filename(AMAZON_FILENAME_VBR)):
|
||||
self.audio_file = self.config.format_filename(AMAZON_FILENAME_VBR)
|
||||
self.video_src = core.ffms2.Source(self.audio_file)
|
||||
log.success("Found Amazon audio")
|
||||
return
|
||||
|
@ -19,7 +19,8 @@ core = vs.core
|
||||
SUBSPLS_FILENAME: str = "[SubsPlease] {title_long} - {epnum:02d} ({resolution}p) [$GLOB].mkv"
|
||||
ER_FILENAME: str = "[Erai-raws] {title_long} - {epnum:02d} [v0][{resolution}p]$GLOB.mkv"
|
||||
FUNI_INTRO: int = 289
|
||||
AMAZON_FILENAME: str = "{title_long} - {epnum:02d} (Amazon Prime CBR {resolution}p).mkv"
|
||||
AMAZON_FILENAME_CBR: str = "{title_long} - {epnum:02d} (Amazon Prime CBR {resolution}p).mkv"
|
||||
AMAZON_FILENAME_VBR: str = "{title_long} - {epnum:02d} (Amazon Prime VBR {resolution}p).mkv"
|
||||
|
||||
|
||||
def waka_replace(src: vs.VideoNode, wakas: List[vs.VideoNode], ranges: List[List[Range]]
|
||||
@ -75,11 +76,11 @@ class FunimationSource(DehardsubFileFinder):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def get_amazon(self) -> vs.VideoNode:
|
||||
if not os.path.isfile(self.config.format_filename(AMAZON_FILENAME)):
|
||||
if not os.path.isfile(self.config.format_filename(AMAZON_FILENAME_CBR)):
|
||||
log.warn("Amazon not found, falling back to Funimation")
|
||||
raise FileNotFoundError()
|
||||
log.success("Found Amazon video")
|
||||
return core.ffms2.Source(self.config.format_filename(AMAZON_FILENAME))
|
||||
return core.ffms2.Source(self.config.format_filename(AMAZON_FILENAME_CBR))
|
||||
|
||||
def get_funi_filename(self) -> str:
|
||||
try:
|
||||
|
Loading…
x
Reference in New Issue
Block a user