ytdl-sub/src/ytdl_sub/utils/scriptable.py
2023-12-13 14:23:32 -08:00

29 lines
996 B
Python

import copy
from abc import ABC
from typing import Any
from typing import Dict
from typing import Set
from ytdl_sub.entries.script.variable_scripts import UNRESOLVED_VARIABLES
from ytdl_sub.entries.script.variable_scripts import VARIABLE_SCRIPTS
from ytdl_sub.script.script import Script
from ytdl_sub.utils.script import ScriptUtils
class Scriptable(ABC):
def __init__(self):
self.script = Script(copy.deepcopy(VARIABLE_SCRIPTS))
self.unresolvable: Set[str] = copy.deepcopy(UNRESOLVED_VARIABLES)
def update_script(self) -> None:
self.script.resolve(unresolvable=self.unresolvable, update=True)
def add(self, values: Dict[str, Any]) -> None:
self.unresolvable -= set(list(values.keys()))
self.script.add(
ScriptUtils.add_sanitized_variables(
{name: ScriptUtils.to_script(value) for name, value in values.items()}
),
unresolvable=self.unresolvable,
)
self.update_script()