107 lines
3.3 KiB
Python
107 lines
3.3 KiB
Python
import re
|
|
|
|
import httpx
|
|
import yaml
|
|
|
|
from pathlib import Path
|
|
from typing import Any, Optional
|
|
|
|
from rich.console import Console
|
|
|
|
from utils.utilities import is_url
|
|
|
|
|
|
class Config:
|
|
"""Config class that gets inherited by the service"""
|
|
|
|
def __init__(
|
|
self,
|
|
config: Any,
|
|
srvc_api: Path = None,
|
|
srvc_config: Path = None,
|
|
wvd: Path = None,
|
|
url: str = None,
|
|
remote: Optional[bool] = None,
|
|
titles: Optional[bool] = None,
|
|
info: Optional[bool] = None,
|
|
quality: Optional[str] = None,
|
|
episode: Optional[str] = None,
|
|
season: Optional[str] = None,
|
|
movie: Optional[bool] = None,
|
|
complete: Optional[bool] = None,
|
|
sub_only: Optional[bool] = None,
|
|
sub_no_mux: Optional[bool] = None,
|
|
sub_no_fix: Optional[bool] = None,
|
|
select_video: Optional[str] = None,
|
|
select_audio: Optional[str] = None,
|
|
drop_video: Optional[str] = None,
|
|
drop_audio: Optional[str] = None,
|
|
select_subtitle: Optional[str] = None,
|
|
drop_subtitle: Optional[str] = None,
|
|
threads: Optional[str] = None,
|
|
format: Optional[str] = None,
|
|
muxer: Optional[str] = None,
|
|
use_shaka_packager: Optional[bool] = None,
|
|
no_mux: Optional[bool] = None,
|
|
save_dir: Optional[str] = None,
|
|
save_name: Optional[str] = None,
|
|
) -> None:
|
|
|
|
if episode and not is_url(episode):
|
|
episode = episode.upper()
|
|
if season:
|
|
season = season.upper()
|
|
|
|
if srvc_config.exists():
|
|
with open(srvc_config, "r") as f:
|
|
config.update(yaml.safe_load(f))
|
|
if "res" in config["video"]["select"]:
|
|
quality = re.search(r"res=(\d+)", config["video"]["select"]).group(1)
|
|
if "res" in select_video:
|
|
quality = re.search(r"res=(\d+)", select_video).group(1)
|
|
|
|
self.config = config
|
|
self.srvc_api = srvc_api
|
|
self.srvc_config = srvc_config
|
|
self.url = url
|
|
self.wvd = wvd
|
|
self.quality = quality
|
|
self.remote = remote
|
|
self.titles = titles
|
|
self.info = info
|
|
self.episode = episode
|
|
self.season = season
|
|
self.movie = movie
|
|
self.complete = complete
|
|
self.sub_only = sub_only
|
|
self.sub_no_mux = sub_no_mux
|
|
self.sub_no_fix = sub_no_fix
|
|
self.select_video = select_video
|
|
self.select_audio = select_audio
|
|
self.drop_video = drop_video
|
|
self.drop_audio = drop_audio
|
|
self.select_subtitle = select_subtitle
|
|
self.drop_subtitle = drop_subtitle
|
|
self.threads = threads
|
|
self.format = format
|
|
self.muxer = muxer
|
|
self.use_shaka_packager = use_shaka_packager
|
|
self.no_mux = no_mux
|
|
self.save_dir = save_dir
|
|
self.save_name = save_name
|
|
|
|
self.console = Console()
|
|
|
|
self.tmp = Path("tmp")
|
|
self.tmp.mkdir(parents=True, exist_ok=True)
|
|
|
|
self.client = httpx.Client(
|
|
headers={
|
|
"user-agent": (
|
|
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
|
|
"AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/118.0.0.0 Safari/537.36"
|
|
),
|
|
},
|
|
timeout=20.0
|
|
) |