55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
import vapoursynth as vs
|
|
|
|
from yt_common.config import Config
|
|
from yt_common.logging import log
|
|
from yt_common.source import FunimationSource, AMAZON_FILENAME
|
|
|
|
import os
|
|
|
|
from typing import List
|
|
|
|
TITLE: str = "Tanteidan"
|
|
TITLE_LONG: str = "Bishounen Tanteidan"
|
|
TITLE_ENG: str = "Pretty Boy Detective Club"
|
|
RESOLUTION: int = 1080
|
|
SUBGROUP: str = ""
|
|
DATAPATH: str = os.path.dirname(__file__)
|
|
|
|
WAKA_RU_FILENAME: str = f"{TITLE_ENG.replace(' ', '')}_{{epnum:02d}}_RU_HD.mp4"
|
|
WAKA_FR_FILENAME: str = f"{TITLE_ENG.replace(' ', '')}_{{epnum:02d}}_FR_HD.mp4"
|
|
WAKA_DE_FILENAME: str = f"{TITLE_ENG} E{{epnum:02d}} [{RESOLUTION}p][AAC][JapDub][GerSub][Web-DL].mkv"
|
|
|
|
|
|
core = vs.core
|
|
|
|
|
|
class PrettyConfig(Config):
|
|
def __init__(self, epnum: int) -> None:
|
|
super().__init__(
|
|
epnum,
|
|
TITLE,
|
|
TITLE_LONG,
|
|
RESOLUTION,
|
|
DATAPATH
|
|
)
|
|
|
|
|
|
class PrettySource(FunimationSource):
|
|
def get_amazon(self) -> vs.VideoNode:
|
|
# ep1 has good funi video, let's just use that
|
|
if self.config.epnum < 2:
|
|
log.success("Funi has good video for this episode, skipping Amazon.")
|
|
raise FileNotFoundError()
|
|
if not os.path.isfile(self.config.format_filename(AMAZON_FILENAME)):
|
|
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))
|
|
|
|
def get_waka_filenames(self) -> List[str]:
|
|
return [self.config.format_filename(f) for f in [
|
|
WAKA_RU_FILENAME,
|
|
WAKA_FR_FILENAME,
|
|
WAKA_DE_FILENAME,
|
|
]]
|