Merge branch 'master' into j/inspect
This commit is contained in:
commit
84c3197758
26 changed files with 4408 additions and 42 deletions
|
|
@ -52,7 +52,7 @@ lint = [
|
|||
"pylint==4.0.1",
|
||||
]
|
||||
docs = [
|
||||
"sphinx>=7,<9",
|
||||
"sphinx>=7,<10",
|
||||
"sphinx-rtd-theme>=2,<4",
|
||||
"sphinx-book-theme~=1.0",
|
||||
"sphinx-copybutton~=0.5",
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ VariableT = TypeVar("VariableT", bound="Variable")
|
|||
|
||||
|
||||
def _get(
|
||||
cast: str,
|
||||
metadata_variable_name: str,
|
||||
metadata_key: str,
|
||||
variable_name: Optional[str],
|
||||
|
|
@ -47,7 +46,7 @@ def _get(
|
|||
return as_type(
|
||||
variable_name=variable_name or metadata_key,
|
||||
metadata_key=metadata_key,
|
||||
definition=f"{{ %legacy_bracket_safety(%{cast}({out})) }}",
|
||||
definition=f"{{ {out} }}",
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -182,7 +181,6 @@ class MapMetadataVariable(MetadataVariable, MapVariable):
|
|||
Creates a map variable from entry metadata
|
||||
"""
|
||||
return _get(
|
||||
"map",
|
||||
metadata_variable_name=ENTRY_METADATA_VARIABLE_NAME,
|
||||
metadata_key=metadata_key,
|
||||
variable_name=variable_name,
|
||||
|
|
@ -204,7 +202,6 @@ class ArrayMetadataVariable(MetadataVariable, ArrayVariable):
|
|||
Creates an array variable from entry metadata
|
||||
"""
|
||||
return _get(
|
||||
"array",
|
||||
metadata_variable_name=ENTRY_METADATA_VARIABLE_NAME,
|
||||
metadata_key=metadata_key,
|
||||
variable_name=variable_name,
|
||||
|
|
@ -226,7 +223,6 @@ class StringMetadataVariable(MetadataVariable, StringVariable):
|
|||
Creates a string variable from entry metadata
|
||||
"""
|
||||
return _get(
|
||||
"string",
|
||||
metadata_variable_name=ENTRY_METADATA_VARIABLE_NAME,
|
||||
metadata_key=metadata_key,
|
||||
variable_name=variable_name,
|
||||
|
|
@ -245,7 +241,6 @@ class StringMetadataVariable(MetadataVariable, StringVariable):
|
|||
Creates a string variable from playlist metadata
|
||||
"""
|
||||
return _get(
|
||||
"string",
|
||||
metadata_variable_name=PLAYLIST_METADATA_VARIABLE_NAME,
|
||||
metadata_key=metadata_key,
|
||||
variable_name=variable_name,
|
||||
|
|
@ -264,7 +259,6 @@ class StringMetadataVariable(MetadataVariable, StringVariable):
|
|||
Creates a string variable from source metadata
|
||||
"""
|
||||
return _get(
|
||||
"string",
|
||||
metadata_variable_name=SOURCE_METADATA_VARIABLE_NAME,
|
||||
metadata_key=metadata_key,
|
||||
variable_name=variable_name,
|
||||
|
|
@ -301,7 +295,6 @@ class IntegerMetadataVariable(MetadataVariable, IntegerVariable):
|
|||
Creates an int variable from entry metadata
|
||||
"""
|
||||
return _get(
|
||||
"int",
|
||||
metadata_variable_name=ENTRY_METADATA_VARIABLE_NAME,
|
||||
metadata_key=metadata_key,
|
||||
variable_name=variable_name,
|
||||
|
|
@ -320,7 +313,6 @@ class IntegerMetadataVariable(MetadataVariable, IntegerVariable):
|
|||
Creates an int variable from playlist metadata
|
||||
"""
|
||||
return _get(
|
||||
"int",
|
||||
metadata_variable_name=PLAYLIST_METADATA_VARIABLE_NAME,
|
||||
metadata_key=metadata_key,
|
||||
variable_name=variable_name,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
# pylint: disable=missing-raises-doc
|
||||
import copy
|
||||
from typing import Dict
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
|
|
@ -7,6 +8,7 @@ from typing import Set
|
|||
from ytdl_sub.script.functions import Functions
|
||||
from ytdl_sub.script.parser import parse
|
||||
from ytdl_sub.script.script_output import ScriptOutput
|
||||
from ytdl_sub.script.types.resolvable import Argument
|
||||
from ytdl_sub.script.types.resolvable import BuiltInFunctionType
|
||||
from ytdl_sub.script.types.resolvable import Lambda
|
||||
from ytdl_sub.script.types.resolvable import Resolvable
|
||||
|
|
@ -14,6 +16,7 @@ from ytdl_sub.script.types.syntax_tree import ResolvedSyntaxTree
|
|||
from ytdl_sub.script.types.syntax_tree import SyntaxTree
|
||||
from ytdl_sub.script.types.variable import FunctionArgument
|
||||
from ytdl_sub.script.types.variable import Variable
|
||||
from ytdl_sub.script.types.variable_dependency import VariableDependency
|
||||
from ytdl_sub.script.utils.exceptions import UNREACHABLE
|
||||
from ytdl_sub.script.utils.exceptions import CycleDetected
|
||||
from ytdl_sub.script.utils.exceptions import IncompatibleFunctionArguments
|
||||
|
|
@ -695,3 +698,59 @@ class Script:
|
|||
Names of all functions within the Script.
|
||||
"""
|
||||
return set(to_function_definition_name(name) for name in self._functions.keys())
|
||||
|
||||
def resolve_partial(
|
||||
self,
|
||||
unresolvable: Optional[Set[str]] = None,
|
||||
) -> "Script":
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
New (deep-copied) script that resolves inner variables as much
|
||||
as possible.
|
||||
"""
|
||||
unresolvable: Set[str] = unresolvable or {}
|
||||
resolved: Dict[Variable, Resolvable] = {}
|
||||
unresolved: Dict[Variable, Argument] = {
|
||||
Variable(name): definition
|
||||
for name, definition in self._variables.items()
|
||||
if name not in unresolvable
|
||||
}
|
||||
|
||||
partially_resolved = True
|
||||
while partially_resolved:
|
||||
|
||||
partially_resolved = False
|
||||
|
||||
for variable in list(unresolved.keys()):
|
||||
definition = unresolved[variable]
|
||||
|
||||
maybe_resolved = definition
|
||||
if isinstance(definition, Variable) and definition.name not in unresolvable:
|
||||
maybe_resolved = resolved.get(definition, unresolved[definition])
|
||||
elif isinstance(definition, VariableDependency):
|
||||
maybe_resolved = definition.partial_resolve(
|
||||
resolved_variables=resolved,
|
||||
unresolved_variables=unresolved,
|
||||
custom_functions=self._functions,
|
||||
)
|
||||
|
||||
if isinstance(maybe_resolved, Resolvable):
|
||||
resolved[variable] = maybe_resolved
|
||||
del unresolved[variable]
|
||||
partially_resolved = True
|
||||
else:
|
||||
unresolved[variable] = maybe_resolved
|
||||
|
||||
# If the definition changed, then the script changed
|
||||
# which means we can iterate again
|
||||
partially_resolved |= definition != maybe_resolved
|
||||
|
||||
return copy.deepcopy(self).add_parsed(
|
||||
{var_name: self._variables[var_name] for var_name in unresolvable}
|
||||
| {
|
||||
var.name: ResolvedSyntaxTree(ast=[definition])
|
||||
for var, definition in resolved.items()
|
||||
}
|
||||
| {var.name: SyntaxTree(ast=[definition]) for var, definition in unresolved.items()}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class UnresolvedArray(_Array, VariableDependency, FutureResolvable):
|
|||
value: List[Argument]
|
||||
|
||||
@property
|
||||
def _iterable_arguments(self) -> List[Argument]:
|
||||
def iterable_arguments(self) -> List[Argument]:
|
||||
return self.value
|
||||
|
||||
def resolve(
|
||||
|
|
@ -47,6 +47,27 @@ class UnresolvedArray(_Array, VariableDependency, FutureResolvable):
|
|||
]
|
||||
)
|
||||
|
||||
def partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, VariableDependency],
|
||||
) -> Argument | Resolvable:
|
||||
maybe_resolvable_values, is_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=self.value,
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
out = UnresolvedArray(value=maybe_resolvable_values)
|
||||
if is_resolvable:
|
||||
return out.resolve(
|
||||
resolved_variables=resolved_variables, custom_functions=custom_functions
|
||||
)
|
||||
|
||||
return out
|
||||
|
||||
def future_resolvable_type(self) -> Type[Resolvable]:
|
||||
return Array
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from dataclasses import dataclass
|
|||
from typing import Callable
|
||||
from typing import Dict
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
from typing import Type
|
||||
from typing import Union
|
||||
|
||||
|
|
@ -11,9 +12,11 @@ from ytdl_sub.script.functions import Functions
|
|||
from ytdl_sub.script.types.array import Array
|
||||
from ytdl_sub.script.types.array import UnresolvedArray
|
||||
from ytdl_sub.script.types.resolvable import Argument
|
||||
from ytdl_sub.script.types.resolvable import Boolean
|
||||
from ytdl_sub.script.types.resolvable import BuiltInFunctionType
|
||||
from ytdl_sub.script.types.resolvable import FunctionType
|
||||
from ytdl_sub.script.types.resolvable import FutureResolvable
|
||||
from ytdl_sub.script.types.resolvable import Integer
|
||||
from ytdl_sub.script.types.resolvable import Lambda
|
||||
from ytdl_sub.script.types.resolvable import NamedCustomFunction
|
||||
from ytdl_sub.script.types.resolvable import Resolvable
|
||||
|
|
@ -35,7 +38,7 @@ from ytdl_sub.script.utils.type_checking import is_union
|
|||
@dataclass(frozen=True)
|
||||
class Function(FunctionType, VariableDependency, ABC):
|
||||
@property
|
||||
def _iterable_arguments(self) -> List[Argument]:
|
||||
def iterable_arguments(self) -> List[Argument]:
|
||||
return self.args
|
||||
|
||||
|
||||
|
|
@ -84,6 +87,52 @@ class CustomFunction(Function, NamedCustomFunction):
|
|||
# been checked in the parser with
|
||||
raise UNREACHABLE
|
||||
|
||||
def partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, VariableDependency],
|
||||
) -> Argument | Resolvable:
|
||||
maybe_resolvable_args, _ = VariableDependency.try_partial_resolve(
|
||||
args=self.args,
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
for i in range(len(self.args)):
|
||||
function_arg = FunctionArgument.from_idx(idx=i, custom_function_name=self.name)
|
||||
function_value = maybe_resolvable_args[i]
|
||||
|
||||
if isinstance(function_value, Resolvable):
|
||||
resolved_variables[function_arg] = function_value
|
||||
else:
|
||||
unresolved_variables[function_arg] = function_value
|
||||
|
||||
assert len(custom_functions[self.name].iterable_arguments) == 1
|
||||
custom_function_definition = custom_functions[self.name].iterable_arguments[0]
|
||||
|
||||
maybe_resolvable_custom_function, is_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=[custom_function_definition],
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
for i in range(len(self.args)):
|
||||
function_arg = FunctionArgument.from_idx(idx=i, custom_function_name=self.name)
|
||||
|
||||
if isinstance(maybe_resolvable_args[i], Resolvable):
|
||||
del resolved_variables[function_arg]
|
||||
else:
|
||||
del unresolved_variables[function_arg]
|
||||
|
||||
if is_resolvable:
|
||||
return maybe_resolvable_custom_function[0]
|
||||
|
||||
# Did not resolve custom function arguments, do not proceed
|
||||
return CustomFunction(name=self.name, args=maybe_resolvable_args)
|
||||
|
||||
|
||||
class BuiltInFunction(Function, BuiltInFunctionType):
|
||||
def validate_args(self) -> "BuiltInFunction":
|
||||
|
|
@ -312,5 +361,133 @@ class BuiltInFunction(Function, BuiltInFunctionType):
|
|||
f"Runtime error occurred when executing the function %{self.name}: {str(exc)}"
|
||||
) from exc
|
||||
|
||||
def _partial_resolve_conditional(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, "VariableDependency"],
|
||||
):
|
||||
"""
|
||||
If the conditional partially resolvable enough to warrant evaluation,
|
||||
perform it here.
|
||||
"""
|
||||
if self.is_subset_of(
|
||||
variables=resolved_variables, custom_function_definitions=custom_functions
|
||||
):
|
||||
return self.resolve(
|
||||
resolved_variables=resolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
if self.name == "if":
|
||||
maybe_resolvable_arg, is_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=[self.args[0]],
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
if is_resolvable:
|
||||
boolean_output = maybe_resolvable_arg[0]
|
||||
assert isinstance(boolean_output, Boolean)
|
||||
return self.args[1] if boolean_output.native else self.args[2]
|
||||
|
||||
if self.name == "elif":
|
||||
for idx in range(0, len(self.args), 2):
|
||||
maybe_resolvable_arg, is_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=[self.args[idx]],
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
if is_resolvable:
|
||||
boolean_output = maybe_resolvable_arg[0]
|
||||
assert isinstance(boolean_output, Boolean)
|
||||
if boolean_output.native:
|
||||
return self.args[idx + 1]
|
||||
else:
|
||||
break
|
||||
|
||||
if self.name == "assert_then":
|
||||
maybe_resolvable_arg, is_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=[self.args[0]],
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
if is_resolvable:
|
||||
boolean_output = maybe_resolvable_arg[0]
|
||||
assert isinstance(boolean_output, Boolean)
|
||||
if boolean_output.native:
|
||||
return self.args[1]
|
||||
|
||||
return self
|
||||
|
||||
def _try_optimized_partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, "VariableDependency"],
|
||||
) -> Optional[Argument]:
|
||||
"""
|
||||
If a function has enough (but not all) resolved parameters to warrant a return,
|
||||
perform it here.
|
||||
"""
|
||||
if self.name == "array_at":
|
||||
if (
|
||||
isinstance(self.args[0], UnresolvedArray)
|
||||
and isinstance(self.args[1], Integer)
|
||||
and len(self.args[0].value) >= self.args[1].value
|
||||
):
|
||||
maybe_resolvable_values, _ = VariableDependency.try_partial_resolve(
|
||||
args=[self.args[0].value[self.args[1].value]],
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
return maybe_resolvable_values[0]
|
||||
|
||||
return None
|
||||
|
||||
def partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, VariableDependency],
|
||||
) -> Argument | Resolvable:
|
||||
conditional_return_args = self.function_spec.conditional_arg_indices(
|
||||
num_input_args=len(self.args)
|
||||
)
|
||||
|
||||
if conditional_return_args:
|
||||
return self._partial_resolve_conditional(
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
if partial_resolved := self._try_optimized_partial_resolve(
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
):
|
||||
return partial_resolved
|
||||
|
||||
maybe_resolvable_values, is_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=self.args,
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
out = BuiltInFunction(name=self.name, args=maybe_resolvable_values)
|
||||
if is_resolvable:
|
||||
return out.resolve(
|
||||
resolved_variables=resolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
return out
|
||||
|
||||
def __hash__(self):
|
||||
return hash((self.name, *self.args))
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class UnresolvedMap(_Map, VariableDependency, FutureResolvable):
|
|||
value: Dict[Argument, Argument]
|
||||
|
||||
@property
|
||||
def _iterable_arguments(self) -> List[Argument]:
|
||||
def iterable_arguments(self) -> List[Argument]:
|
||||
return list(itertools.chain(*self.value.items()))
|
||||
|
||||
def resolve(
|
||||
|
|
@ -55,6 +55,35 @@ class UnresolvedMap(_Map, VariableDependency, FutureResolvable):
|
|||
|
||||
return Map(output)
|
||||
|
||||
def partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, VariableDependency],
|
||||
) -> Argument | Resolvable:
|
||||
maybe_resolvable_keys, is_keys_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=self.value.keys(),
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
maybe_resolvable_values, is_values_resolvable = VariableDependency.try_partial_resolve(
|
||||
args=self.value.values(),
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
out = UnresolvedMap(value=dict(zip(maybe_resolvable_keys, maybe_resolvable_values)))
|
||||
if is_keys_resolvable and is_values_resolvable:
|
||||
return out.resolve(
|
||||
resolved_variables=resolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
return out
|
||||
|
||||
def future_resolvable_type(self) -> Type[Resolvable]:
|
||||
return Map
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from typing import Dict
|
|||
from typing import List
|
||||
from typing import Optional
|
||||
|
||||
from ytdl_sub.script.types.function import BuiltInFunction
|
||||
from ytdl_sub.script.types.resolvable import Argument
|
||||
from ytdl_sub.script.types.resolvable import Resolvable
|
||||
from ytdl_sub.script.types.resolvable import String
|
||||
|
|
@ -15,7 +16,7 @@ class SyntaxTree(VariableDependency):
|
|||
ast: List[Argument]
|
||||
|
||||
@property
|
||||
def _iterable_arguments(self) -> List[Argument]:
|
||||
def iterable_arguments(self) -> List[Argument]:
|
||||
return self.ast
|
||||
|
||||
def resolve(
|
||||
|
|
@ -40,6 +41,26 @@ class SyntaxTree(VariableDependency):
|
|||
# Otherwise, to concat multiple resolved outputs, we must concat as strings
|
||||
return String("".join([str(res) for res in resolved]))
|
||||
|
||||
def partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, VariableDependency],
|
||||
) -> Argument | Resolvable:
|
||||
# Ensure this does not get returned as a SyntaxTree since nesting them is not supported.
|
||||
maybe_resolvable_values, _ = VariableDependency.try_partial_resolve(
|
||||
args=self.ast,
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
# Mimic the above resolve behavior
|
||||
if len(maybe_resolvable_values) > 1:
|
||||
return BuiltInFunction(name="concat", args=maybe_resolvable_values)
|
||||
|
||||
return maybe_resolvable_values[0]
|
||||
|
||||
@property
|
||||
def maybe_resolvable(self) -> Optional[Resolvable]:
|
||||
"""
|
||||
|
|
@ -76,3 +97,11 @@ class ResolvedSyntaxTree(SyntaxTree):
|
|||
@property
|
||||
def maybe_resolvable(self) -> Optional[Resolvable]:
|
||||
return self.ast[0]
|
||||
|
||||
def partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, VariableDependency],
|
||||
) -> Argument | Resolvable:
|
||||
return self.ast[0]
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from typing import Dict
|
|||
from typing import Iterable
|
||||
from typing import List
|
||||
from typing import Set
|
||||
from typing import Tuple
|
||||
from typing import Type
|
||||
from typing import TypeVar
|
||||
from typing import final
|
||||
|
|
@ -27,7 +28,7 @@ TypeT = TypeVar("TypeT")
|
|||
class VariableDependency(ABC):
|
||||
@property
|
||||
@abstractmethod
|
||||
def _iterable_arguments(self) -> List[Argument]:
|
||||
def iterable_arguments(self) -> List[Argument]:
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
|
|
@ -38,7 +39,7 @@ class VariableDependency(ABC):
|
|||
self, ttype: Type[TypeT], subclass: bool = False, instance: bool = True
|
||||
) -> List[TypeT]:
|
||||
output: List[TypeT] = []
|
||||
for arg in self._iterable_arguments:
|
||||
for arg in self.iterable_arguments:
|
||||
if subclass and issubclass(type(arg), ttype):
|
||||
output.append(arg)
|
||||
elif instance and isinstance(arg, ttype):
|
||||
|
|
@ -104,7 +105,7 @@ class VariableDependency(ABC):
|
|||
All CustomFunctions that this depends on.
|
||||
"""
|
||||
output: Set[ParsedCustomFunction] = set()
|
||||
for arg in self._iterable_arguments:
|
||||
for arg in self.iterable_arguments:
|
||||
if isinstance(arg, NamedCustomFunction):
|
||||
if not isinstance(arg, FunctionType):
|
||||
# A NamedCustomFunction should also always be a FunctionType
|
||||
|
|
@ -138,6 +139,28 @@ class VariableDependency(ABC):
|
|||
Resolved value
|
||||
"""
|
||||
|
||||
@abstractmethod
|
||||
def partial_resolve(
|
||||
self,
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, "VariableDependency"],
|
||||
) -> Argument | Resolvable:
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
resolved_variables
|
||||
Lookup of variables that have been resolved
|
||||
unresolved_variables
|
||||
Lookup of variables that have not been resolved
|
||||
custom_functions
|
||||
Lookup of any custom functions that have been parsed
|
||||
|
||||
Returns
|
||||
-------
|
||||
Either a fully resolved value or partially resolved value of the same type.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def _resolve_argument_type(
|
||||
cls,
|
||||
|
|
@ -222,3 +245,43 @@ class VariableDependency(ABC):
|
|||
):
|
||||
return True
|
||||
return len(self.variables.intersection(variables)) > 0
|
||||
|
||||
@classmethod
|
||||
def try_partial_resolve(
|
||||
cls,
|
||||
args: Iterable[Argument],
|
||||
resolved_variables: Dict[Variable, Resolvable],
|
||||
unresolved_variables: Dict[Variable, Argument],
|
||||
custom_functions: Dict[str, "VariableDependency"],
|
||||
) -> Tuple[List[Argument], bool]:
|
||||
"""
|
||||
Attempts to resolve a list of arguments. Returns a tuple of them post partially resolved,
|
||||
and a boolean indicating whether all of them are fully resolved.
|
||||
"""
|
||||
maybe_resolvable_args: List[Argument] = []
|
||||
is_resolvable = True
|
||||
for arg in args:
|
||||
maybe_resolvable_args.append(arg)
|
||||
|
||||
if isinstance(arg, Lambda) and arg.value in custom_functions:
|
||||
if not custom_functions[arg.value].is_subset_of(
|
||||
variables=resolved_variables,
|
||||
custom_function_definitions=custom_functions,
|
||||
):
|
||||
is_resolvable = False
|
||||
elif isinstance(arg, VariableDependency):
|
||||
maybe_resolvable_args[-1] = arg.partial_resolve(
|
||||
resolved_variables=resolved_variables,
|
||||
unresolved_variables=unresolved_variables,
|
||||
custom_functions=custom_functions,
|
||||
)
|
||||
|
||||
if not isinstance(maybe_resolvable_args[-1], Resolvable):
|
||||
is_resolvable = False
|
||||
elif isinstance(arg, Variable):
|
||||
if arg not in resolved_variables:
|
||||
is_resolvable = False
|
||||
if arg in unresolved_variables:
|
||||
maybe_resolvable_args[-1] = unresolved_variables[arg]
|
||||
|
||||
return maybe_resolvable_args, is_resolvable
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@ import json
|
|||
import re
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
from typing import Optional
|
||||
|
||||
from ytdl_sub.script.parser import parse
|
||||
from ytdl_sub.script.types.array import Array
|
||||
from ytdl_sub.script.types.array import UnresolvedArray
|
||||
from ytdl_sub.script.types.function import BuiltInFunction
|
||||
from ytdl_sub.script.types.function import Function
|
||||
from ytdl_sub.script.types.map import Map
|
||||
from ytdl_sub.script.types.map import UnresolvedMap
|
||||
from ytdl_sub.script.types.resolvable import Argument
|
||||
from ytdl_sub.script.types.resolvable import Boolean
|
||||
|
|
@ -105,6 +108,19 @@ class ScriptUtils:
|
|||
|
||||
raise UNREACHABLE
|
||||
|
||||
@classmethod
|
||||
def _get_quote_char(cls, arg: str) -> str:
|
||||
contains_single_quote = "'" in arg
|
||||
contains_double_quote = '"' in arg
|
||||
|
||||
if not contains_single_quote and not contains_double_quote:
|
||||
return '"'
|
||||
if not contains_single_quote and contains_double_quote:
|
||||
return "'"
|
||||
if contains_single_quote and not contains_double_quote:
|
||||
return '"'
|
||||
return "'''"
|
||||
|
||||
@classmethod
|
||||
def _to_script_code(cls, arg: Argument, top_level: bool = False) -> str:
|
||||
if not top_level and isinstance(arg, (Integer, Boolean, Float)):
|
||||
|
|
@ -114,18 +130,7 @@ class ScriptUtils:
|
|||
if arg.native == "":
|
||||
return "" if top_level else "''"
|
||||
|
||||
contains_single_quote = "'" in arg.native
|
||||
contains_double_quote = '"' in arg.native
|
||||
|
||||
if not contains_single_quote and not contains_double_quote:
|
||||
quote = '"'
|
||||
elif not contains_single_quote and contains_double_quote:
|
||||
quote = "'"
|
||||
elif contains_single_quote and not contains_double_quote:
|
||||
quote = '"'
|
||||
else:
|
||||
quote = "'''"
|
||||
|
||||
quote = cls._get_quote_char(arg.native)
|
||||
return arg.native if top_level else f"{quote}{arg.native}{quote}"
|
||||
|
||||
if isinstance(arg, Integer):
|
||||
|
|
@ -134,9 +139,9 @@ class ScriptUtils:
|
|||
out = f"%bool({arg.native})"
|
||||
elif isinstance(arg, Float):
|
||||
out = f"%float({arg.native})"
|
||||
elif isinstance(arg, UnresolvedArray):
|
||||
elif isinstance(arg, (Array, UnresolvedArray)):
|
||||
out = f"[ {', '.join(cls._to_script_code(val) for val in arg.value)} ]"
|
||||
elif isinstance(arg, UnresolvedMap):
|
||||
elif isinstance(arg, (Map, UnresolvedMap)):
|
||||
kv_list = (
|
||||
f"{cls._to_script_code(key)}: {cls._to_script_code(val)}"
|
||||
for key, val in arg.value.items()
|
||||
|
|
@ -152,11 +157,43 @@ class ScriptUtils:
|
|||
raise UNREACHABLE
|
||||
return f"{{ {out} }}" if top_level else out
|
||||
|
||||
@classmethod
|
||||
def _is_top_level_string(cls, tree: SyntaxTree) -> Optional[str]:
|
||||
if not (
|
||||
len(tree.ast) == 1
|
||||
and isinstance(tree.ast[0], BuiltInFunction)
|
||||
and tree.ast[0].name == "concat"
|
||||
):
|
||||
return None
|
||||
|
||||
output = ""
|
||||
for arg in tree.ast[0].args:
|
||||
if isinstance(arg, BuiltInFunction) and arg.name == "string" and len(arg.args) == 1:
|
||||
output += cls._to_script_code(arg.args[0], top_level=True)
|
||||
else:
|
||||
output += cls._to_script_code(arg, top_level=True)
|
||||
|
||||
return output
|
||||
|
||||
@classmethod
|
||||
def _syntax_tree_to_native_script(cls, tree: SyntaxTree) -> str:
|
||||
|
||||
if (output := cls._is_top_level_string(tree)) is not None:
|
||||
return output
|
||||
|
||||
output = ""
|
||||
for arg in tree.ast:
|
||||
output += cls._to_script_code(arg, top_level=True)
|
||||
return output
|
||||
|
||||
@classmethod
|
||||
def to_native_script(cls, value: Any) -> str:
|
||||
"""
|
||||
Converts any JSON-compatible value into equivalent script syntax
|
||||
"""
|
||||
if isinstance(value, SyntaxTree):
|
||||
return cls._syntax_tree_to_native_script(value)
|
||||
|
||||
return cls._to_script_code(cls._to_script_argument(value), top_level=True)
|
||||
|
||||
@classmethod
|
||||
|
|
|
|||
|
|
@ -1,18 +1,37 @@
|
|||
import json
|
||||
import os
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from typing import Dict
|
||||
|
||||
DISABLE_YOUTUBE_TESTS: bool = True
|
||||
REGENERATE_FIXTURES: bool = False
|
||||
|
||||
RESOURCE_PATH: Path = Path("tests") / "resources"
|
||||
_FILE_FIXTURE_PATH: Path = RESOURCE_PATH / "file_fixtures"
|
||||
_EXPECTED_JSON_PATH: Path = RESOURCE_PATH / "expected_json"
|
||||
|
||||
|
||||
def file_fixture_path(fixture_name: str) -> Path:
|
||||
return _FILE_FIXTURE_PATH / fixture_name
|
||||
|
||||
|
||||
def expected_json(input_json: Dict, json_name: str) -> Dict:
|
||||
expected_json_path = _EXPECTED_JSON_PATH / json_name
|
||||
os.makedirs(os.path.dirname(expected_json_path), exist_ok=True)
|
||||
|
||||
if REGENERATE_FIXTURES:
|
||||
with open(expected_json_path, "w", encoding="utf-8") as json_file:
|
||||
json.dump(input_json, json_file, sort_keys=True, indent=2)
|
||||
|
||||
return input_json
|
||||
|
||||
with open(expected_json_path, "r", encoding="utf-8") as json_file:
|
||||
expected_json = json.load(json_file)
|
||||
|
||||
return expected_json
|
||||
|
||||
|
||||
def copy_file_fixture(fixture_name: str, output_file_path: Path) -> None:
|
||||
os.makedirs(os.path.dirname(output_file_path), exist_ok=True)
|
||||
shutil.copy(file_fixture_path(fixture_name), output_file_path)
|
||||
|
|
|
|||
137
tests/resources/expected_json/music/inspect_full_overrides.json
Normal file
137
tests/resources/expected_json/music/inspect_full_overrides.json
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
{
|
||||
"album_cover_path": "Lester Young/{ %concat( \"[\", %string( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ), \"] \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }/folder.jpg",
|
||||
"album_dir": "[{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) }] { %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"artist_dir": "Lester Young",
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"include_sibling_metadata": "{ %bool(True) }",
|
||||
"modified_webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"music_directory": "tv_show_directory_path",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_readable": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }x{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }",
|
||||
"subscription_indent_1": "Jazz",
|
||||
"subscription_value": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"subscription_value_1": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"track_album": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"track_album_artist": "Lester Young",
|
||||
"track_artist": "Lester Young",
|
||||
"track_date": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"track_file_name": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) } - { %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }.{ ext }",
|
||||
"track_full_path": "Lester Young/{ %concat( \"[\", %string( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ), \"] \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }/{ %concat( %string( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ), \" - \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ), \".\", %string( ext ) ) }",
|
||||
"track_genre": "Jazz",
|
||||
"track_genre_default": "Unset",
|
||||
"track_number": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"track_number_padded": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) }",
|
||||
"track_original_date": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"track_title": "{ %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"track_total": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"track_year": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) }",
|
||||
"url": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url11": "",
|
||||
"url12": "",
|
||||
"url13": "",
|
||||
"url14": "",
|
||||
"url15": "",
|
||||
"url16": "",
|
||||
"url17": "",
|
||||
"url18": "",
|
||||
"url19": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url21": "",
|
||||
"url22": "",
|
||||
"url23": "",
|
||||
"url24": "",
|
||||
"url25": "",
|
||||
"url26": "",
|
||||
"url27": "",
|
||||
"url28": "",
|
||||
"url29": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url31": "",
|
||||
"url32": "",
|
||||
"url33": "",
|
||||
"url34": "",
|
||||
"url35": "",
|
||||
"url36": "",
|
||||
"url37": "",
|
||||
"url38": "",
|
||||
"url39": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url41": "",
|
||||
"url42": "",
|
||||
"url43": "",
|
||||
"url44": "",
|
||||
"url45": "",
|
||||
"url46": "",
|
||||
"url47": "",
|
||||
"url48": "",
|
||||
"url49": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url51": "",
|
||||
"url52": "",
|
||||
"url53": "",
|
||||
"url54": "",
|
||||
"url55": "",
|
||||
"url56": "",
|
||||
"url57": "",
|
||||
"url58": "",
|
||||
"url59": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url61": "",
|
||||
"url62": "",
|
||||
"url63": "",
|
||||
"url64": "",
|
||||
"url65": "",
|
||||
"url66": "",
|
||||
"url67": "",
|
||||
"url68": "",
|
||||
"url69": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url71": "",
|
||||
"url72": "",
|
||||
"url73": "",
|
||||
"url74": "",
|
||||
"url75": "",
|
||||
"url76": "",
|
||||
"url77": "",
|
||||
"url78": "",
|
||||
"url79": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url81": "",
|
||||
"url82": "",
|
||||
"url83": "",
|
||||
"url84": "",
|
||||
"url85": "",
|
||||
"url86": "",
|
||||
"url87": "",
|
||||
"url88": "",
|
||||
"url89": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url91": "",
|
||||
"url92": "",
|
||||
"url93": "",
|
||||
"url94": "",
|
||||
"url95": "",
|
||||
"url96": "",
|
||||
"url97": "",
|
||||
"url98": "",
|
||||
"url99": "",
|
||||
"urls": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }"
|
||||
}
|
||||
482
tests/resources/expected_json/music/inspect_full_variables.json
Normal file
482
tests/resources/expected_json/music/inspect_full_variables.json
Normal file
|
|
@ -0,0 +1,482 @@
|
|||
{
|
||||
"album_cover_path": "Lester Young/{ %concat( \"[\", %string( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ), \"] \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }/folder.jpg",
|
||||
"album_cover_path_sanitized": "{ %sanitize( %concat( \"Lester Young\", \"/\", %string( %concat( \"[\", %string( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ), \"] \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) ), \"/folder.\", \"jpg\" ) ) }",
|
||||
"album_dir": "[{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) }] { %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"album_dir_sanitized": "{ %sanitize( %concat( \"[\", %string( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ), \"] \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) ) }",
|
||||
"artist_dir": "Lester Young",
|
||||
"artist_dir_sanitized": "Lester Young",
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"avatar_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"channel": "{ %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"channel_id": "{ %map_get_non_empty( entry_metadata, \"channel_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"channel_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"channel_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"channel_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"chapters": "{ [ ] }",
|
||||
"chapters_sanitized": "[]",
|
||||
"comments": "{ [ ] }",
|
||||
"comments_sanitized": "[]",
|
||||
"creator": "{ %map_get_non_empty( entry_metadata, \"creator\", %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"creator_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"creator\", %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"description": "{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"description_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"description\", '' ) ) }",
|
||||
"download_index": "{ %int(1) }",
|
||||
"download_index_padded6": "000001",
|
||||
"download_index_padded6_sanitized": "000001",
|
||||
"download_index_sanitized": "1",
|
||||
"duration": "{ %map_get_non_empty( entry_metadata, \"duration\", 0 ) }",
|
||||
"duration_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"duration\", 0 ) ) }",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_resolution_assert_sanitized": "true",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"enable_throttle_protection_sanitized": "true",
|
||||
"entry_metadata": "{ { } }",
|
||||
"entry_metadata_sanitized": "{ %sanitize( entry_metadata ) }",
|
||||
"epoch": "{ %map_get( entry_metadata, \"epoch\" ) }",
|
||||
"epoch_date": "{ %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) }",
|
||||
"epoch_date_sanitized": "{ %sanitize( %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) }",
|
||||
"epoch_hour": "{ %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%H\" ) }",
|
||||
"epoch_hour_sanitized": "{ %sanitize( %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%H\" ) ) }",
|
||||
"epoch_sanitized": "{ %sanitize( %map_get( entry_metadata, \"epoch\" ) ) }",
|
||||
"ext": "{ %throw( \"Plugin variable ext has not been created yet\" ) }",
|
||||
"ext_sanitized": "{ %sanitize( ext ) }",
|
||||
"extractor": "{ %map_get( entry_metadata, \"extractor\" ) }",
|
||||
"extractor_key": "{ %map_get( entry_metadata, \"extractor_key\" ) }",
|
||||
"extractor_key_sanitized": "{ %sanitize( %map_get( entry_metadata, \"extractor_key\" ) ) }",
|
||||
"extractor_sanitized": "{ %sanitize( %map_get( entry_metadata, \"extractor\" ) ) }",
|
||||
"height": "{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"height_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"height\", 0 ) ) }",
|
||||
"ie_key": "{ %map_get_non_empty( entry_metadata, \"ie_key\", %map_get( entry_metadata, \"extractor_key\" ) ) }",
|
||||
"ie_key_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"ie_key\", %map_get( entry_metadata, \"extractor_key\" ) ) ) }",
|
||||
"include_sibling_metadata": "{ %bool(True) }",
|
||||
"include_sibling_metadata_sanitized": "true",
|
||||
"info_json_ext": "info.json",
|
||||
"info_json_ext_sanitized": "info.json",
|
||||
"modified_webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"modified_webpage_url_sanitized": "{ %sanitize( %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"music_directory": "tv_show_directory_path",
|
||||
"music_directory_sanitized": "tv_show_directory_path",
|
||||
"playlist_count": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"playlist_count_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) ) }",
|
||||
"playlist_description": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) }",
|
||||
"playlist_description_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) }",
|
||||
"playlist_index": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"playlist_index_padded": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) }",
|
||||
"playlist_index_padded6": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 6 ) }",
|
||||
"playlist_index_padded6_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 6 ) ) }",
|
||||
"playlist_index_padded_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ) }",
|
||||
"playlist_index_reversed": "{ %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ) }",
|
||||
"playlist_index_reversed_padded": "{ %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 2 ) }",
|
||||
"playlist_index_reversed_padded6": "{ %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 6 ) }",
|
||||
"playlist_index_reversed_padded6_sanitized": "{ %sanitize( %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 6 ) ) }",
|
||||
"playlist_index_reversed_padded_sanitized": "{ %sanitize( %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 2 ) ) }",
|
||||
"playlist_index_reversed_sanitized": "{ %sanitize( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ) ) }",
|
||||
"playlist_index_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) ) }",
|
||||
"playlist_max_upload_date": "{ %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) }",
|
||||
"playlist_max_upload_date_sanitized": "{ %sanitize( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ) }",
|
||||
"playlist_max_upload_year": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) }",
|
||||
"playlist_max_upload_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ) }",
|
||||
"playlist_max_upload_year_truncated": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year_truncated\" ) ) }",
|
||||
"playlist_max_upload_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year_truncated\" ) ) ) }",
|
||||
"playlist_metadata": "{ %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) }",
|
||||
"playlist_metadata_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) ) }",
|
||||
"playlist_title": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_title_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uid": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"playlist_uid_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_uploader": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uploader_id": "{ %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uploader_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"playlist_uploader_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"playlist_uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"playlist_webpage_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"playlist_webpage_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"release_date": "{ %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) }",
|
||||
"release_date_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ) }",
|
||||
"release_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"date_standardized\" ) ) }",
|
||||
"release_date_standardized_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"release_day": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day\" ) ) }",
|
||||
"release_day_of_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year\" ) ) }",
|
||||
"release_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_padded\" ) ) }",
|
||||
"release_day_of_year_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_padded\" ) ) ) }",
|
||||
"release_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed\" ) ) }",
|
||||
"release_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"release_day_of_year_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed_padded\" ) ) ) }",
|
||||
"release_day_of_year_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed\" ) ) ) }",
|
||||
"release_day_of_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year\" ) ) ) }",
|
||||
"release_day_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_padded\" ) ) }",
|
||||
"release_day_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_padded\" ) ) ) }",
|
||||
"release_day_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed\" ) ) }",
|
||||
"release_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed_padded\" ) ) }",
|
||||
"release_day_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed_padded\" ) ) ) }",
|
||||
"release_day_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed\" ) ) ) }",
|
||||
"release_day_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day\" ) ) ) }",
|
||||
"release_month": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month\" ) ) }",
|
||||
"release_month_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_padded\" ) ) }",
|
||||
"release_month_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_padded\" ) ) ) }",
|
||||
"release_month_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed\" ) ) }",
|
||||
"release_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed_padded\" ) ) }",
|
||||
"release_month_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed_padded\" ) ) ) }",
|
||||
"release_month_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed\" ) ) ) }",
|
||||
"release_month_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month\" ) ) ) }",
|
||||
"release_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year\" ) ) }",
|
||||
"release_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year\" ) ) ) }",
|
||||
"release_year_truncated": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated\" ) ) }",
|
||||
"release_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated_reversed\" ) ) }",
|
||||
"release_year_truncated_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated_reversed\" ) ) ) }",
|
||||
"release_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated\" ) ) ) }",
|
||||
"requested_subtitles": "{ { } }",
|
||||
"requested_subtitles_sanitized": "{}",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_height_gte_sanitized": "361",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_ignore_titles_sanitized": "[]",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_is_ignored_sanitized": "{ %sanitize( %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_assert_print_sanitized": "true",
|
||||
"resolution_assert_sanitized": "{ %sanitize( %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) ) }",
|
||||
"resolution_readable": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }x{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"resolution_readable_sanitized": "{ %sanitize( %concat( %string( %map_get_non_empty( entry_metadata, \"width\", 0 ) ), \"x\", %string( %map_get_non_empty( entry_metadata, \"height\", 0 ) ) ) ) }",
|
||||
"sibling_metadata": "{ %map_get_non_empty( entry_metadata, \"sibling_metadata\", [ ] ) }",
|
||||
"sibling_metadata_sanitized": "{ %sanitize( sibling_metadata ) }",
|
||||
"source_count": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_count\", 1 ) }",
|
||||
"source_count_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_count\", 1 ) ) }",
|
||||
"source_description": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"description\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) }",
|
||||
"source_description_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"description\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) ) }",
|
||||
"source_index": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ) }",
|
||||
"source_index_padded": "{ %pad_zero( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ), 2 ) }",
|
||||
"source_index_padded_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ), 2 ) ) }",
|
||||
"source_index_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ) ) }",
|
||||
"source_metadata": "{ %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) }",
|
||||
"source_metadata_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) ) }",
|
||||
"source_title": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"title\", %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_title_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"title\", %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uid": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"id\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"source_uid_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"id\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_uploader": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uploader_id": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_id\", %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_id\", %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uploader_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"source_uploader_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) }",
|
||||
"source_uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) ) }",
|
||||
"source_webpage_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"source_webpage_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) }",
|
||||
"sponsorblock_chapters": "{ [ ] }",
|
||||
"sponsorblock_chapters_sanitized": "[]",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }",
|
||||
"subscription_array_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists\uff02]",
|
||||
"subscription_has_download_archive": "{ %bool(False) }",
|
||||
"subscription_has_download_archive_sanitized": "false",
|
||||
"subscription_indent_1": "Jazz",
|
||||
"subscription_indent_1_sanitized": "Jazz",
|
||||
"subscription_name": "Lester Young",
|
||||
"subscription_name_sanitized": "Lester Young",
|
||||
"subscription_value": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"subscription_value_1": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"subscription_value_1_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists",
|
||||
"subscription_value_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists",
|
||||
"thumbnail_ext": "jpg",
|
||||
"thumbnail_ext_sanitized": "jpg",
|
||||
"title": "{ %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"title_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"title_sanitized_plex": "{ %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"title_sanitized_plex_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"track_album": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"track_album_artist": "Lester Young",
|
||||
"track_album_artist_sanitized": "Lester Young",
|
||||
"track_album_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"track_artist": "Lester Young",
|
||||
"track_artist_sanitized": "Lester Young",
|
||||
"track_date": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"track_date_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"track_file_name": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) } - { %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }.{ ext }",
|
||||
"track_file_name_sanitized": "{ %sanitize( %concat( %string( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ), \" - \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ), \".\", %string( ext ) ) ) }",
|
||||
"track_full_path": "Lester Young/{ %concat( \"[\", %string( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ), \"] \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }/{ %concat( %string( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ), \" - \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ), \".\", %string( ext ) ) }",
|
||||
"track_full_path_sanitized": "{ %sanitize( %concat( \"Lester Young\", \"/\", %string( %concat( \"[\", %string( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ), \"] \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) ), \"/\", %string( %concat( %string( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ), \" - \", %string( %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ), \".\", %string( ext ) ) ) ) ) }",
|
||||
"track_genre": "Jazz",
|
||||
"track_genre_default": "Unset",
|
||||
"track_genre_default_sanitized": "Unset",
|
||||
"track_genre_sanitized": "Jazz",
|
||||
"track_number": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"track_number_padded": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) }",
|
||||
"track_number_padded_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ) }",
|
||||
"track_number_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) ) }",
|
||||
"track_original_date": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"track_original_date_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"track_title": "{ %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"track_title_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"track_total": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"track_total_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) ) }",
|
||||
"track_year": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) }",
|
||||
"track_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ) }",
|
||||
"uid": "{ %map_get( entry_metadata, \"id\" ) }",
|
||||
"uid_sanitized": "{ %sanitize( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uid_sanitized_plex": "{ %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uid_sanitized_plex_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"upload_date": "{ %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) }",
|
||||
"upload_date_index": "{ %int(1) }",
|
||||
"upload_date_index_padded": "01",
|
||||
"upload_date_index_padded_sanitized": "01",
|
||||
"upload_date_index_reversed": "{ %int(99) }",
|
||||
"upload_date_index_reversed_padded": "99",
|
||||
"upload_date_index_reversed_padded_sanitized": "99",
|
||||
"upload_date_index_reversed_sanitized": "99",
|
||||
"upload_date_index_sanitized": "1",
|
||||
"upload_date_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) }",
|
||||
"upload_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"upload_date_standardized_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"upload_day": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day\" ) ) }",
|
||||
"upload_day_of_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year\" ) ) }",
|
||||
"upload_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_padded\" ) ) }",
|
||||
"upload_day_of_year_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_padded\" ) ) ) }",
|
||||
"upload_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed_padded\" ) ) ) }",
|
||||
"upload_day_of_year_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed\" ) ) ) }",
|
||||
"upload_day_of_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year\" ) ) ) }",
|
||||
"upload_day_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ) }",
|
||||
"upload_day_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ) ) }",
|
||||
"upload_day_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed\" ) ) }",
|
||||
"upload_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed_padded\" ) ) }",
|
||||
"upload_day_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed_padded\" ) ) ) }",
|
||||
"upload_day_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed\" ) ) ) }",
|
||||
"upload_day_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day\" ) ) ) }",
|
||||
"upload_month": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) }",
|
||||
"upload_month_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_padded\" ) ) }",
|
||||
"upload_month_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_padded\" ) ) ) }",
|
||||
"upload_month_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed\" ) ) }",
|
||||
"upload_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed_padded\" ) ) }",
|
||||
"upload_month_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed_padded\" ) ) ) }",
|
||||
"upload_month_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed\" ) ) ) }",
|
||||
"upload_month_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) ) }",
|
||||
"upload_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"upload_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) }",
|
||||
"upload_year_truncated": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated\" ) ) }",
|
||||
"upload_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated_reversed\" ) ) }",
|
||||
"upload_year_truncated_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated_reversed\" ) ) ) }",
|
||||
"upload_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated\" ) ) ) }",
|
||||
"uploader": "{ %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"uploader_id": "{ %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"uploader_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"uploader_url": "{ %map_get_non_empty( entry_metadata, \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"url": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url100_sanitized": "",
|
||||
"url10_sanitized": "",
|
||||
"url11": "",
|
||||
"url11_sanitized": "",
|
||||
"url12": "",
|
||||
"url12_sanitized": "",
|
||||
"url13": "",
|
||||
"url13_sanitized": "",
|
||||
"url14": "",
|
||||
"url14_sanitized": "",
|
||||
"url15": "",
|
||||
"url15_sanitized": "",
|
||||
"url16": "",
|
||||
"url16_sanitized": "",
|
||||
"url17": "",
|
||||
"url17_sanitized": "",
|
||||
"url18": "",
|
||||
"url18_sanitized": "",
|
||||
"url19": "",
|
||||
"url19_sanitized": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url20_sanitized": "",
|
||||
"url21": "",
|
||||
"url21_sanitized": "",
|
||||
"url22": "",
|
||||
"url22_sanitized": "",
|
||||
"url23": "",
|
||||
"url23_sanitized": "",
|
||||
"url24": "",
|
||||
"url24_sanitized": "",
|
||||
"url25": "",
|
||||
"url25_sanitized": "",
|
||||
"url26": "",
|
||||
"url26_sanitized": "",
|
||||
"url27": "",
|
||||
"url27_sanitized": "",
|
||||
"url28": "",
|
||||
"url28_sanitized": "",
|
||||
"url29": "",
|
||||
"url29_sanitized": "",
|
||||
"url2_sanitized": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url30_sanitized": "",
|
||||
"url31": "",
|
||||
"url31_sanitized": "",
|
||||
"url32": "",
|
||||
"url32_sanitized": "",
|
||||
"url33": "",
|
||||
"url33_sanitized": "",
|
||||
"url34": "",
|
||||
"url34_sanitized": "",
|
||||
"url35": "",
|
||||
"url35_sanitized": "",
|
||||
"url36": "",
|
||||
"url36_sanitized": "",
|
||||
"url37": "",
|
||||
"url37_sanitized": "",
|
||||
"url38": "",
|
||||
"url38_sanitized": "",
|
||||
"url39": "",
|
||||
"url39_sanitized": "",
|
||||
"url3_sanitized": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url40_sanitized": "",
|
||||
"url41": "",
|
||||
"url41_sanitized": "",
|
||||
"url42": "",
|
||||
"url42_sanitized": "",
|
||||
"url43": "",
|
||||
"url43_sanitized": "",
|
||||
"url44": "",
|
||||
"url44_sanitized": "",
|
||||
"url45": "",
|
||||
"url45_sanitized": "",
|
||||
"url46": "",
|
||||
"url46_sanitized": "",
|
||||
"url47": "",
|
||||
"url47_sanitized": "",
|
||||
"url48": "",
|
||||
"url48_sanitized": "",
|
||||
"url49": "",
|
||||
"url49_sanitized": "",
|
||||
"url4_sanitized": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url50_sanitized": "",
|
||||
"url51": "",
|
||||
"url51_sanitized": "",
|
||||
"url52": "",
|
||||
"url52_sanitized": "",
|
||||
"url53": "",
|
||||
"url53_sanitized": "",
|
||||
"url54": "",
|
||||
"url54_sanitized": "",
|
||||
"url55": "",
|
||||
"url55_sanitized": "",
|
||||
"url56": "",
|
||||
"url56_sanitized": "",
|
||||
"url57": "",
|
||||
"url57_sanitized": "",
|
||||
"url58": "",
|
||||
"url58_sanitized": "",
|
||||
"url59": "",
|
||||
"url59_sanitized": "",
|
||||
"url5_sanitized": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url60_sanitized": "",
|
||||
"url61": "",
|
||||
"url61_sanitized": "",
|
||||
"url62": "",
|
||||
"url62_sanitized": "",
|
||||
"url63": "",
|
||||
"url63_sanitized": "",
|
||||
"url64": "",
|
||||
"url64_sanitized": "",
|
||||
"url65": "",
|
||||
"url65_sanitized": "",
|
||||
"url66": "",
|
||||
"url66_sanitized": "",
|
||||
"url67": "",
|
||||
"url67_sanitized": "",
|
||||
"url68": "",
|
||||
"url68_sanitized": "",
|
||||
"url69": "",
|
||||
"url69_sanitized": "",
|
||||
"url6_sanitized": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url70_sanitized": "",
|
||||
"url71": "",
|
||||
"url71_sanitized": "",
|
||||
"url72": "",
|
||||
"url72_sanitized": "",
|
||||
"url73": "",
|
||||
"url73_sanitized": "",
|
||||
"url74": "",
|
||||
"url74_sanitized": "",
|
||||
"url75": "",
|
||||
"url75_sanitized": "",
|
||||
"url76": "",
|
||||
"url76_sanitized": "",
|
||||
"url77": "",
|
||||
"url77_sanitized": "",
|
||||
"url78": "",
|
||||
"url78_sanitized": "",
|
||||
"url79": "",
|
||||
"url79_sanitized": "",
|
||||
"url7_sanitized": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url80_sanitized": "",
|
||||
"url81": "",
|
||||
"url81_sanitized": "",
|
||||
"url82": "",
|
||||
"url82_sanitized": "",
|
||||
"url83": "",
|
||||
"url83_sanitized": "",
|
||||
"url84": "",
|
||||
"url84_sanitized": "",
|
||||
"url85": "",
|
||||
"url85_sanitized": "",
|
||||
"url86": "",
|
||||
"url86_sanitized": "",
|
||||
"url87": "",
|
||||
"url87_sanitized": "",
|
||||
"url88": "",
|
||||
"url88_sanitized": "",
|
||||
"url89": "",
|
||||
"url89_sanitized": "",
|
||||
"url8_sanitized": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url90_sanitized": "",
|
||||
"url91": "",
|
||||
"url91_sanitized": "",
|
||||
"url92": "",
|
||||
"url92_sanitized": "",
|
||||
"url93": "",
|
||||
"url93_sanitized": "",
|
||||
"url94": "",
|
||||
"url94_sanitized": "",
|
||||
"url95": "",
|
||||
"url95_sanitized": "",
|
||||
"url96": "",
|
||||
"url96_sanitized": "",
|
||||
"url97": "",
|
||||
"url97_sanitized": "",
|
||||
"url98": "",
|
||||
"url98_sanitized": "",
|
||||
"url99": "",
|
||||
"url99_sanitized": "",
|
||||
"url9_sanitized": "",
|
||||
"url_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists",
|
||||
"urls": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }",
|
||||
"urls_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists\uff02]",
|
||||
"webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"webpage_url_sanitized": "{ %sanitize( %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"width": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }",
|
||||
"width_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"width\", 0 ) ) }",
|
||||
"ytdl_sub_entry_date_eval": "{ %string( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"ytdl_sub_entry_date_eval_sanitized": "{ %sanitize( %string( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) ) }",
|
||||
"ytdl_sub_input_url": "",
|
||||
"ytdl_sub_input_url_count": "{ %int(0) }",
|
||||
"ytdl_sub_input_url_count_sanitized": "0",
|
||||
"ytdl_sub_input_url_index": "{ %int(-1) }",
|
||||
"ytdl_sub_input_url_index_sanitized": "-1",
|
||||
"ytdl_sub_input_url_sanitized": ""
|
||||
}
|
||||
137
tests/resources/expected_json/music/inspect_overrides.json
Normal file
137
tests/resources/expected_json/music/inspect_overrides.json
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
{
|
||||
"album_cover_path": "Lester Young/{ %concat( \"[\", %string( playlist_max_upload_year ), \"] \", %string( %sanitize( playlist_title ) ) ) }/folder.{ thumbnail_ext }",
|
||||
"album_dir": "[{ playlist_max_upload_year }] { %sanitize( playlist_title ) }",
|
||||
"artist_dir": "Lester Young",
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"include_sibling_metadata": "{ %bool(True) }",
|
||||
"modified_webpage_url": "{ webpage_url }",
|
||||
"music_directory": "tv_show_directory_path",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_readable": "{ width }x{ height }",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }",
|
||||
"subscription_indent_1": "Jazz",
|
||||
"subscription_value": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"subscription_value_1": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"track_album": "{ playlist_title }",
|
||||
"track_album_artist": "Lester Young",
|
||||
"track_artist": "Lester Young",
|
||||
"track_date": "{ upload_date_standardized }",
|
||||
"track_file_name": "{ playlist_index_padded } - { %sanitize( title ) }.{ ext }",
|
||||
"track_full_path": "Lester Young/{ %concat( \"[\", %string( playlist_max_upload_year ), \"] \", %string( %sanitize( playlist_title ) ) ) }/{ %concat( %string( playlist_index_padded ), \" - \", %string( %sanitize( title ) ), \".\", %string( ext ) ) }",
|
||||
"track_genre": "Jazz",
|
||||
"track_genre_default": "Unset",
|
||||
"track_number": "{ playlist_index }",
|
||||
"track_number_padded": "{ playlist_index_padded }",
|
||||
"track_original_date": "{ upload_date_standardized }",
|
||||
"track_title": "{ title }",
|
||||
"track_total": "{ playlist_count }",
|
||||
"track_year": "{ playlist_max_upload_year }",
|
||||
"url": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url11": "",
|
||||
"url12": "",
|
||||
"url13": "",
|
||||
"url14": "",
|
||||
"url15": "",
|
||||
"url16": "",
|
||||
"url17": "",
|
||||
"url18": "",
|
||||
"url19": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url21": "",
|
||||
"url22": "",
|
||||
"url23": "",
|
||||
"url24": "",
|
||||
"url25": "",
|
||||
"url26": "",
|
||||
"url27": "",
|
||||
"url28": "",
|
||||
"url29": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url31": "",
|
||||
"url32": "",
|
||||
"url33": "",
|
||||
"url34": "",
|
||||
"url35": "",
|
||||
"url36": "",
|
||||
"url37": "",
|
||||
"url38": "",
|
||||
"url39": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url41": "",
|
||||
"url42": "",
|
||||
"url43": "",
|
||||
"url44": "",
|
||||
"url45": "",
|
||||
"url46": "",
|
||||
"url47": "",
|
||||
"url48": "",
|
||||
"url49": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url51": "",
|
||||
"url52": "",
|
||||
"url53": "",
|
||||
"url54": "",
|
||||
"url55": "",
|
||||
"url56": "",
|
||||
"url57": "",
|
||||
"url58": "",
|
||||
"url59": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url61": "",
|
||||
"url62": "",
|
||||
"url63": "",
|
||||
"url64": "",
|
||||
"url65": "",
|
||||
"url66": "",
|
||||
"url67": "",
|
||||
"url68": "",
|
||||
"url69": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url71": "",
|
||||
"url72": "",
|
||||
"url73": "",
|
||||
"url74": "",
|
||||
"url75": "",
|
||||
"url76": "",
|
||||
"url77": "",
|
||||
"url78": "",
|
||||
"url79": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url81": "",
|
||||
"url82": "",
|
||||
"url83": "",
|
||||
"url84": "",
|
||||
"url85": "",
|
||||
"url86": "",
|
||||
"url87": "",
|
||||
"url88": "",
|
||||
"url89": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url91": "",
|
||||
"url92": "",
|
||||
"url93": "",
|
||||
"url94": "",
|
||||
"url95": "",
|
||||
"url96": "",
|
||||
"url97": "",
|
||||
"url98": "",
|
||||
"url99": "",
|
||||
"urls": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }"
|
||||
}
|
||||
482
tests/resources/expected_json/music/inspect_variables.json
Normal file
482
tests/resources/expected_json/music/inspect_variables.json
Normal file
|
|
@ -0,0 +1,482 @@
|
|||
{
|
||||
"album_cover_path": "Lester Young/{ %concat( \"[\", %string( playlist_max_upload_year ), \"] \", %string( %sanitize( playlist_title ) ) ) }/folder.{ thumbnail_ext }",
|
||||
"album_cover_path_sanitized": "{ %sanitize( %concat( \"Lester Young\", \"/\", %string( %concat( \"[\", %string( playlist_max_upload_year ), \"] \", %string( %sanitize( playlist_title ) ) ) ), \"/folder.\", %string( thumbnail_ext ) ) ) }",
|
||||
"album_dir": "[{ playlist_max_upload_year }] { %sanitize( playlist_title ) }",
|
||||
"album_dir_sanitized": "{ %sanitize( %concat( \"[\", %string( playlist_max_upload_year ), \"] \", %string( %sanitize( playlist_title ) ) ) ) }",
|
||||
"artist_dir": "Lester Young",
|
||||
"artist_dir_sanitized": "Lester Young",
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"avatar_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"channel": "{ %map_get_non_empty( entry_metadata, \"channel\", uploader ) }",
|
||||
"channel_id": "{ %map_get_non_empty( entry_metadata, \"channel_id\", uploader_id ) }",
|
||||
"channel_id_sanitized": "{ %sanitize( channel_id ) }",
|
||||
"channel_sanitized": "{ %sanitize( channel ) }",
|
||||
"chapters": "{ [ ] }",
|
||||
"chapters_sanitized": "{ %sanitize( chapters ) }",
|
||||
"comments": "{ [ ] }",
|
||||
"comments_sanitized": "{ %sanitize( comments ) }",
|
||||
"creator": "{ %map_get_non_empty( entry_metadata, \"creator\", channel ) }",
|
||||
"creator_sanitized": "{ %sanitize( creator ) }",
|
||||
"description": "{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"description_sanitized": "{ %sanitize( description ) }",
|
||||
"download_index": "{ %int( 1 ) }",
|
||||
"download_index_padded6": "{ %pad_zero( download_index, 6 ) }",
|
||||
"download_index_padded6_sanitized": "{ %sanitize( download_index_padded6 ) }",
|
||||
"download_index_sanitized": "{ %sanitize( download_index ) }",
|
||||
"duration": "{ %map_get_non_empty( entry_metadata, \"duration\", 0 ) }",
|
||||
"duration_sanitized": "{ %sanitize( duration ) }",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_resolution_assert_sanitized": "true",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"enable_throttle_protection_sanitized": "true",
|
||||
"entry_metadata": "{ { } }",
|
||||
"entry_metadata_sanitized": "{ %sanitize( entry_metadata ) }",
|
||||
"epoch": "{ %map_get( entry_metadata, \"epoch\" ) }",
|
||||
"epoch_date": "{ %datetime_strftime( epoch, \"%Y%m%d\" ) }",
|
||||
"epoch_date_sanitized": "{ %sanitize( epoch_date ) }",
|
||||
"epoch_hour": "{ %datetime_strftime( epoch, \"%H\" ) }",
|
||||
"epoch_hour_sanitized": "{ %sanitize( epoch_hour ) }",
|
||||
"epoch_sanitized": "{ %sanitize( epoch ) }",
|
||||
"ext": "{ %throw( \"Plugin variable ext has not been created yet\" ) }",
|
||||
"ext_sanitized": "{ %sanitize( ext ) }",
|
||||
"extractor": "{ %map_get( entry_metadata, \"extractor\" ) }",
|
||||
"extractor_key": "{ %map_get( entry_metadata, \"extractor_key\" ) }",
|
||||
"extractor_key_sanitized": "{ %sanitize( extractor_key ) }",
|
||||
"extractor_sanitized": "{ %sanitize( extractor ) }",
|
||||
"height": "{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"height_sanitized": "{ %sanitize( height ) }",
|
||||
"ie_key": "{ %map_get_non_empty( entry_metadata, \"ie_key\", extractor_key ) }",
|
||||
"ie_key_sanitized": "{ %sanitize( ie_key ) }",
|
||||
"include_sibling_metadata": "{ %bool(True) }",
|
||||
"include_sibling_metadata_sanitized": "true",
|
||||
"info_json_ext": "info.json",
|
||||
"info_json_ext_sanitized": "info.json",
|
||||
"modified_webpage_url": "{ webpage_url }",
|
||||
"modified_webpage_url_sanitized": "{ %sanitize( webpage_url ) }",
|
||||
"music_directory": "tv_show_directory_path",
|
||||
"music_directory_sanitized": "tv_show_directory_path",
|
||||
"playlist_count": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"playlist_count_sanitized": "{ %sanitize( playlist_count ) }",
|
||||
"playlist_description": "{ %map_get_non_empty( playlist_metadata, \"description\", description ) }",
|
||||
"playlist_description_sanitized": "{ %sanitize( playlist_description ) }",
|
||||
"playlist_index": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"playlist_index_padded": "{ %pad_zero( playlist_index, 2 ) }",
|
||||
"playlist_index_padded6": "{ %pad_zero( playlist_index, 6 ) }",
|
||||
"playlist_index_padded6_sanitized": "{ %sanitize( playlist_index_padded6 ) }",
|
||||
"playlist_index_padded_sanitized": "{ %sanitize( playlist_index_padded ) }",
|
||||
"playlist_index_reversed": "{ %sub( playlist_count, playlist_index, -1 ) }",
|
||||
"playlist_index_reversed_padded": "{ %pad_zero( playlist_index_reversed, 2 ) }",
|
||||
"playlist_index_reversed_padded6": "{ %pad_zero( playlist_index_reversed, 6 ) }",
|
||||
"playlist_index_reversed_padded6_sanitized": "{ %sanitize( playlist_index_reversed_padded6 ) }",
|
||||
"playlist_index_reversed_padded_sanitized": "{ %sanitize( playlist_index_reversed_padded ) }",
|
||||
"playlist_index_reversed_sanitized": "{ %sanitize( playlist_index_reversed ) }",
|
||||
"playlist_index_sanitized": "{ %sanitize( playlist_index ) }",
|
||||
"playlist_max_upload_date": "{ %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) }",
|
||||
"playlist_max_upload_date_sanitized": "{ %sanitize( playlist_max_upload_date ) }",
|
||||
"playlist_max_upload_year": "{ %int( %map_get( %to_date_metadata( playlist_max_upload_date ), \"year\" ) ) }",
|
||||
"playlist_max_upload_year_sanitized": "{ %sanitize( playlist_max_upload_year ) }",
|
||||
"playlist_max_upload_year_truncated": "{ %int( %map_get( %to_date_metadata( playlist_max_upload_date ), \"year_truncated\" ) ) }",
|
||||
"playlist_max_upload_year_truncated_sanitized": "{ %sanitize( playlist_max_upload_year_truncated ) }",
|
||||
"playlist_metadata": "{ %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) }",
|
||||
"playlist_metadata_sanitized": "{ %sanitize( playlist_metadata ) }",
|
||||
"playlist_title": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", title ) }",
|
||||
"playlist_title_sanitized": "{ %sanitize( playlist_title ) }",
|
||||
"playlist_uid": "{ %map_get_non_empty( playlist_metadata, \"playlist_id\", uid ) }",
|
||||
"playlist_uid_sanitized": "{ %sanitize( playlist_uid ) }",
|
||||
"playlist_uploader": "{ %map_get_non_empty( playlist_metadata, \"uploader\", uploader ) }",
|
||||
"playlist_uploader_id": "{ %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", uploader_id ) }",
|
||||
"playlist_uploader_id_sanitized": "{ %sanitize( playlist_uploader_id ) }",
|
||||
"playlist_uploader_sanitized": "{ %sanitize( playlist_uploader ) }",
|
||||
"playlist_uploader_url": "{ %map_get_non_empty( playlist_metadata, \"uploader_url\", webpage_url ) }",
|
||||
"playlist_uploader_url_sanitized": "{ %sanitize( playlist_uploader_url ) }",
|
||||
"playlist_webpage_url": "{ %map_get_non_empty( playlist_metadata, \"webpage_url\", webpage_url ) }",
|
||||
"playlist_webpage_url_sanitized": "{ %sanitize( playlist_webpage_url ) }",
|
||||
"release_date": "{ %map_get_non_empty( entry_metadata, \"release_date\", upload_date ) }",
|
||||
"release_date_sanitized": "{ %sanitize( release_date ) }",
|
||||
"release_date_standardized": "{ %string( %map_get( %to_date_metadata( release_date ), \"date_standardized\" ) ) }",
|
||||
"release_date_standardized_sanitized": "{ %sanitize( release_date_standardized ) }",
|
||||
"release_day": "{ %int( %map_get( %to_date_metadata( release_date ), \"day\" ) ) }",
|
||||
"release_day_of_year": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_of_year\" ) ) }",
|
||||
"release_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_of_year_padded\" ) ) }",
|
||||
"release_day_of_year_padded_sanitized": "{ %sanitize( release_day_of_year_padded ) }",
|
||||
"release_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_of_year_reversed\" ) ) }",
|
||||
"release_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"release_day_of_year_reversed_padded_sanitized": "{ %sanitize( release_day_of_year_reversed_padded ) }",
|
||||
"release_day_of_year_reversed_sanitized": "{ %sanitize( release_day_of_year_reversed ) }",
|
||||
"release_day_of_year_sanitized": "{ %sanitize( release_day_of_year ) }",
|
||||
"release_day_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_padded\" ) ) }",
|
||||
"release_day_padded_sanitized": "{ %sanitize( release_day_padded ) }",
|
||||
"release_day_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_reversed\" ) ) }",
|
||||
"release_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_reversed_padded\" ) ) }",
|
||||
"release_day_reversed_padded_sanitized": "{ %sanitize( release_day_reversed_padded ) }",
|
||||
"release_day_reversed_sanitized": "{ %sanitize( release_day_reversed ) }",
|
||||
"release_day_sanitized": "{ %sanitize( release_day ) }",
|
||||
"release_month": "{ %int( %map_get( %to_date_metadata( release_date ), \"month\" ) ) }",
|
||||
"release_month_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"month_padded\" ) ) }",
|
||||
"release_month_padded_sanitized": "{ %sanitize( release_month_padded ) }",
|
||||
"release_month_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"month_reversed\" ) ) }",
|
||||
"release_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"month_reversed_padded\" ) ) }",
|
||||
"release_month_reversed_padded_sanitized": "{ %sanitize( release_month_reversed_padded ) }",
|
||||
"release_month_reversed_sanitized": "{ %sanitize( release_month_reversed ) }",
|
||||
"release_month_sanitized": "{ %sanitize( release_month ) }",
|
||||
"release_year": "{ %int( %map_get( %to_date_metadata( release_date ), \"year\" ) ) }",
|
||||
"release_year_sanitized": "{ %sanitize( release_year ) }",
|
||||
"release_year_truncated": "{ %int( %map_get( %to_date_metadata( release_date ), \"year_truncated\" ) ) }",
|
||||
"release_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"year_truncated_reversed\" ) ) }",
|
||||
"release_year_truncated_reversed_sanitized": "{ %sanitize( release_year_truncated_reversed ) }",
|
||||
"release_year_truncated_sanitized": "{ %sanitize( release_year_truncated ) }",
|
||||
"requested_subtitles": "{ { } }",
|
||||
"requested_subtitles_sanitized": "{ %sanitize( requested_subtitles ) }",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_height_gte_sanitized": "361",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_ignore_titles_sanitized": "[]",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_is_ignored_sanitized": "{ %sanitize( %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_assert_print_sanitized": "true",
|
||||
"resolution_assert_sanitized": "{ %sanitize( %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) ) }",
|
||||
"resolution_readable": "{ width }x{ height }",
|
||||
"resolution_readable_sanitized": "{ %sanitize( %concat( %string( width ), \"x\", %string( height ) ) ) }",
|
||||
"sibling_metadata": "{ %map_get_non_empty( entry_metadata, \"sibling_metadata\", [ ] ) }",
|
||||
"sibling_metadata_sanitized": "{ %sanitize( sibling_metadata ) }",
|
||||
"source_count": "{ %map_get_non_empty( playlist_metadata, \"playlist_count\", 1 ) }",
|
||||
"source_count_sanitized": "{ %sanitize( source_count ) }",
|
||||
"source_description": "{ %map_get_non_empty( source_metadata, \"description\", playlist_description ) }",
|
||||
"source_description_sanitized": "{ %sanitize( source_description ) }",
|
||||
"source_index": "{ %map_get_non_empty( playlist_metadata, \"playlist_index\", 1 ) }",
|
||||
"source_index_padded": "{ %pad_zero( source_index, 2 ) }",
|
||||
"source_index_padded_sanitized": "{ %sanitize( source_index_padded ) }",
|
||||
"source_index_sanitized": "{ %sanitize( source_index ) }",
|
||||
"source_metadata": "{ %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) }",
|
||||
"source_metadata_sanitized": "{ %sanitize( source_metadata ) }",
|
||||
"source_title": "{ %map_get_non_empty( source_metadata, \"title\", playlist_title ) }",
|
||||
"source_title_sanitized": "{ %sanitize( source_title ) }",
|
||||
"source_uid": "{ %map_get_non_empty( source_metadata, \"id\", playlist_uid ) }",
|
||||
"source_uid_sanitized": "{ %sanitize( source_uid ) }",
|
||||
"source_uploader": "{ %map_get_non_empty( source_metadata, \"uploader\", playlist_uploader ) }",
|
||||
"source_uploader_id": "{ %map_get_non_empty( source_metadata, \"uploader_id\", playlist_uploader_id ) }",
|
||||
"source_uploader_id_sanitized": "{ %sanitize( source_uploader_id ) }",
|
||||
"source_uploader_sanitized": "{ %sanitize( source_uploader ) }",
|
||||
"source_uploader_url": "{ %map_get_non_empty( source_metadata, \"uploader_url\", source_webpage_url ) }",
|
||||
"source_uploader_url_sanitized": "{ %sanitize( source_uploader_url ) }",
|
||||
"source_webpage_url": "{ %map_get_non_empty( source_metadata, \"webpage_url\", playlist_webpage_url ) }",
|
||||
"source_webpage_url_sanitized": "{ %sanitize( source_webpage_url ) }",
|
||||
"sponsorblock_chapters": "{ [ ] }",
|
||||
"sponsorblock_chapters_sanitized": "{ %sanitize( sponsorblock_chapters ) }",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }",
|
||||
"subscription_array_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists\uff02]",
|
||||
"subscription_has_download_archive": "{ %bool(False) }",
|
||||
"subscription_has_download_archive_sanitized": "false",
|
||||
"subscription_indent_1": "Jazz",
|
||||
"subscription_indent_1_sanitized": "Jazz",
|
||||
"subscription_name": "Lester Young",
|
||||
"subscription_name_sanitized": "Lester Young",
|
||||
"subscription_value": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"subscription_value_1": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"subscription_value_1_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists",
|
||||
"subscription_value_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists",
|
||||
"thumbnail_ext": "jpg",
|
||||
"thumbnail_ext_sanitized": "jpg",
|
||||
"title": "{ %map_get_non_empty( entry_metadata, \"title\", uid ) }",
|
||||
"title_sanitized": "{ %sanitize( title ) }",
|
||||
"title_sanitized_plex": "{ %sanitize_plex_episode( title ) }",
|
||||
"title_sanitized_plex_sanitized": "{ %sanitize( title_sanitized_plex ) }",
|
||||
"track_album": "{ playlist_title }",
|
||||
"track_album_artist": "Lester Young",
|
||||
"track_album_artist_sanitized": "Lester Young",
|
||||
"track_album_sanitized": "{ %sanitize( playlist_title ) }",
|
||||
"track_artist": "Lester Young",
|
||||
"track_artist_sanitized": "Lester Young",
|
||||
"track_date": "{ upload_date_standardized }",
|
||||
"track_date_sanitized": "{ %sanitize( upload_date_standardized ) }",
|
||||
"track_file_name": "{ playlist_index_padded } - { %sanitize( title ) }.{ ext }",
|
||||
"track_file_name_sanitized": "{ %sanitize( %concat( %string( playlist_index_padded ), \" - \", %string( %sanitize( title ) ), \".\", %string( ext ) ) ) }",
|
||||
"track_full_path": "Lester Young/{ %concat( \"[\", %string( playlist_max_upload_year ), \"] \", %string( %sanitize( playlist_title ) ) ) }/{ %concat( %string( playlist_index_padded ), \" - \", %string( %sanitize( title ) ), \".\", %string( ext ) ) }",
|
||||
"track_full_path_sanitized": "{ %sanitize( %concat( \"Lester Young\", \"/\", %string( %concat( \"[\", %string( playlist_max_upload_year ), \"] \", %string( %sanitize( playlist_title ) ) ) ), \"/\", %string( %concat( %string( playlist_index_padded ), \" - \", %string( %sanitize( title ) ), \".\", %string( ext ) ) ) ) ) }",
|
||||
"track_genre": "Jazz",
|
||||
"track_genre_default": "Unset",
|
||||
"track_genre_default_sanitized": "Unset",
|
||||
"track_genre_sanitized": "Jazz",
|
||||
"track_number": "{ playlist_index }",
|
||||
"track_number_padded": "{ playlist_index_padded }",
|
||||
"track_number_padded_sanitized": "{ %sanitize( playlist_index_padded ) }",
|
||||
"track_number_sanitized": "{ %sanitize( playlist_index ) }",
|
||||
"track_original_date": "{ upload_date_standardized }",
|
||||
"track_original_date_sanitized": "{ %sanitize( upload_date_standardized ) }",
|
||||
"track_title": "{ title }",
|
||||
"track_title_sanitized": "{ %sanitize( title ) }",
|
||||
"track_total": "{ playlist_count }",
|
||||
"track_total_sanitized": "{ %sanitize( playlist_count ) }",
|
||||
"track_year": "{ playlist_max_upload_year }",
|
||||
"track_year_sanitized": "{ %sanitize( playlist_max_upload_year ) }",
|
||||
"uid": "{ %map_get( entry_metadata, \"id\" ) }",
|
||||
"uid_sanitized": "{ %sanitize( uid ) }",
|
||||
"uid_sanitized_plex": "{ %sanitize_plex_episode( uid ) }",
|
||||
"uid_sanitized_plex_sanitized": "{ %sanitize( uid_sanitized_plex ) }",
|
||||
"upload_date": "{ %map_get_non_empty( entry_metadata, \"upload_date\", epoch_date ) }",
|
||||
"upload_date_index": "{ %int( 1 ) }",
|
||||
"upload_date_index_padded": "{ %pad_zero( upload_date_index, 2 ) }",
|
||||
"upload_date_index_padded_sanitized": "{ %sanitize( upload_date_index_padded ) }",
|
||||
"upload_date_index_reversed": "{ %sub( 100, upload_date_index ) }",
|
||||
"upload_date_index_reversed_padded": "{ %pad_zero( upload_date_index_reversed, 2 ) }",
|
||||
"upload_date_index_reversed_padded_sanitized": "{ %sanitize( upload_date_index_reversed_padded ) }",
|
||||
"upload_date_index_reversed_sanitized": "{ %sanitize( upload_date_index_reversed ) }",
|
||||
"upload_date_index_sanitized": "{ %sanitize( upload_date_index ) }",
|
||||
"upload_date_sanitized": "{ %sanitize( upload_date ) }",
|
||||
"upload_date_standardized": "{ %string( %map_get( %to_date_metadata( upload_date ), \"date_standardized\" ) ) }",
|
||||
"upload_date_standardized_sanitized": "{ %sanitize( upload_date_standardized ) }",
|
||||
"upload_day": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day\" ) ) }",
|
||||
"upload_day_of_year": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_of_year\" ) ) }",
|
||||
"upload_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_of_year_padded\" ) ) }",
|
||||
"upload_day_of_year_padded_sanitized": "{ %sanitize( upload_day_of_year_padded ) }",
|
||||
"upload_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_of_year_reversed\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded_sanitized": "{ %sanitize( upload_day_of_year_reversed_padded ) }",
|
||||
"upload_day_of_year_reversed_sanitized": "{ %sanitize( upload_day_of_year_reversed ) }",
|
||||
"upload_day_of_year_sanitized": "{ %sanitize( upload_day_of_year ) }",
|
||||
"upload_day_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_padded\" ) ) }",
|
||||
"upload_day_padded_sanitized": "{ %sanitize( upload_day_padded ) }",
|
||||
"upload_day_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_reversed\" ) ) }",
|
||||
"upload_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_reversed_padded\" ) ) }",
|
||||
"upload_day_reversed_padded_sanitized": "{ %sanitize( upload_day_reversed_padded ) }",
|
||||
"upload_day_reversed_sanitized": "{ %sanitize( upload_day_reversed ) }",
|
||||
"upload_day_sanitized": "{ %sanitize( upload_day ) }",
|
||||
"upload_month": "{ %int( %map_get( %to_date_metadata( upload_date ), \"month\" ) ) }",
|
||||
"upload_month_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"month_padded\" ) ) }",
|
||||
"upload_month_padded_sanitized": "{ %sanitize( upload_month_padded ) }",
|
||||
"upload_month_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"month_reversed\" ) ) }",
|
||||
"upload_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"month_reversed_padded\" ) ) }",
|
||||
"upload_month_reversed_padded_sanitized": "{ %sanitize( upload_month_reversed_padded ) }",
|
||||
"upload_month_reversed_sanitized": "{ %sanitize( upload_month_reversed ) }",
|
||||
"upload_month_sanitized": "{ %sanitize( upload_month ) }",
|
||||
"upload_year": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year\" ) ) }",
|
||||
"upload_year_sanitized": "{ %sanitize( upload_year ) }",
|
||||
"upload_year_truncated": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year_truncated\" ) ) }",
|
||||
"upload_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year_truncated_reversed\" ) ) }",
|
||||
"upload_year_truncated_reversed_sanitized": "{ %sanitize( upload_year_truncated_reversed ) }",
|
||||
"upload_year_truncated_sanitized": "{ %sanitize( upload_year_truncated ) }",
|
||||
"uploader": "{ %map_get_non_empty( entry_metadata, \"uploader\", uploader_id ) }",
|
||||
"uploader_id": "{ %map_get_non_empty( entry_metadata, \"uploader_id\", uid ) }",
|
||||
"uploader_id_sanitized": "{ %sanitize( uploader_id ) }",
|
||||
"uploader_sanitized": "{ %sanitize( uploader ) }",
|
||||
"uploader_url": "{ %map_get_non_empty( entry_metadata, \"uploader_url\", webpage_url ) }",
|
||||
"uploader_url_sanitized": "{ %sanitize( uploader_url ) }",
|
||||
"url": "https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url100_sanitized": "",
|
||||
"url10_sanitized": "",
|
||||
"url11": "",
|
||||
"url11_sanitized": "",
|
||||
"url12": "",
|
||||
"url12_sanitized": "",
|
||||
"url13": "",
|
||||
"url13_sanitized": "",
|
||||
"url14": "",
|
||||
"url14_sanitized": "",
|
||||
"url15": "",
|
||||
"url15_sanitized": "",
|
||||
"url16": "",
|
||||
"url16_sanitized": "",
|
||||
"url17": "",
|
||||
"url17_sanitized": "",
|
||||
"url18": "",
|
||||
"url18_sanitized": "",
|
||||
"url19": "",
|
||||
"url19_sanitized": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url20_sanitized": "",
|
||||
"url21": "",
|
||||
"url21_sanitized": "",
|
||||
"url22": "",
|
||||
"url22_sanitized": "",
|
||||
"url23": "",
|
||||
"url23_sanitized": "",
|
||||
"url24": "",
|
||||
"url24_sanitized": "",
|
||||
"url25": "",
|
||||
"url25_sanitized": "",
|
||||
"url26": "",
|
||||
"url26_sanitized": "",
|
||||
"url27": "",
|
||||
"url27_sanitized": "",
|
||||
"url28": "",
|
||||
"url28_sanitized": "",
|
||||
"url29": "",
|
||||
"url29_sanitized": "",
|
||||
"url2_sanitized": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url30_sanitized": "",
|
||||
"url31": "",
|
||||
"url31_sanitized": "",
|
||||
"url32": "",
|
||||
"url32_sanitized": "",
|
||||
"url33": "",
|
||||
"url33_sanitized": "",
|
||||
"url34": "",
|
||||
"url34_sanitized": "",
|
||||
"url35": "",
|
||||
"url35_sanitized": "",
|
||||
"url36": "",
|
||||
"url36_sanitized": "",
|
||||
"url37": "",
|
||||
"url37_sanitized": "",
|
||||
"url38": "",
|
||||
"url38_sanitized": "",
|
||||
"url39": "",
|
||||
"url39_sanitized": "",
|
||||
"url3_sanitized": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url40_sanitized": "",
|
||||
"url41": "",
|
||||
"url41_sanitized": "",
|
||||
"url42": "",
|
||||
"url42_sanitized": "",
|
||||
"url43": "",
|
||||
"url43_sanitized": "",
|
||||
"url44": "",
|
||||
"url44_sanitized": "",
|
||||
"url45": "",
|
||||
"url45_sanitized": "",
|
||||
"url46": "",
|
||||
"url46_sanitized": "",
|
||||
"url47": "",
|
||||
"url47_sanitized": "",
|
||||
"url48": "",
|
||||
"url48_sanitized": "",
|
||||
"url49": "",
|
||||
"url49_sanitized": "",
|
||||
"url4_sanitized": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url50_sanitized": "",
|
||||
"url51": "",
|
||||
"url51_sanitized": "",
|
||||
"url52": "",
|
||||
"url52_sanitized": "",
|
||||
"url53": "",
|
||||
"url53_sanitized": "",
|
||||
"url54": "",
|
||||
"url54_sanitized": "",
|
||||
"url55": "",
|
||||
"url55_sanitized": "",
|
||||
"url56": "",
|
||||
"url56_sanitized": "",
|
||||
"url57": "",
|
||||
"url57_sanitized": "",
|
||||
"url58": "",
|
||||
"url58_sanitized": "",
|
||||
"url59": "",
|
||||
"url59_sanitized": "",
|
||||
"url5_sanitized": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url60_sanitized": "",
|
||||
"url61": "",
|
||||
"url61_sanitized": "",
|
||||
"url62": "",
|
||||
"url62_sanitized": "",
|
||||
"url63": "",
|
||||
"url63_sanitized": "",
|
||||
"url64": "",
|
||||
"url64_sanitized": "",
|
||||
"url65": "",
|
||||
"url65_sanitized": "",
|
||||
"url66": "",
|
||||
"url66_sanitized": "",
|
||||
"url67": "",
|
||||
"url67_sanitized": "",
|
||||
"url68": "",
|
||||
"url68_sanitized": "",
|
||||
"url69": "",
|
||||
"url69_sanitized": "",
|
||||
"url6_sanitized": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url70_sanitized": "",
|
||||
"url71": "",
|
||||
"url71_sanitized": "",
|
||||
"url72": "",
|
||||
"url72_sanitized": "",
|
||||
"url73": "",
|
||||
"url73_sanitized": "",
|
||||
"url74": "",
|
||||
"url74_sanitized": "",
|
||||
"url75": "",
|
||||
"url75_sanitized": "",
|
||||
"url76": "",
|
||||
"url76_sanitized": "",
|
||||
"url77": "",
|
||||
"url77_sanitized": "",
|
||||
"url78": "",
|
||||
"url78_sanitized": "",
|
||||
"url79": "",
|
||||
"url79_sanitized": "",
|
||||
"url7_sanitized": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url80_sanitized": "",
|
||||
"url81": "",
|
||||
"url81_sanitized": "",
|
||||
"url82": "",
|
||||
"url82_sanitized": "",
|
||||
"url83": "",
|
||||
"url83_sanitized": "",
|
||||
"url84": "",
|
||||
"url84_sanitized": "",
|
||||
"url85": "",
|
||||
"url85_sanitized": "",
|
||||
"url86": "",
|
||||
"url86_sanitized": "",
|
||||
"url87": "",
|
||||
"url87_sanitized": "",
|
||||
"url88": "",
|
||||
"url88_sanitized": "",
|
||||
"url89": "",
|
||||
"url89_sanitized": "",
|
||||
"url8_sanitized": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url90_sanitized": "",
|
||||
"url91": "",
|
||||
"url91_sanitized": "",
|
||||
"url92": "",
|
||||
"url92_sanitized": "",
|
||||
"url93": "",
|
||||
"url93_sanitized": "",
|
||||
"url94": "",
|
||||
"url94_sanitized": "",
|
||||
"url95": "",
|
||||
"url95_sanitized": "",
|
||||
"url96": "",
|
||||
"url96_sanitized": "",
|
||||
"url97": "",
|
||||
"url97_sanitized": "",
|
||||
"url98": "",
|
||||
"url98_sanitized": "",
|
||||
"url99": "",
|
||||
"url99_sanitized": "",
|
||||
"url9_sanitized": "",
|
||||
"url_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists",
|
||||
"urls": "{ [ \"https://www.youtube.com/channel/UCsItMF6_fP754ihIsSRLk5A/playlists\" ] }",
|
||||
"urls_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8channel\u29f8UCsItMF6_fP754ihIsSRLk5A\u29f8playlists\uff02]",
|
||||
"webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"webpage_url_sanitized": "{ %sanitize( webpage_url ) }",
|
||||
"width": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }",
|
||||
"width_sanitized": "{ %sanitize( width ) }",
|
||||
"ytdl_sub_entry_date_eval": "{ %string( upload_date_standardized ) }",
|
||||
"ytdl_sub_entry_date_eval_sanitized": "{ %sanitize( ytdl_sub_entry_date_eval ) }",
|
||||
"ytdl_sub_input_url": "{ %string( '' ) }",
|
||||
"ytdl_sub_input_url_count": "{ %int( 0 ) }",
|
||||
"ytdl_sub_input_url_count_sanitized": "{ %sanitize( ytdl_sub_input_url_count ) }",
|
||||
"ytdl_sub_input_url_index": "{ %int( -1 ) }",
|
||||
"ytdl_sub_input_url_index_sanitized": "{ %sanitize( ytdl_sub_input_url_index ) }",
|
||||
"ytdl_sub_input_url_sanitized": "{ %sanitize( ytdl_sub_input_url ) }"
|
||||
}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"category_url_array": "{ [ ] }",
|
||||
"category_url_map": "{ [ ] }",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"file_title": "{ %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"file_uid": "{ %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"modified_webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"music_video_album": "{ %get_url_field( \"category\", music_video_album_default ) }",
|
||||
"music_video_album_default": "Music Videos",
|
||||
"music_video_artist": "Rick Astley",
|
||||
"music_video_date": "{ %elif( %contains_url_field( \"date\" ), %get_url_field( \"date\", upload_date_standardized ), %contains_url_field( \"year\" ), %concat( %get_url_field( \"date\", upload_year ), \"-01-01\" ), upload_date_standardized ) }",
|
||||
"music_video_directory": "tv_show_directory_path",
|
||||
"music_video_file_name": "Rick Astley/{ %sanitize( %get_url_field( \"title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"music_video_file_name_suffix": "",
|
||||
"music_video_genre": "Pop",
|
||||
"music_video_genre_default": "ytdl-sub",
|
||||
"music_video_title": "{ %get_url_field( \"title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"music_video_year": "{ %int( %elif( %contains_url_field( \"date\" ), %slice( %get_url_field( \"date\", upload_date_standardized ), 0, 4 ), %contains_url_field( \"year\" ), %get_url_field( \"date\", upload_year ), upload_year ) ) }",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_readable": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }x{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\" ] }",
|
||||
"subscription_indent_1": "Pop",
|
||||
"subscription_map": "{ { } }",
|
||||
"subscription_value": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_1": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"url": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url11": "",
|
||||
"url12": "",
|
||||
"url13": "",
|
||||
"url14": "",
|
||||
"url15": "",
|
||||
"url16": "",
|
||||
"url17": "",
|
||||
"url18": "",
|
||||
"url19": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url21": "",
|
||||
"url22": "",
|
||||
"url23": "",
|
||||
"url24": "",
|
||||
"url25": "",
|
||||
"url26": "",
|
||||
"url27": "",
|
||||
"url28": "",
|
||||
"url29": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url31": "",
|
||||
"url32": "",
|
||||
"url33": "",
|
||||
"url34": "",
|
||||
"url35": "",
|
||||
"url36": "",
|
||||
"url37": "",
|
||||
"url38": "",
|
||||
"url39": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url41": "",
|
||||
"url42": "",
|
||||
"url43": "",
|
||||
"url44": "",
|
||||
"url45": "",
|
||||
"url46": "",
|
||||
"url47": "",
|
||||
"url48": "",
|
||||
"url49": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url51": "",
|
||||
"url52": "",
|
||||
"url53": "",
|
||||
"url54": "",
|
||||
"url55": "",
|
||||
"url56": "",
|
||||
"url57": "",
|
||||
"url58": "",
|
||||
"url59": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url61": "",
|
||||
"url62": "",
|
||||
"url63": "",
|
||||
"url64": "",
|
||||
"url65": "",
|
||||
"url66": "",
|
||||
"url67": "",
|
||||
"url68": "",
|
||||
"url69": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url71": "",
|
||||
"url72": "",
|
||||
"url73": "",
|
||||
"url74": "",
|
||||
"url75": "",
|
||||
"url76": "",
|
||||
"url77": "",
|
||||
"url78": "",
|
||||
"url79": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url81": "",
|
||||
"url82": "",
|
||||
"url83": "",
|
||||
"url84": "",
|
||||
"url85": "",
|
||||
"url86": "",
|
||||
"url87": "",
|
||||
"url88": "",
|
||||
"url89": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url91": "",
|
||||
"url92": "",
|
||||
"url93": "",
|
||||
"url94": "",
|
||||
"url95": "",
|
||||
"url96": "",
|
||||
"url97": "",
|
||||
"url98": "",
|
||||
"url99": "",
|
||||
"urls": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\", '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ] }"
|
||||
}
|
||||
|
|
@ -0,0 +1,480 @@
|
|||
{
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"avatar_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"category_url_array": "{ [ ] }",
|
||||
"category_url_array_sanitized": "[]",
|
||||
"category_url_map": "{ [ ] }",
|
||||
"category_url_map_sanitized": "[]",
|
||||
"channel": "{ %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"channel_id": "{ %map_get_non_empty( entry_metadata, \"channel_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"channel_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"channel_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"channel_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"chapters": "{ [ ] }",
|
||||
"chapters_sanitized": "[]",
|
||||
"comments": "{ [ ] }",
|
||||
"comments_sanitized": "[]",
|
||||
"creator": "{ %map_get_non_empty( entry_metadata, \"creator\", %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"creator_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"creator\", %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"description": "{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"description_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"description\", '' ) ) }",
|
||||
"download_index": "{ %int(1) }",
|
||||
"download_index_padded6": "000001",
|
||||
"download_index_padded6_sanitized": "000001",
|
||||
"download_index_sanitized": "1",
|
||||
"duration": "{ %map_get_non_empty( entry_metadata, \"duration\", 0 ) }",
|
||||
"duration_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"duration\", 0 ) ) }",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_bilateral_scraping_sanitized": "true",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_resolution_assert_sanitized": "true",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"enable_throttle_protection_sanitized": "true",
|
||||
"entry_metadata": "{ { } }",
|
||||
"entry_metadata_sanitized": "{ %sanitize( entry_metadata ) }",
|
||||
"epoch": "{ %map_get( entry_metadata, \"epoch\" ) }",
|
||||
"epoch_date": "{ %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) }",
|
||||
"epoch_date_sanitized": "{ %sanitize( %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) }",
|
||||
"epoch_hour": "{ %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%H\" ) }",
|
||||
"epoch_hour_sanitized": "{ %sanitize( %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%H\" ) ) }",
|
||||
"epoch_sanitized": "{ %sanitize( %map_get( entry_metadata, \"epoch\" ) ) }",
|
||||
"ext": "{ %map_get( entry_metadata, \"ext\" ) }",
|
||||
"ext_sanitized": "{ %sanitize( %map_get( entry_metadata, \"ext\" ) ) }",
|
||||
"extractor": "{ %map_get( entry_metadata, \"extractor\" ) }",
|
||||
"extractor_key": "{ %map_get( entry_metadata, \"extractor_key\" ) }",
|
||||
"extractor_key_sanitized": "{ %sanitize( %map_get( entry_metadata, \"extractor_key\" ) ) }",
|
||||
"extractor_sanitized": "{ %sanitize( %map_get( entry_metadata, \"extractor\" ) ) }",
|
||||
"file_title": "{ %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"file_title_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"file_uid": "{ %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"file_uid_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"height": "{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"height_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"height\", 0 ) ) }",
|
||||
"ie_key": "{ %map_get_non_empty( entry_metadata, \"ie_key\", %map_get( entry_metadata, \"extractor_key\" ) ) }",
|
||||
"ie_key_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"ie_key\", %map_get( entry_metadata, \"extractor_key\" ) ) ) }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"include_sibling_metadata_sanitized": "false",
|
||||
"info_json_ext": "info.json",
|
||||
"info_json_ext_sanitized": "info.json",
|
||||
"modified_webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"modified_webpage_url_sanitized": "{ %sanitize( %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"music_video_album": "{ %get_url_field( \"category\", music_video_album_default ) }",
|
||||
"music_video_album_default": "Music Videos",
|
||||
"music_video_album_default_sanitized": "Music Videos",
|
||||
"music_video_album_sanitized": "{ %sanitize( %get_url_field( \"category\", music_video_album_default ) ) }",
|
||||
"music_video_artist": "Rick Astley",
|
||||
"music_video_artist_sanitized": "Rick Astley",
|
||||
"music_video_date": "{ %elif( %contains_url_field( \"date\" ), %get_url_field( \"date\", upload_date_standardized ), %contains_url_field( \"year\" ), %concat( %get_url_field( \"date\", upload_year ), \"-01-01\" ), upload_date_standardized ) }",
|
||||
"music_video_date_sanitized": "{ %sanitize( %elif( %contains_url_field( \"date\" ), %get_url_field( \"date\", upload_date_standardized ), %contains_url_field( \"year\" ), %concat( %get_url_field( \"date\", upload_year ), \"-01-01\" ), upload_date_standardized ) ) }",
|
||||
"music_video_directory": "tv_show_directory_path",
|
||||
"music_video_directory_sanitized": "tv_show_directory_path",
|
||||
"music_video_file_name": "Rick Astley/{ %sanitize( %get_url_field( \"title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"music_video_file_name_sanitized": "{ %sanitize( %concat( \"Rick Astley\", \"/\", %string( %sanitize( %get_url_field( \"title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ), '' ) ) }",
|
||||
"music_video_file_name_suffix": "",
|
||||
"music_video_file_name_suffix_sanitized": "",
|
||||
"music_video_genre": "Pop",
|
||||
"music_video_genre_default": "ytdl-sub",
|
||||
"music_video_genre_default_sanitized": "ytdl-sub",
|
||||
"music_video_genre_sanitized": "Pop",
|
||||
"music_video_title": "{ %get_url_field( \"title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"music_video_title_sanitized": "{ %sanitize( %get_url_field( \"title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"music_video_year": "{ %int( %elif( %contains_url_field( \"date\" ), %slice( %get_url_field( \"date\", upload_date_standardized ), 0, 4 ), %contains_url_field( \"year\" ), %get_url_field( \"date\", upload_year ), upload_year ) ) }",
|
||||
"music_video_year_sanitized": "{ %sanitize( %int( %elif( %contains_url_field( \"date\" ), %slice( %get_url_field( \"date\", upload_date_standardized ), 0, 4 ), %contains_url_field( \"year\" ), %get_url_field( \"date\", upload_year ), upload_year ) ) ) }",
|
||||
"playlist_count": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"playlist_count_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) ) }",
|
||||
"playlist_description": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) }",
|
||||
"playlist_description_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) }",
|
||||
"playlist_index": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"playlist_index_padded": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) }",
|
||||
"playlist_index_padded6": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 6 ) }",
|
||||
"playlist_index_padded6_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 6 ) ) }",
|
||||
"playlist_index_padded_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ) }",
|
||||
"playlist_index_reversed": "{ %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ) }",
|
||||
"playlist_index_reversed_padded": "{ %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 2 ) }",
|
||||
"playlist_index_reversed_padded6": "{ %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 6 ) }",
|
||||
"playlist_index_reversed_padded6_sanitized": "{ %sanitize( %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 6 ) ) }",
|
||||
"playlist_index_reversed_padded_sanitized": "{ %sanitize( %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 2 ) ) }",
|
||||
"playlist_index_reversed_sanitized": "{ %sanitize( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ) ) }",
|
||||
"playlist_index_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) ) }",
|
||||
"playlist_max_upload_date": "{ %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) }",
|
||||
"playlist_max_upload_date_sanitized": "{ %sanitize( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ) }",
|
||||
"playlist_max_upload_year": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) }",
|
||||
"playlist_max_upload_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ) }",
|
||||
"playlist_max_upload_year_truncated": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year_truncated\" ) ) }",
|
||||
"playlist_max_upload_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year_truncated\" ) ) ) }",
|
||||
"playlist_metadata": "{ %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) }",
|
||||
"playlist_metadata_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) ) }",
|
||||
"playlist_title": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_title_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uid": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"playlist_uid_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_uploader": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uploader_id": "{ %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uploader_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"playlist_uploader_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"playlist_uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"playlist_webpage_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"playlist_webpage_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"release_date": "{ %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) }",
|
||||
"release_date_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ) }",
|
||||
"release_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"date_standardized\" ) ) }",
|
||||
"release_date_standardized_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"release_day": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day\" ) ) }",
|
||||
"release_day_of_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year\" ) ) }",
|
||||
"release_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_padded\" ) ) }",
|
||||
"release_day_of_year_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_padded\" ) ) ) }",
|
||||
"release_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed\" ) ) }",
|
||||
"release_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"release_day_of_year_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed_padded\" ) ) ) }",
|
||||
"release_day_of_year_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed\" ) ) ) }",
|
||||
"release_day_of_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year\" ) ) ) }",
|
||||
"release_day_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_padded\" ) ) }",
|
||||
"release_day_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_padded\" ) ) ) }",
|
||||
"release_day_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed\" ) ) }",
|
||||
"release_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed_padded\" ) ) }",
|
||||
"release_day_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed_padded\" ) ) ) }",
|
||||
"release_day_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed\" ) ) ) }",
|
||||
"release_day_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day\" ) ) ) }",
|
||||
"release_month": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month\" ) ) }",
|
||||
"release_month_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_padded\" ) ) }",
|
||||
"release_month_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_padded\" ) ) ) }",
|
||||
"release_month_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed\" ) ) }",
|
||||
"release_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed_padded\" ) ) }",
|
||||
"release_month_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed_padded\" ) ) ) }",
|
||||
"release_month_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed\" ) ) ) }",
|
||||
"release_month_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month\" ) ) ) }",
|
||||
"release_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year\" ) ) }",
|
||||
"release_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year\" ) ) ) }",
|
||||
"release_year_truncated": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated\" ) ) }",
|
||||
"release_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated_reversed\" ) ) }",
|
||||
"release_year_truncated_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated_reversed\" ) ) ) }",
|
||||
"release_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated\" ) ) ) }",
|
||||
"requested_subtitles": "{ { } }",
|
||||
"requested_subtitles_sanitized": "{}",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_height_gte_sanitized": "361",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_ignore_titles_sanitized": "[]",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_is_ignored_sanitized": "{ %sanitize( %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_assert_print_sanitized": "true",
|
||||
"resolution_assert_sanitized": "{ %sanitize( %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) ) }",
|
||||
"resolution_readable": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }x{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"resolution_readable_sanitized": "{ %sanitize( %concat( %string( %map_get_non_empty( entry_metadata, \"width\", 0 ) ), \"x\", %string( %map_get_non_empty( entry_metadata, \"height\", 0 ) ) ) ) }",
|
||||
"sibling_metadata": "{ %map_get_non_empty( entry_metadata, \"sibling_metadata\", [ ] ) }",
|
||||
"sibling_metadata_sanitized": "{ %sanitize( sibling_metadata ) }",
|
||||
"source_count": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_count\", 1 ) }",
|
||||
"source_count_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_count\", 1 ) ) }",
|
||||
"source_description": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"description\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) }",
|
||||
"source_description_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"description\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) ) }",
|
||||
"source_index": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ) }",
|
||||
"source_index_padded": "{ %pad_zero( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ), 2 ) }",
|
||||
"source_index_padded_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ), 2 ) ) }",
|
||||
"source_index_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ) ) }",
|
||||
"source_metadata": "{ %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) }",
|
||||
"source_metadata_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) ) }",
|
||||
"source_title": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"title\", %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_title_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"title\", %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uid": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"id\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"source_uid_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"id\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_uploader": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uploader_id": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_id\", %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_id\", %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uploader_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"source_uploader_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) }",
|
||||
"source_uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) ) }",
|
||||
"source_webpage_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"source_webpage_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) }",
|
||||
"sponsorblock_chapters": "{ [ ] }",
|
||||
"sponsorblock_chapters_sanitized": "[]",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\" ] }",
|
||||
"subscription_array_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\uff02]",
|
||||
"subscription_has_download_archive": "{ %bool(False) }",
|
||||
"subscription_has_download_archive_sanitized": "false",
|
||||
"subscription_indent_1": "Pop",
|
||||
"subscription_indent_1_sanitized": "Pop",
|
||||
"subscription_map": "{ { } }",
|
||||
"subscription_map_sanitized": "{}",
|
||||
"subscription_name": "Rick Astley",
|
||||
"subscription_name_sanitized": "Rick Astley",
|
||||
"subscription_value": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_1": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_1_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"thumbnail_ext": "jpg",
|
||||
"thumbnail_ext_sanitized": "jpg",
|
||||
"title": "{ %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"title_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"title_sanitized_plex": "{ %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"title_sanitized_plex_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"uid": "{ %map_get( entry_metadata, \"id\" ) }",
|
||||
"uid_sanitized": "{ %sanitize( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uid_sanitized_plex": "{ %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uid_sanitized_plex_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"upload_date": "{ %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) }",
|
||||
"upload_date_index": "{ %int(1) }",
|
||||
"upload_date_index_padded": "01",
|
||||
"upload_date_index_padded_sanitized": "01",
|
||||
"upload_date_index_reversed": "{ %int(99) }",
|
||||
"upload_date_index_reversed_padded": "99",
|
||||
"upload_date_index_reversed_padded_sanitized": "99",
|
||||
"upload_date_index_reversed_sanitized": "99",
|
||||
"upload_date_index_sanitized": "1",
|
||||
"upload_date_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) }",
|
||||
"upload_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"upload_date_standardized_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"upload_day": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day\" ) ) }",
|
||||
"upload_day_of_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year\" ) ) }",
|
||||
"upload_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_padded\" ) ) }",
|
||||
"upload_day_of_year_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_padded\" ) ) ) }",
|
||||
"upload_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed_padded\" ) ) ) }",
|
||||
"upload_day_of_year_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed\" ) ) ) }",
|
||||
"upload_day_of_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year\" ) ) ) }",
|
||||
"upload_day_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ) }",
|
||||
"upload_day_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ) ) }",
|
||||
"upload_day_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed\" ) ) }",
|
||||
"upload_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed_padded\" ) ) }",
|
||||
"upload_day_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed_padded\" ) ) ) }",
|
||||
"upload_day_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed\" ) ) ) }",
|
||||
"upload_day_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day\" ) ) ) }",
|
||||
"upload_month": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) }",
|
||||
"upload_month_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_padded\" ) ) }",
|
||||
"upload_month_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_padded\" ) ) ) }",
|
||||
"upload_month_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed\" ) ) }",
|
||||
"upload_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed_padded\" ) ) }",
|
||||
"upload_month_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed_padded\" ) ) ) }",
|
||||
"upload_month_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed\" ) ) ) }",
|
||||
"upload_month_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) ) }",
|
||||
"upload_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"upload_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) }",
|
||||
"upload_year_truncated": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated\" ) ) }",
|
||||
"upload_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated_reversed\" ) ) }",
|
||||
"upload_year_truncated_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated_reversed\" ) ) ) }",
|
||||
"upload_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated\" ) ) ) }",
|
||||
"uploader": "{ %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"uploader_id": "{ %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"uploader_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"uploader_url": "{ %map_get_non_empty( entry_metadata, \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"url": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url100_sanitized": "",
|
||||
"url10_sanitized": "",
|
||||
"url11": "",
|
||||
"url11_sanitized": "",
|
||||
"url12": "",
|
||||
"url12_sanitized": "",
|
||||
"url13": "",
|
||||
"url13_sanitized": "",
|
||||
"url14": "",
|
||||
"url14_sanitized": "",
|
||||
"url15": "",
|
||||
"url15_sanitized": "",
|
||||
"url16": "",
|
||||
"url16_sanitized": "",
|
||||
"url17": "",
|
||||
"url17_sanitized": "",
|
||||
"url18": "",
|
||||
"url18_sanitized": "",
|
||||
"url19": "",
|
||||
"url19_sanitized": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url20_sanitized": "",
|
||||
"url21": "",
|
||||
"url21_sanitized": "",
|
||||
"url22": "",
|
||||
"url22_sanitized": "",
|
||||
"url23": "",
|
||||
"url23_sanitized": "",
|
||||
"url24": "",
|
||||
"url24_sanitized": "",
|
||||
"url25": "",
|
||||
"url25_sanitized": "",
|
||||
"url26": "",
|
||||
"url26_sanitized": "",
|
||||
"url27": "",
|
||||
"url27_sanitized": "",
|
||||
"url28": "",
|
||||
"url28_sanitized": "",
|
||||
"url29": "",
|
||||
"url29_sanitized": "",
|
||||
"url2_sanitized": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url30_sanitized": "",
|
||||
"url31": "",
|
||||
"url31_sanitized": "",
|
||||
"url32": "",
|
||||
"url32_sanitized": "",
|
||||
"url33": "",
|
||||
"url33_sanitized": "",
|
||||
"url34": "",
|
||||
"url34_sanitized": "",
|
||||
"url35": "",
|
||||
"url35_sanitized": "",
|
||||
"url36": "",
|
||||
"url36_sanitized": "",
|
||||
"url37": "",
|
||||
"url37_sanitized": "",
|
||||
"url38": "",
|
||||
"url38_sanitized": "",
|
||||
"url39": "",
|
||||
"url39_sanitized": "",
|
||||
"url3_sanitized": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url40_sanitized": "",
|
||||
"url41": "",
|
||||
"url41_sanitized": "",
|
||||
"url42": "",
|
||||
"url42_sanitized": "",
|
||||
"url43": "",
|
||||
"url43_sanitized": "",
|
||||
"url44": "",
|
||||
"url44_sanitized": "",
|
||||
"url45": "",
|
||||
"url45_sanitized": "",
|
||||
"url46": "",
|
||||
"url46_sanitized": "",
|
||||
"url47": "",
|
||||
"url47_sanitized": "",
|
||||
"url48": "",
|
||||
"url48_sanitized": "",
|
||||
"url49": "",
|
||||
"url49_sanitized": "",
|
||||
"url4_sanitized": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url50_sanitized": "",
|
||||
"url51": "",
|
||||
"url51_sanitized": "",
|
||||
"url52": "",
|
||||
"url52_sanitized": "",
|
||||
"url53": "",
|
||||
"url53_sanitized": "",
|
||||
"url54": "",
|
||||
"url54_sanitized": "",
|
||||
"url55": "",
|
||||
"url55_sanitized": "",
|
||||
"url56": "",
|
||||
"url56_sanitized": "",
|
||||
"url57": "",
|
||||
"url57_sanitized": "",
|
||||
"url58": "",
|
||||
"url58_sanitized": "",
|
||||
"url59": "",
|
||||
"url59_sanitized": "",
|
||||
"url5_sanitized": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url60_sanitized": "",
|
||||
"url61": "",
|
||||
"url61_sanitized": "",
|
||||
"url62": "",
|
||||
"url62_sanitized": "",
|
||||
"url63": "",
|
||||
"url63_sanitized": "",
|
||||
"url64": "",
|
||||
"url64_sanitized": "",
|
||||
"url65": "",
|
||||
"url65_sanitized": "",
|
||||
"url66": "",
|
||||
"url66_sanitized": "",
|
||||
"url67": "",
|
||||
"url67_sanitized": "",
|
||||
"url68": "",
|
||||
"url68_sanitized": "",
|
||||
"url69": "",
|
||||
"url69_sanitized": "",
|
||||
"url6_sanitized": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url70_sanitized": "",
|
||||
"url71": "",
|
||||
"url71_sanitized": "",
|
||||
"url72": "",
|
||||
"url72_sanitized": "",
|
||||
"url73": "",
|
||||
"url73_sanitized": "",
|
||||
"url74": "",
|
||||
"url74_sanitized": "",
|
||||
"url75": "",
|
||||
"url75_sanitized": "",
|
||||
"url76": "",
|
||||
"url76_sanitized": "",
|
||||
"url77": "",
|
||||
"url77_sanitized": "",
|
||||
"url78": "",
|
||||
"url78_sanitized": "",
|
||||
"url79": "",
|
||||
"url79_sanitized": "",
|
||||
"url7_sanitized": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url80_sanitized": "",
|
||||
"url81": "",
|
||||
"url81_sanitized": "",
|
||||
"url82": "",
|
||||
"url82_sanitized": "",
|
||||
"url83": "",
|
||||
"url83_sanitized": "",
|
||||
"url84": "",
|
||||
"url84_sanitized": "",
|
||||
"url85": "",
|
||||
"url85_sanitized": "",
|
||||
"url86": "",
|
||||
"url86_sanitized": "",
|
||||
"url87": "",
|
||||
"url87_sanitized": "",
|
||||
"url88": "",
|
||||
"url88_sanitized": "",
|
||||
"url89": "",
|
||||
"url89_sanitized": "",
|
||||
"url8_sanitized": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url90_sanitized": "",
|
||||
"url91": "",
|
||||
"url91_sanitized": "",
|
||||
"url92": "",
|
||||
"url92_sanitized": "",
|
||||
"url93": "",
|
||||
"url93_sanitized": "",
|
||||
"url94": "",
|
||||
"url94_sanitized": "",
|
||||
"url95": "",
|
||||
"url95_sanitized": "",
|
||||
"url96": "",
|
||||
"url96_sanitized": "",
|
||||
"url97": "",
|
||||
"url97_sanitized": "",
|
||||
"url98": "",
|
||||
"url98_sanitized": "",
|
||||
"url99": "",
|
||||
"url99_sanitized": "",
|
||||
"url9_sanitized": "",
|
||||
"url_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"urls": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\", '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ] }",
|
||||
"urls_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02]",
|
||||
"webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"webpage_url_sanitized": "{ %sanitize( %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"width": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }",
|
||||
"width_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"width\", 0 ) ) }",
|
||||
"ytdl_sub_entry_date_eval": "{ %string( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"ytdl_sub_entry_date_eval_sanitized": "{ %sanitize( %string( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) ) }",
|
||||
"ytdl_sub_input_url": "",
|
||||
"ytdl_sub_input_url_count": "{ %int(0) }",
|
||||
"ytdl_sub_input_url_count_sanitized": "0",
|
||||
"ytdl_sub_input_url_index": "{ %int(-1) }",
|
||||
"ytdl_sub_input_url_index_sanitized": "-1",
|
||||
"ytdl_sub_input_url_sanitized": ""
|
||||
}
|
||||
136
tests/resources/expected_json/music_video/inspect_overrides.json
Normal file
136
tests/resources/expected_json/music_video/inspect_overrides.json
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"category_url_array": "{ [ ] }",
|
||||
"category_url_map": "{ [ ] }",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"file_title": "{ title_sanitized_plex }",
|
||||
"file_uid": "{ uid_sanitized_plex }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"modified_webpage_url": "{ webpage_url }",
|
||||
"music_video_album": "{ %get_url_field( \"category\", music_video_album_default ) }",
|
||||
"music_video_album_default": "Music Videos",
|
||||
"music_video_artist": "Rick Astley",
|
||||
"music_video_date": "{ %elif( %contains_url_field( \"date\" ), %get_url_field( \"date\", upload_date_standardized ), %contains_url_field( \"year\" ), %concat( %get_url_field( \"date\", upload_year ), \"-01-01\" ), upload_date_standardized ) }",
|
||||
"music_video_directory": "tv_show_directory_path",
|
||||
"music_video_file_name": "Rick Astley/{ %sanitize( %get_url_field( \"title\", title ) ) }",
|
||||
"music_video_file_name_suffix": "",
|
||||
"music_video_genre": "Pop",
|
||||
"music_video_genre_default": "ytdl-sub",
|
||||
"music_video_title": "{ %get_url_field( \"title\", title ) }",
|
||||
"music_video_year": "{ %int( %elif( %contains_url_field( \"date\" ), %slice( %get_url_field( \"date\", upload_date_standardized ), 0, 4 ), %contains_url_field( \"year\" ), %get_url_field( \"date\", upload_year ), upload_year ) ) }",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_readable": "{ width }x{ height }",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\" ] }",
|
||||
"subscription_indent_1": "Pop",
|
||||
"subscription_map": "{ { } }",
|
||||
"subscription_value": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_1": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"url": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url11": "",
|
||||
"url12": "",
|
||||
"url13": "",
|
||||
"url14": "",
|
||||
"url15": "",
|
||||
"url16": "",
|
||||
"url17": "",
|
||||
"url18": "",
|
||||
"url19": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url21": "",
|
||||
"url22": "",
|
||||
"url23": "",
|
||||
"url24": "",
|
||||
"url25": "",
|
||||
"url26": "",
|
||||
"url27": "",
|
||||
"url28": "",
|
||||
"url29": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url31": "",
|
||||
"url32": "",
|
||||
"url33": "",
|
||||
"url34": "",
|
||||
"url35": "",
|
||||
"url36": "",
|
||||
"url37": "",
|
||||
"url38": "",
|
||||
"url39": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url41": "",
|
||||
"url42": "",
|
||||
"url43": "",
|
||||
"url44": "",
|
||||
"url45": "",
|
||||
"url46": "",
|
||||
"url47": "",
|
||||
"url48": "",
|
||||
"url49": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url51": "",
|
||||
"url52": "",
|
||||
"url53": "",
|
||||
"url54": "",
|
||||
"url55": "",
|
||||
"url56": "",
|
||||
"url57": "",
|
||||
"url58": "",
|
||||
"url59": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url61": "",
|
||||
"url62": "",
|
||||
"url63": "",
|
||||
"url64": "",
|
||||
"url65": "",
|
||||
"url66": "",
|
||||
"url67": "",
|
||||
"url68": "",
|
||||
"url69": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url71": "",
|
||||
"url72": "",
|
||||
"url73": "",
|
||||
"url74": "",
|
||||
"url75": "",
|
||||
"url76": "",
|
||||
"url77": "",
|
||||
"url78": "",
|
||||
"url79": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url81": "",
|
||||
"url82": "",
|
||||
"url83": "",
|
||||
"url84": "",
|
||||
"url85": "",
|
||||
"url86": "",
|
||||
"url87": "",
|
||||
"url88": "",
|
||||
"url89": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url91": "",
|
||||
"url92": "",
|
||||
"url93": "",
|
||||
"url94": "",
|
||||
"url95": "",
|
||||
"url96": "",
|
||||
"url97": "",
|
||||
"url98": "",
|
||||
"url99": "",
|
||||
"urls": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\", '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ] }"
|
||||
}
|
||||
480
tests/resources/expected_json/music_video/inspect_variables.json
Normal file
480
tests/resources/expected_json/music_video/inspect_variables.json
Normal file
|
|
@ -0,0 +1,480 @@
|
|||
{
|
||||
"avatar_uncropped_thumbnail_file_name": "",
|
||||
"avatar_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"banner_uncropped_thumbnail_file_name": "",
|
||||
"banner_uncropped_thumbnail_file_name_sanitized": "",
|
||||
"category_url_array": "{ [ ] }",
|
||||
"category_url_array_sanitized": "[]",
|
||||
"category_url_map": "{ [ ] }",
|
||||
"category_url_map_sanitized": "[]",
|
||||
"channel": "{ %map_get_non_empty( entry_metadata, \"channel\", uploader ) }",
|
||||
"channel_id": "{ %map_get_non_empty( entry_metadata, \"channel_id\", uploader_id ) }",
|
||||
"channel_id_sanitized": "{ %sanitize( channel_id ) }",
|
||||
"channel_sanitized": "{ %sanitize( channel ) }",
|
||||
"chapters": "{ [ ] }",
|
||||
"chapters_sanitized": "{ %sanitize( chapters ) }",
|
||||
"comments": "{ [ ] }",
|
||||
"comments_sanitized": "{ %sanitize( comments ) }",
|
||||
"creator": "{ %map_get_non_empty( entry_metadata, \"creator\", channel ) }",
|
||||
"creator_sanitized": "{ %sanitize( creator ) }",
|
||||
"description": "{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"description_sanitized": "{ %sanitize( description ) }",
|
||||
"download_index": "{ %int( 1 ) }",
|
||||
"download_index_padded6": "{ %pad_zero( download_index, 6 ) }",
|
||||
"download_index_padded6_sanitized": "{ %sanitize( download_index_padded6 ) }",
|
||||
"download_index_sanitized": "{ %sanitize( download_index ) }",
|
||||
"duration": "{ %map_get_non_empty( entry_metadata, \"duration\", 0 ) }",
|
||||
"duration_sanitized": "{ %sanitize( duration ) }",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_bilateral_scraping_sanitized": "true",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_resolution_assert_sanitized": "true",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"enable_throttle_protection_sanitized": "true",
|
||||
"entry_metadata": "{ { } }",
|
||||
"entry_metadata_sanitized": "{ %sanitize( entry_metadata ) }",
|
||||
"epoch": "{ %map_get( entry_metadata, \"epoch\" ) }",
|
||||
"epoch_date": "{ %datetime_strftime( epoch, \"%Y%m%d\" ) }",
|
||||
"epoch_date_sanitized": "{ %sanitize( epoch_date ) }",
|
||||
"epoch_hour": "{ %datetime_strftime( epoch, \"%H\" ) }",
|
||||
"epoch_hour_sanitized": "{ %sanitize( epoch_hour ) }",
|
||||
"epoch_sanitized": "{ %sanitize( epoch ) }",
|
||||
"ext": "{ %map_get( entry_metadata, \"ext\" ) }",
|
||||
"ext_sanitized": "{ %sanitize( ext ) }",
|
||||
"extractor": "{ %map_get( entry_metadata, \"extractor\" ) }",
|
||||
"extractor_key": "{ %map_get( entry_metadata, \"extractor_key\" ) }",
|
||||
"extractor_key_sanitized": "{ %sanitize( extractor_key ) }",
|
||||
"extractor_sanitized": "{ %sanitize( extractor ) }",
|
||||
"file_title": "{ title_sanitized_plex }",
|
||||
"file_title_sanitized": "{ %sanitize( title_sanitized_plex ) }",
|
||||
"file_uid": "{ uid_sanitized_plex }",
|
||||
"file_uid_sanitized": "{ %sanitize( uid_sanitized_plex ) }",
|
||||
"height": "{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"height_sanitized": "{ %sanitize( height ) }",
|
||||
"ie_key": "{ %map_get_non_empty( entry_metadata, \"ie_key\", extractor_key ) }",
|
||||
"ie_key_sanitized": "{ %sanitize( ie_key ) }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"include_sibling_metadata_sanitized": "false",
|
||||
"info_json_ext": "info.json",
|
||||
"info_json_ext_sanitized": "info.json",
|
||||
"modified_webpage_url": "{ webpage_url }",
|
||||
"modified_webpage_url_sanitized": "{ %sanitize( webpage_url ) }",
|
||||
"music_video_album": "{ %get_url_field( \"category\", music_video_album_default ) }",
|
||||
"music_video_album_default": "Music Videos",
|
||||
"music_video_album_default_sanitized": "Music Videos",
|
||||
"music_video_album_sanitized": "{ %sanitize( %get_url_field( \"category\", music_video_album_default ) ) }",
|
||||
"music_video_artist": "Rick Astley",
|
||||
"music_video_artist_sanitized": "Rick Astley",
|
||||
"music_video_date": "{ %elif( %contains_url_field( \"date\" ), %get_url_field( \"date\", upload_date_standardized ), %contains_url_field( \"year\" ), %concat( %get_url_field( \"date\", upload_year ), \"-01-01\" ), upload_date_standardized ) }",
|
||||
"music_video_date_sanitized": "{ %sanitize( %elif( %contains_url_field( \"date\" ), %get_url_field( \"date\", upload_date_standardized ), %contains_url_field( \"year\" ), %concat( %get_url_field( \"date\", upload_year ), \"-01-01\" ), upload_date_standardized ) ) }",
|
||||
"music_video_directory": "tv_show_directory_path",
|
||||
"music_video_directory_sanitized": "tv_show_directory_path",
|
||||
"music_video_file_name": "Rick Astley/{ %sanitize( %get_url_field( \"title\", title ) ) }",
|
||||
"music_video_file_name_sanitized": "{ %sanitize( %concat( \"Rick Astley\", \"/\", %string( %sanitize( %get_url_field( \"title\", title ) ) ), '' ) ) }",
|
||||
"music_video_file_name_suffix": "",
|
||||
"music_video_file_name_suffix_sanitized": "",
|
||||
"music_video_genre": "Pop",
|
||||
"music_video_genre_default": "ytdl-sub",
|
||||
"music_video_genre_default_sanitized": "ytdl-sub",
|
||||
"music_video_genre_sanitized": "Pop",
|
||||
"music_video_title": "{ %get_url_field( \"title\", title ) }",
|
||||
"music_video_title_sanitized": "{ %sanitize( %get_url_field( \"title\", title ) ) }",
|
||||
"music_video_year": "{ %int( %elif( %contains_url_field( \"date\" ), %slice( %get_url_field( \"date\", upload_date_standardized ), 0, 4 ), %contains_url_field( \"year\" ), %get_url_field( \"date\", upload_year ), upload_year ) ) }",
|
||||
"music_video_year_sanitized": "{ %sanitize( %int( %elif( %contains_url_field( \"date\" ), %slice( %get_url_field( \"date\", upload_date_standardized ), 0, 4 ), %contains_url_field( \"year\" ), %get_url_field( \"date\", upload_year ), upload_year ) ) ) }",
|
||||
"playlist_count": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"playlist_count_sanitized": "{ %sanitize( playlist_count ) }",
|
||||
"playlist_description": "{ %map_get_non_empty( playlist_metadata, \"description\", description ) }",
|
||||
"playlist_description_sanitized": "{ %sanitize( playlist_description ) }",
|
||||
"playlist_index": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"playlist_index_padded": "{ %pad_zero( playlist_index, 2 ) }",
|
||||
"playlist_index_padded6": "{ %pad_zero( playlist_index, 6 ) }",
|
||||
"playlist_index_padded6_sanitized": "{ %sanitize( playlist_index_padded6 ) }",
|
||||
"playlist_index_padded_sanitized": "{ %sanitize( playlist_index_padded ) }",
|
||||
"playlist_index_reversed": "{ %sub( playlist_count, playlist_index, -1 ) }",
|
||||
"playlist_index_reversed_padded": "{ %pad_zero( playlist_index_reversed, 2 ) }",
|
||||
"playlist_index_reversed_padded6": "{ %pad_zero( playlist_index_reversed, 6 ) }",
|
||||
"playlist_index_reversed_padded6_sanitized": "{ %sanitize( playlist_index_reversed_padded6 ) }",
|
||||
"playlist_index_reversed_padded_sanitized": "{ %sanitize( playlist_index_reversed_padded ) }",
|
||||
"playlist_index_reversed_sanitized": "{ %sanitize( playlist_index_reversed ) }",
|
||||
"playlist_index_sanitized": "{ %sanitize( playlist_index ) }",
|
||||
"playlist_max_upload_date": "{ %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) }",
|
||||
"playlist_max_upload_date_sanitized": "{ %sanitize( playlist_max_upload_date ) }",
|
||||
"playlist_max_upload_year": "{ %int( %map_get( %to_date_metadata( playlist_max_upload_date ), \"year\" ) ) }",
|
||||
"playlist_max_upload_year_sanitized": "{ %sanitize( playlist_max_upload_year ) }",
|
||||
"playlist_max_upload_year_truncated": "{ %int( %map_get( %to_date_metadata( playlist_max_upload_date ), \"year_truncated\" ) ) }",
|
||||
"playlist_max_upload_year_truncated_sanitized": "{ %sanitize( playlist_max_upload_year_truncated ) }",
|
||||
"playlist_metadata": "{ %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) }",
|
||||
"playlist_metadata_sanitized": "{ %sanitize( playlist_metadata ) }",
|
||||
"playlist_title": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", title ) }",
|
||||
"playlist_title_sanitized": "{ %sanitize( playlist_title ) }",
|
||||
"playlist_uid": "{ %map_get_non_empty( playlist_metadata, \"playlist_id\", uid ) }",
|
||||
"playlist_uid_sanitized": "{ %sanitize( playlist_uid ) }",
|
||||
"playlist_uploader": "{ %map_get_non_empty( playlist_metadata, \"uploader\", uploader ) }",
|
||||
"playlist_uploader_id": "{ %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", uploader_id ) }",
|
||||
"playlist_uploader_id_sanitized": "{ %sanitize( playlist_uploader_id ) }",
|
||||
"playlist_uploader_sanitized": "{ %sanitize( playlist_uploader ) }",
|
||||
"playlist_uploader_url": "{ %map_get_non_empty( playlist_metadata, \"uploader_url\", webpage_url ) }",
|
||||
"playlist_uploader_url_sanitized": "{ %sanitize( playlist_uploader_url ) }",
|
||||
"playlist_webpage_url": "{ %map_get_non_empty( playlist_metadata, \"webpage_url\", webpage_url ) }",
|
||||
"playlist_webpage_url_sanitized": "{ %sanitize( playlist_webpage_url ) }",
|
||||
"release_date": "{ %map_get_non_empty( entry_metadata, \"release_date\", upload_date ) }",
|
||||
"release_date_sanitized": "{ %sanitize( release_date ) }",
|
||||
"release_date_standardized": "{ %string( %map_get( %to_date_metadata( release_date ), \"date_standardized\" ) ) }",
|
||||
"release_date_standardized_sanitized": "{ %sanitize( release_date_standardized ) }",
|
||||
"release_day": "{ %int( %map_get( %to_date_metadata( release_date ), \"day\" ) ) }",
|
||||
"release_day_of_year": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_of_year\" ) ) }",
|
||||
"release_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_of_year_padded\" ) ) }",
|
||||
"release_day_of_year_padded_sanitized": "{ %sanitize( release_day_of_year_padded ) }",
|
||||
"release_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_of_year_reversed\" ) ) }",
|
||||
"release_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"release_day_of_year_reversed_padded_sanitized": "{ %sanitize( release_day_of_year_reversed_padded ) }",
|
||||
"release_day_of_year_reversed_sanitized": "{ %sanitize( release_day_of_year_reversed ) }",
|
||||
"release_day_of_year_sanitized": "{ %sanitize( release_day_of_year ) }",
|
||||
"release_day_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_padded\" ) ) }",
|
||||
"release_day_padded_sanitized": "{ %sanitize( release_day_padded ) }",
|
||||
"release_day_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_reversed\" ) ) }",
|
||||
"release_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_reversed_padded\" ) ) }",
|
||||
"release_day_reversed_padded_sanitized": "{ %sanitize( release_day_reversed_padded ) }",
|
||||
"release_day_reversed_sanitized": "{ %sanitize( release_day_reversed ) }",
|
||||
"release_day_sanitized": "{ %sanitize( release_day ) }",
|
||||
"release_month": "{ %int( %map_get( %to_date_metadata( release_date ), \"month\" ) ) }",
|
||||
"release_month_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"month_padded\" ) ) }",
|
||||
"release_month_padded_sanitized": "{ %sanitize( release_month_padded ) }",
|
||||
"release_month_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"month_reversed\" ) ) }",
|
||||
"release_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"month_reversed_padded\" ) ) }",
|
||||
"release_month_reversed_padded_sanitized": "{ %sanitize( release_month_reversed_padded ) }",
|
||||
"release_month_reversed_sanitized": "{ %sanitize( release_month_reversed ) }",
|
||||
"release_month_sanitized": "{ %sanitize( release_month ) }",
|
||||
"release_year": "{ %int( %map_get( %to_date_metadata( release_date ), \"year\" ) ) }",
|
||||
"release_year_sanitized": "{ %sanitize( release_year ) }",
|
||||
"release_year_truncated": "{ %int( %map_get( %to_date_metadata( release_date ), \"year_truncated\" ) ) }",
|
||||
"release_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"year_truncated_reversed\" ) ) }",
|
||||
"release_year_truncated_reversed_sanitized": "{ %sanitize( release_year_truncated_reversed ) }",
|
||||
"release_year_truncated_sanitized": "{ %sanitize( release_year_truncated ) }",
|
||||
"requested_subtitles": "{ { } }",
|
||||
"requested_subtitles_sanitized": "{ %sanitize( requested_subtitles ) }",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_height_gte_sanitized": "361",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_ignore_titles_sanitized": "[]",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_is_ignored_sanitized": "{ %sanitize( %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_assert_print_sanitized": "true",
|
||||
"resolution_assert_sanitized": "{ %sanitize( %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) ) }",
|
||||
"resolution_readable": "{ width }x{ height }",
|
||||
"resolution_readable_sanitized": "{ %sanitize( %concat( %string( width ), \"x\", %string( height ) ) ) }",
|
||||
"sibling_metadata": "{ %map_get_non_empty( entry_metadata, \"sibling_metadata\", [ ] ) }",
|
||||
"sibling_metadata_sanitized": "{ %sanitize( sibling_metadata ) }",
|
||||
"source_count": "{ %map_get_non_empty( playlist_metadata, \"playlist_count\", 1 ) }",
|
||||
"source_count_sanitized": "{ %sanitize( source_count ) }",
|
||||
"source_description": "{ %map_get_non_empty( source_metadata, \"description\", playlist_description ) }",
|
||||
"source_description_sanitized": "{ %sanitize( source_description ) }",
|
||||
"source_index": "{ %map_get_non_empty( playlist_metadata, \"playlist_index\", 1 ) }",
|
||||
"source_index_padded": "{ %pad_zero( source_index, 2 ) }",
|
||||
"source_index_padded_sanitized": "{ %sanitize( source_index_padded ) }",
|
||||
"source_index_sanitized": "{ %sanitize( source_index ) }",
|
||||
"source_metadata": "{ %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) }",
|
||||
"source_metadata_sanitized": "{ %sanitize( source_metadata ) }",
|
||||
"source_title": "{ %map_get_non_empty( source_metadata, \"title\", playlist_title ) }",
|
||||
"source_title_sanitized": "{ %sanitize( source_title ) }",
|
||||
"source_uid": "{ %map_get_non_empty( source_metadata, \"id\", playlist_uid ) }",
|
||||
"source_uid_sanitized": "{ %sanitize( source_uid ) }",
|
||||
"source_uploader": "{ %map_get_non_empty( source_metadata, \"uploader\", playlist_uploader ) }",
|
||||
"source_uploader_id": "{ %map_get_non_empty( source_metadata, \"uploader_id\", playlist_uploader_id ) }",
|
||||
"source_uploader_id_sanitized": "{ %sanitize( source_uploader_id ) }",
|
||||
"source_uploader_sanitized": "{ %sanitize( source_uploader ) }",
|
||||
"source_uploader_url": "{ %map_get_non_empty( source_metadata, \"uploader_url\", source_webpage_url ) }",
|
||||
"source_uploader_url_sanitized": "{ %sanitize( source_uploader_url ) }",
|
||||
"source_webpage_url": "{ %map_get_non_empty( source_metadata, \"webpage_url\", playlist_webpage_url ) }",
|
||||
"source_webpage_url_sanitized": "{ %sanitize( source_webpage_url ) }",
|
||||
"sponsorblock_chapters": "{ [ ] }",
|
||||
"sponsorblock_chapters_sanitized": "{ %sanitize( sponsorblock_chapters ) }",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\" ] }",
|
||||
"subscription_array_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\uff02]",
|
||||
"subscription_has_download_archive": "{ %bool(False) }",
|
||||
"subscription_has_download_archive_sanitized": "false",
|
||||
"subscription_indent_1": "Pop",
|
||||
"subscription_indent_1_sanitized": "Pop",
|
||||
"subscription_map": "{ { } }",
|
||||
"subscription_map_sanitized": "{}",
|
||||
"subscription_name": "Rick Astley",
|
||||
"subscription_name_sanitized": "Rick Astley",
|
||||
"subscription_value": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_1": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_1_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"subscription_value_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"thumbnail_ext": "jpg",
|
||||
"thumbnail_ext_sanitized": "jpg",
|
||||
"title": "{ %map_get_non_empty( entry_metadata, \"title\", uid ) }",
|
||||
"title_sanitized": "{ %sanitize( title ) }",
|
||||
"title_sanitized_plex": "{ %sanitize_plex_episode( title ) }",
|
||||
"title_sanitized_plex_sanitized": "{ %sanitize( title_sanitized_plex ) }",
|
||||
"uid": "{ %map_get( entry_metadata, \"id\" ) }",
|
||||
"uid_sanitized": "{ %sanitize( uid ) }",
|
||||
"uid_sanitized_plex": "{ %sanitize_plex_episode( uid ) }",
|
||||
"uid_sanitized_plex_sanitized": "{ %sanitize( uid_sanitized_plex ) }",
|
||||
"upload_date": "{ %map_get_non_empty( entry_metadata, \"upload_date\", epoch_date ) }",
|
||||
"upload_date_index": "{ %int( 1 ) }",
|
||||
"upload_date_index_padded": "{ %pad_zero( upload_date_index, 2 ) }",
|
||||
"upload_date_index_padded_sanitized": "{ %sanitize( upload_date_index_padded ) }",
|
||||
"upload_date_index_reversed": "{ %sub( 100, upload_date_index ) }",
|
||||
"upload_date_index_reversed_padded": "{ %pad_zero( upload_date_index_reversed, 2 ) }",
|
||||
"upload_date_index_reversed_padded_sanitized": "{ %sanitize( upload_date_index_reversed_padded ) }",
|
||||
"upload_date_index_reversed_sanitized": "{ %sanitize( upload_date_index_reversed ) }",
|
||||
"upload_date_index_sanitized": "{ %sanitize( upload_date_index ) }",
|
||||
"upload_date_sanitized": "{ %sanitize( upload_date ) }",
|
||||
"upload_date_standardized": "{ %string( %map_get( %to_date_metadata( upload_date ), \"date_standardized\" ) ) }",
|
||||
"upload_date_standardized_sanitized": "{ %sanitize( upload_date_standardized ) }",
|
||||
"upload_day": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day\" ) ) }",
|
||||
"upload_day_of_year": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_of_year\" ) ) }",
|
||||
"upload_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_of_year_padded\" ) ) }",
|
||||
"upload_day_of_year_padded_sanitized": "{ %sanitize( upload_day_of_year_padded ) }",
|
||||
"upload_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_of_year_reversed\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded_sanitized": "{ %sanitize( upload_day_of_year_reversed_padded ) }",
|
||||
"upload_day_of_year_reversed_sanitized": "{ %sanitize( upload_day_of_year_reversed ) }",
|
||||
"upload_day_of_year_sanitized": "{ %sanitize( upload_day_of_year ) }",
|
||||
"upload_day_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_padded\" ) ) }",
|
||||
"upload_day_padded_sanitized": "{ %sanitize( upload_day_padded ) }",
|
||||
"upload_day_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_reversed\" ) ) }",
|
||||
"upload_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_reversed_padded\" ) ) }",
|
||||
"upload_day_reversed_padded_sanitized": "{ %sanitize( upload_day_reversed_padded ) }",
|
||||
"upload_day_reversed_sanitized": "{ %sanitize( upload_day_reversed ) }",
|
||||
"upload_day_sanitized": "{ %sanitize( upload_day ) }",
|
||||
"upload_month": "{ %int( %map_get( %to_date_metadata( upload_date ), \"month\" ) ) }",
|
||||
"upload_month_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"month_padded\" ) ) }",
|
||||
"upload_month_padded_sanitized": "{ %sanitize( upload_month_padded ) }",
|
||||
"upload_month_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"month_reversed\" ) ) }",
|
||||
"upload_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"month_reversed_padded\" ) ) }",
|
||||
"upload_month_reversed_padded_sanitized": "{ %sanitize( upload_month_reversed_padded ) }",
|
||||
"upload_month_reversed_sanitized": "{ %sanitize( upload_month_reversed ) }",
|
||||
"upload_month_sanitized": "{ %sanitize( upload_month ) }",
|
||||
"upload_year": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year\" ) ) }",
|
||||
"upload_year_sanitized": "{ %sanitize( upload_year ) }",
|
||||
"upload_year_truncated": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year_truncated\" ) ) }",
|
||||
"upload_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year_truncated_reversed\" ) ) }",
|
||||
"upload_year_truncated_reversed_sanitized": "{ %sanitize( upload_year_truncated_reversed ) }",
|
||||
"upload_year_truncated_sanitized": "{ %sanitize( upload_year_truncated ) }",
|
||||
"uploader": "{ %map_get_non_empty( entry_metadata, \"uploader\", uploader_id ) }",
|
||||
"uploader_id": "{ %map_get_non_empty( entry_metadata, \"uploader_id\", uid ) }",
|
||||
"uploader_id_sanitized": "{ %sanitize( uploader_id ) }",
|
||||
"uploader_sanitized": "{ %sanitize( uploader ) }",
|
||||
"uploader_url": "{ %map_get_non_empty( entry_metadata, \"uploader_url\", webpage_url ) }",
|
||||
"uploader_url_sanitized": "{ %sanitize( uploader_url ) }",
|
||||
"url": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url100_sanitized": "",
|
||||
"url10_sanitized": "",
|
||||
"url11": "",
|
||||
"url11_sanitized": "",
|
||||
"url12": "",
|
||||
"url12_sanitized": "",
|
||||
"url13": "",
|
||||
"url13_sanitized": "",
|
||||
"url14": "",
|
||||
"url14_sanitized": "",
|
||||
"url15": "",
|
||||
"url15_sanitized": "",
|
||||
"url16": "",
|
||||
"url16_sanitized": "",
|
||||
"url17": "",
|
||||
"url17_sanitized": "",
|
||||
"url18": "",
|
||||
"url18_sanitized": "",
|
||||
"url19": "",
|
||||
"url19_sanitized": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url20_sanitized": "",
|
||||
"url21": "",
|
||||
"url21_sanitized": "",
|
||||
"url22": "",
|
||||
"url22_sanitized": "",
|
||||
"url23": "",
|
||||
"url23_sanitized": "",
|
||||
"url24": "",
|
||||
"url24_sanitized": "",
|
||||
"url25": "",
|
||||
"url25_sanitized": "",
|
||||
"url26": "",
|
||||
"url26_sanitized": "",
|
||||
"url27": "",
|
||||
"url27_sanitized": "",
|
||||
"url28": "",
|
||||
"url28_sanitized": "",
|
||||
"url29": "",
|
||||
"url29_sanitized": "",
|
||||
"url2_sanitized": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url30_sanitized": "",
|
||||
"url31": "",
|
||||
"url31_sanitized": "",
|
||||
"url32": "",
|
||||
"url32_sanitized": "",
|
||||
"url33": "",
|
||||
"url33_sanitized": "",
|
||||
"url34": "",
|
||||
"url34_sanitized": "",
|
||||
"url35": "",
|
||||
"url35_sanitized": "",
|
||||
"url36": "",
|
||||
"url36_sanitized": "",
|
||||
"url37": "",
|
||||
"url37_sanitized": "",
|
||||
"url38": "",
|
||||
"url38_sanitized": "",
|
||||
"url39": "",
|
||||
"url39_sanitized": "",
|
||||
"url3_sanitized": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url40_sanitized": "",
|
||||
"url41": "",
|
||||
"url41_sanitized": "",
|
||||
"url42": "",
|
||||
"url42_sanitized": "",
|
||||
"url43": "",
|
||||
"url43_sanitized": "",
|
||||
"url44": "",
|
||||
"url44_sanitized": "",
|
||||
"url45": "",
|
||||
"url45_sanitized": "",
|
||||
"url46": "",
|
||||
"url46_sanitized": "",
|
||||
"url47": "",
|
||||
"url47_sanitized": "",
|
||||
"url48": "",
|
||||
"url48_sanitized": "",
|
||||
"url49": "",
|
||||
"url49_sanitized": "",
|
||||
"url4_sanitized": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url50_sanitized": "",
|
||||
"url51": "",
|
||||
"url51_sanitized": "",
|
||||
"url52": "",
|
||||
"url52_sanitized": "",
|
||||
"url53": "",
|
||||
"url53_sanitized": "",
|
||||
"url54": "",
|
||||
"url54_sanitized": "",
|
||||
"url55": "",
|
||||
"url55_sanitized": "",
|
||||
"url56": "",
|
||||
"url56_sanitized": "",
|
||||
"url57": "",
|
||||
"url57_sanitized": "",
|
||||
"url58": "",
|
||||
"url58_sanitized": "",
|
||||
"url59": "",
|
||||
"url59_sanitized": "",
|
||||
"url5_sanitized": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url60_sanitized": "",
|
||||
"url61": "",
|
||||
"url61_sanitized": "",
|
||||
"url62": "",
|
||||
"url62_sanitized": "",
|
||||
"url63": "",
|
||||
"url63_sanitized": "",
|
||||
"url64": "",
|
||||
"url64_sanitized": "",
|
||||
"url65": "",
|
||||
"url65_sanitized": "",
|
||||
"url66": "",
|
||||
"url66_sanitized": "",
|
||||
"url67": "",
|
||||
"url67_sanitized": "",
|
||||
"url68": "",
|
||||
"url68_sanitized": "",
|
||||
"url69": "",
|
||||
"url69_sanitized": "",
|
||||
"url6_sanitized": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url70_sanitized": "",
|
||||
"url71": "",
|
||||
"url71_sanitized": "",
|
||||
"url72": "",
|
||||
"url72_sanitized": "",
|
||||
"url73": "",
|
||||
"url73_sanitized": "",
|
||||
"url74": "",
|
||||
"url74_sanitized": "",
|
||||
"url75": "",
|
||||
"url75_sanitized": "",
|
||||
"url76": "",
|
||||
"url76_sanitized": "",
|
||||
"url77": "",
|
||||
"url77_sanitized": "",
|
||||
"url78": "",
|
||||
"url78_sanitized": "",
|
||||
"url79": "",
|
||||
"url79_sanitized": "",
|
||||
"url7_sanitized": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url80_sanitized": "",
|
||||
"url81": "",
|
||||
"url81_sanitized": "",
|
||||
"url82": "",
|
||||
"url82_sanitized": "",
|
||||
"url83": "",
|
||||
"url83_sanitized": "",
|
||||
"url84": "",
|
||||
"url84_sanitized": "",
|
||||
"url85": "",
|
||||
"url85_sanitized": "",
|
||||
"url86": "",
|
||||
"url86_sanitized": "",
|
||||
"url87": "",
|
||||
"url87_sanitized": "",
|
||||
"url88": "",
|
||||
"url88_sanitized": "",
|
||||
"url89": "",
|
||||
"url89_sanitized": "",
|
||||
"url8_sanitized": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url90_sanitized": "",
|
||||
"url91": "",
|
||||
"url91_sanitized": "",
|
||||
"url92": "",
|
||||
"url92_sanitized": "",
|
||||
"url93": "",
|
||||
"url93_sanitized": "",
|
||||
"url94": "",
|
||||
"url94_sanitized": "",
|
||||
"url95": "",
|
||||
"url95_sanitized": "",
|
||||
"url96": "",
|
||||
"url96_sanitized": "",
|
||||
"url97": "",
|
||||
"url97_sanitized": "",
|
||||
"url98": "",
|
||||
"url98_sanitized": "",
|
||||
"url99": "",
|
||||
"url99_sanitized": "",
|
||||
"url9_sanitized": "",
|
||||
"url_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc",
|
||||
"urls": "{ [ \"https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\", '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ] }",
|
||||
"urls_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8playlist\uff1flist=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02, \uff02\uff02]",
|
||||
"webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"webpage_url_sanitized": "{ %sanitize( webpage_url ) }",
|
||||
"width": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }",
|
||||
"width_sanitized": "{ %sanitize( width ) }",
|
||||
"ytdl_sub_entry_date_eval": "{ %string( upload_date_standardized ) }",
|
||||
"ytdl_sub_entry_date_eval_sanitized": "{ %sanitize( ytdl_sub_entry_date_eval ) }",
|
||||
"ytdl_sub_input_url": "{ %string( '' ) }",
|
||||
"ytdl_sub_input_url_count": "{ %int( 0 ) }",
|
||||
"ytdl_sub_input_url_count_sanitized": "{ %sanitize( ytdl_sub_input_url_count ) }",
|
||||
"ytdl_sub_input_url_index": "{ %int( -1 ) }",
|
||||
"ytdl_sub_input_url_index_sanitized": "{ %sanitize( ytdl_sub_input_url_index ) }",
|
||||
"ytdl_sub_input_url_sanitized": "{ %sanitize( ytdl_sub_input_url ) }"
|
||||
}
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
{
|
||||
"assert_not_collection": "{ %bool(True) }",
|
||||
"avatar_uncropped_thumbnail_file_name": "poster.jpg",
|
||||
"banner_uncropped_thumbnail_file_name": "fanart.jpg",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"episode_content_rating": "TV-14",
|
||||
"episode_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"episode_file_name": "s{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }.e{ %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) } - { %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"episode_file_path": "{ %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) }/{ %sanitize( %concat( \"s\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".e\", %string( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ), \" - \", %string( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"episode_number": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) }{ %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) }{ upload_date_index_padded }",
|
||||
"episode_number_and_padded_": "{ [ %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ), 6 ] }",
|
||||
"episode_number_padded": "{ %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) }",
|
||||
"episode_plot": "{ %map_get( entry_metadata, \"webpage_url\" ) }\n\n{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"episode_title": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) } - { %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"episode_year": "{ %slice( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ), 0, 4 ) }",
|
||||
"file_title": "{ %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"file_uid": "{ %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"modified_webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"only_recent_date_range": "2months",
|
||||
"only_recent_max_files": "{ %int(30) }",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_readable": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }x{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"s01_name": "",
|
||||
"s01_url": "",
|
||||
"season_directory_name": "Season { %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"season_number": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"season_number_padded": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"season_poster_file_name": "{ %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) }/Season{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }.jpg",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/@novapbs\" ] }",
|
||||
"subscription_indent_1": "Documentaries",
|
||||
"subscription_indent_2": "TV-14",
|
||||
"subscription_value": "https://www.youtube.com/@novapbs",
|
||||
"subscription_value_1": "https://www.youtube.com/@novapbs",
|
||||
"thumbnail_file_name": "{ %concat( %string( %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".e\", %string( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ), \" - \", %string( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) ) ) }-thumb.jpg",
|
||||
"tv_show_by_date_episode_ordering": "upload-month-day",
|
||||
"tv_show_by_date_ordering_pair_validation_": "{ [ %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ), 6 ] }",
|
||||
"tv_show_by_date_season_ordering": "upload-year",
|
||||
"tv_show_content_rating": "TV-14",
|
||||
"tv_show_content_rating_default": "TV-14",
|
||||
"tv_show_date_range_type": "upload_date",
|
||||
"tv_show_directory": "tv_show_directory_path",
|
||||
"tv_show_fanart_file_name": "fanart.jpg",
|
||||
"tv_show_genre": "Documentaries",
|
||||
"tv_show_genre_default": "ytdl-sub",
|
||||
"tv_show_name": "NOVA PBS",
|
||||
"tv_show_poster_file_name": "poster.jpg",
|
||||
"url": "https://www.youtube.com/@novapbs",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url11": "",
|
||||
"url12": "",
|
||||
"url13": "",
|
||||
"url14": "",
|
||||
"url15": "",
|
||||
"url16": "",
|
||||
"url17": "",
|
||||
"url18": "",
|
||||
"url19": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url21": "",
|
||||
"url22": "",
|
||||
"url23": "",
|
||||
"url24": "",
|
||||
"url25": "",
|
||||
"url26": "",
|
||||
"url27": "",
|
||||
"url28": "",
|
||||
"url29": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url31": "",
|
||||
"url32": "",
|
||||
"url33": "",
|
||||
"url34": "",
|
||||
"url35": "",
|
||||
"url36": "",
|
||||
"url37": "",
|
||||
"url38": "",
|
||||
"url39": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url41": "",
|
||||
"url42": "",
|
||||
"url43": "",
|
||||
"url44": "",
|
||||
"url45": "",
|
||||
"url46": "",
|
||||
"url47": "",
|
||||
"url48": "",
|
||||
"url49": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url51": "",
|
||||
"url52": "",
|
||||
"url53": "",
|
||||
"url54": "",
|
||||
"url55": "",
|
||||
"url56": "",
|
||||
"url57": "",
|
||||
"url58": "",
|
||||
"url59": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url61": "",
|
||||
"url62": "",
|
||||
"url63": "",
|
||||
"url64": "",
|
||||
"url65": "",
|
||||
"url66": "",
|
||||
"url67": "",
|
||||
"url68": "",
|
||||
"url69": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url71": "",
|
||||
"url72": "",
|
||||
"url73": "",
|
||||
"url74": "",
|
||||
"url75": "",
|
||||
"url76": "",
|
||||
"url77": "",
|
||||
"url78": "",
|
||||
"url79": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url81": "",
|
||||
"url82": "",
|
||||
"url83": "",
|
||||
"url84": "",
|
||||
"url85": "",
|
||||
"url86": "",
|
||||
"url87": "",
|
||||
"url88": "",
|
||||
"url89": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url91": "",
|
||||
"url92": "",
|
||||
"url93": "",
|
||||
"url94": "",
|
||||
"url95": "",
|
||||
"url96": "",
|
||||
"url97": "",
|
||||
"url98": "",
|
||||
"url99": "",
|
||||
"urls": "{ [ \"https://www.youtube.com/@novapbs\" ] }"
|
||||
}
|
||||
|
|
@ -0,0 +1,520 @@
|
|||
{
|
||||
"assert_not_collection": "{ %bool(True) }",
|
||||
"assert_not_collection_sanitized": "true",
|
||||
"avatar_uncropped_thumbnail_file_name": "poster.jpg",
|
||||
"avatar_uncropped_thumbnail_file_name_sanitized": "poster.jpg",
|
||||
"banner_uncropped_thumbnail_file_name": "fanart.jpg",
|
||||
"banner_uncropped_thumbnail_file_name_sanitized": "fanart.jpg",
|
||||
"channel": "{ %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"channel_id": "{ %map_get_non_empty( entry_metadata, \"channel_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"channel_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"channel_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"channel_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"chapters": "{ [ ] }",
|
||||
"chapters_sanitized": "[]",
|
||||
"comments": "{ [ ] }",
|
||||
"comments_sanitized": "[]",
|
||||
"creator": "{ %map_get_non_empty( entry_metadata, \"creator\", %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"creator_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"creator\", %map_get_non_empty( entry_metadata, \"channel\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"description": "{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"description_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"description\", '' ) ) }",
|
||||
"download_index": "{ %int(1) }",
|
||||
"download_index_padded6": "000001",
|
||||
"download_index_padded6_sanitized": "000001",
|
||||
"download_index_sanitized": "1",
|
||||
"duration": "{ %map_get_non_empty( entry_metadata, \"duration\", 0 ) }",
|
||||
"duration_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"duration\", 0 ) ) }",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_bilateral_scraping_sanitized": "true",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_resolution_assert_sanitized": "true",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"enable_throttle_protection_sanitized": "true",
|
||||
"entry_metadata": "{ { } }",
|
||||
"entry_metadata_sanitized": "{ %sanitize( entry_metadata ) }",
|
||||
"episode_content_rating": "TV-14",
|
||||
"episode_content_rating_sanitized": "TV-14",
|
||||
"episode_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"episode_date_standardized_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"episode_file_name": "s{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }.e{ %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) } - { %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"episode_file_name_sanitized": "{ %sanitize( %concat( \"s\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".e\", %string( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ), \" - \", %string( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"episode_file_path": "{ %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) }/{ %sanitize( %concat( \"s\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".e\", %string( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ), \" - \", %string( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"episode_file_path_sanitized": "{ %sanitize( %concat( %string( %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".e\", %string( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ), \" - \", %string( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) ) ) ) }",
|
||||
"episode_number": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) }{ %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) }{ upload_date_index_padded }",
|
||||
"episode_number_and_padded_": "{ [ %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ), 6 ] }",
|
||||
"episode_number_and_padded__sanitized": "{ %sanitize( [ %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ), 6 ] ) }",
|
||||
"episode_number_padded": "{ %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) }",
|
||||
"episode_number_padded_sanitized": "{ %sanitize( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ) }",
|
||||
"episode_number_sanitized": "{ %sanitize( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ) }",
|
||||
"episode_plot": "{ %map_get( entry_metadata, \"webpage_url\" ) }\n\n{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"episode_plot_sanitized": "{ %sanitize( %concat( %string( %map_get( entry_metadata, \"webpage_url\" ) ), \"\n\n\", %string( %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) ) }",
|
||||
"episode_title": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) } - { %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"episode_title_sanitized": "{ %sanitize( %concat( %string( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ), \" - \", %string( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"episode_year": "{ %slice( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ), 0, 4 ) }",
|
||||
"episode_year_sanitized": "{ %sanitize( %slice( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ), 0, 4 ) ) }",
|
||||
"epoch": "{ %map_get( entry_metadata, \"epoch\" ) }",
|
||||
"epoch_date": "{ %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) }",
|
||||
"epoch_date_sanitized": "{ %sanitize( %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) }",
|
||||
"epoch_hour": "{ %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%H\" ) }",
|
||||
"epoch_hour_sanitized": "{ %sanitize( %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%H\" ) ) }",
|
||||
"epoch_sanitized": "{ %sanitize( %map_get( entry_metadata, \"epoch\" ) ) }",
|
||||
"ext": "{ %throw( \"Plugin variable ext has not been created yet\" ) }",
|
||||
"ext_sanitized": "{ %sanitize( ext ) }",
|
||||
"extractor": "{ %map_get( entry_metadata, \"extractor\" ) }",
|
||||
"extractor_key": "{ %map_get( entry_metadata, \"extractor_key\" ) }",
|
||||
"extractor_key_sanitized": "{ %sanitize( %map_get( entry_metadata, \"extractor_key\" ) ) }",
|
||||
"extractor_sanitized": "{ %sanitize( %map_get( entry_metadata, \"extractor\" ) ) }",
|
||||
"file_title": "{ %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"file_title_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"file_uid": "{ %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"file_uid_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"height": "{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"height_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"height\", 0 ) ) }",
|
||||
"ie_key": "{ %map_get_non_empty( entry_metadata, \"ie_key\", %map_get( entry_metadata, \"extractor_key\" ) ) }",
|
||||
"ie_key_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"ie_key\", %map_get( entry_metadata, \"extractor_key\" ) ) ) }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"include_sibling_metadata_sanitized": "false",
|
||||
"info_json_ext": "info.json",
|
||||
"info_json_ext_sanitized": "info.json",
|
||||
"modified_webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"modified_webpage_url_sanitized": "{ %sanitize( %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"only_recent_date_range": "2months",
|
||||
"only_recent_date_range_sanitized": "2months",
|
||||
"only_recent_max_files": "{ %int(30) }",
|
||||
"only_recent_max_files_sanitized": "30",
|
||||
"playlist_count": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"playlist_count_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) ) }",
|
||||
"playlist_description": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) }",
|
||||
"playlist_description_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) }",
|
||||
"playlist_index": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"playlist_index_padded": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) }",
|
||||
"playlist_index_padded6": "{ %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 6 ) }",
|
||||
"playlist_index_padded6_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 6 ) ) }",
|
||||
"playlist_index_padded_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), 2 ) ) }",
|
||||
"playlist_index_reversed": "{ %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ) }",
|
||||
"playlist_index_reversed_padded": "{ %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 2 ) }",
|
||||
"playlist_index_reversed_padded6": "{ %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 6 ) }",
|
||||
"playlist_index_reversed_padded6_sanitized": "{ %sanitize( %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 6 ) ) }",
|
||||
"playlist_index_reversed_padded_sanitized": "{ %sanitize( %pad_zero( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ), 2 ) ) }",
|
||||
"playlist_index_reversed_sanitized": "{ %sanitize( %sub( %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ), %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ), -1 ) ) }",
|
||||
"playlist_index_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) ) }",
|
||||
"playlist_max_upload_date": "{ %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) }",
|
||||
"playlist_max_upload_date_sanitized": "{ %sanitize( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ) }",
|
||||
"playlist_max_upload_year": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) }",
|
||||
"playlist_max_upload_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year\" ) ) ) }",
|
||||
"playlist_max_upload_year_truncated": "{ %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year_truncated\" ) ) }",
|
||||
"playlist_max_upload_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) ), \"year_truncated\" ) ) ) }",
|
||||
"playlist_metadata": "{ %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) }",
|
||||
"playlist_metadata_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) ) }",
|
||||
"playlist_title": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_title_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uid": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"playlist_uid_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_uploader": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uploader_id": "{ %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"playlist_uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"playlist_uploader_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"playlist_uploader_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"playlist_uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"playlist_webpage_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"playlist_webpage_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"release_date": "{ %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) }",
|
||||
"release_date_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ) }",
|
||||
"release_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"date_standardized\" ) ) }",
|
||||
"release_date_standardized_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"release_day": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day\" ) ) }",
|
||||
"release_day_of_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year\" ) ) }",
|
||||
"release_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_padded\" ) ) }",
|
||||
"release_day_of_year_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_padded\" ) ) ) }",
|
||||
"release_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed\" ) ) }",
|
||||
"release_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"release_day_of_year_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed_padded\" ) ) ) }",
|
||||
"release_day_of_year_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year_reversed\" ) ) ) }",
|
||||
"release_day_of_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_of_year\" ) ) ) }",
|
||||
"release_day_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_padded\" ) ) }",
|
||||
"release_day_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_padded\" ) ) ) }",
|
||||
"release_day_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed\" ) ) }",
|
||||
"release_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed_padded\" ) ) }",
|
||||
"release_day_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed_padded\" ) ) ) }",
|
||||
"release_day_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day_reversed\" ) ) ) }",
|
||||
"release_day_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"day\" ) ) ) }",
|
||||
"release_month": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month\" ) ) }",
|
||||
"release_month_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_padded\" ) ) }",
|
||||
"release_month_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_padded\" ) ) ) }",
|
||||
"release_month_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed\" ) ) }",
|
||||
"release_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed_padded\" ) ) }",
|
||||
"release_month_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed_padded\" ) ) ) }",
|
||||
"release_month_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month_reversed\" ) ) ) }",
|
||||
"release_month_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"month\" ) ) ) }",
|
||||
"release_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year\" ) ) }",
|
||||
"release_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year\" ) ) ) }",
|
||||
"release_year_truncated": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated\" ) ) }",
|
||||
"release_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated_reversed\" ) ) }",
|
||||
"release_year_truncated_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated_reversed\" ) ) ) }",
|
||||
"release_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"release_date\", %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) ), \"year_truncated\" ) ) ) }",
|
||||
"requested_subtitles": "{ { } }",
|
||||
"requested_subtitles_sanitized": "{}",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_height_gte_sanitized": "361",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_ignore_titles_sanitized": "[]",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_is_ignored_sanitized": "{ %sanitize( %print_if_true( %concat( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ), resolution_assert_ignore_titles ) ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_assert_print_sanitized": "true",
|
||||
"resolution_assert_sanitized": "{ %sanitize( %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) ) }",
|
||||
"resolution_readable": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }x{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"resolution_readable_sanitized": "{ %sanitize( %concat( %string( %map_get_non_empty( entry_metadata, \"width\", 0 ) ), \"x\", %string( %map_get_non_empty( entry_metadata, \"height\", 0 ) ) ) ) }",
|
||||
"s01_name": "",
|
||||
"s01_name_sanitized": "",
|
||||
"s01_url": "",
|
||||
"s01_url_sanitized": "",
|
||||
"season_directory_name": "Season { %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"season_directory_name_sanitized": "{ %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) }",
|
||||
"season_number": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"season_number_padded": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"season_number_padded_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) }",
|
||||
"season_number_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) }",
|
||||
"season_poster_file_name": "{ %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) }/Season{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }.jpg",
|
||||
"season_poster_file_name_sanitized": "{ %sanitize( %concat( %string( %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) ), \"/Season\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".jpg\" ) ) }",
|
||||
"sibling_metadata": "{ %map_get_non_empty( entry_metadata, \"sibling_metadata\", [ ] ) }",
|
||||
"sibling_metadata_sanitized": "{ %sanitize( sibling_metadata ) }",
|
||||
"source_count": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_count\", 1 ) }",
|
||||
"source_count_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_count\", 1 ) ) }",
|
||||
"source_description": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"description\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) }",
|
||||
"source_description_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"description\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"description\", %map_get_non_empty( entry_metadata, \"description\", '' ) ) ) ) }",
|
||||
"source_index": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ) }",
|
||||
"source_index_padded": "{ %pad_zero( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ), 2 ) }",
|
||||
"source_index_padded_sanitized": "{ %sanitize( %pad_zero( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ), 2 ) ) }",
|
||||
"source_index_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_index\", 1 ) ) }",
|
||||
"source_metadata": "{ %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) }",
|
||||
"source_metadata_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) ) }",
|
||||
"source_title": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"title\", %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_title_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"title\", %map_get_non_empty( entry_metadata, \"playlist_title\", %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uid": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"id\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"source_uid_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"id\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"playlist_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_uploader": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uploader_id": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_id\", %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"source_uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_id\", %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) }",
|
||||
"source_uploader_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"uploader\", %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) }",
|
||||
"source_uploader_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) }",
|
||||
"source_uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"uploader_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) ) }",
|
||||
"source_webpage_url": "{ %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"source_webpage_url_sanitized": "{ %sanitize( %map_get_non_empty( %map_get_non_empty( entry_metadata, \"source_metadata\", { } ), \"webpage_url\", %map_get_non_empty( %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ), \"webpage_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) ) }",
|
||||
"sponsorblock_chapters": "{ [ ] }",
|
||||
"sponsorblock_chapters_sanitized": "[]",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/@novapbs\" ] }",
|
||||
"subscription_array_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs\uff02]",
|
||||
"subscription_has_download_archive": "{ %bool(False) }",
|
||||
"subscription_has_download_archive_sanitized": "false",
|
||||
"subscription_indent_1": "Documentaries",
|
||||
"subscription_indent_1_sanitized": "Documentaries",
|
||||
"subscription_indent_2": "TV-14",
|
||||
"subscription_indent_2_sanitized": "TV-14",
|
||||
"subscription_name": "NOVA PBS",
|
||||
"subscription_name_sanitized": "NOVA PBS",
|
||||
"subscription_value": "https://www.youtube.com/@novapbs",
|
||||
"subscription_value_1": "https://www.youtube.com/@novapbs",
|
||||
"subscription_value_1_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs",
|
||||
"subscription_value_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs",
|
||||
"thumbnail_ext": "jpg",
|
||||
"thumbnail_ext_sanitized": "jpg",
|
||||
"thumbnail_file_name": "{ %concat( %string( %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".e\", %string( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ), \" - \", %string( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) ) ) }-thumb.jpg",
|
||||
"thumbnail_file_name_sanitized": "{ %sanitize( %concat( %string( %concat( %string( %sanitize( %concat( \"Season \", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ), \".e\", %string( %pad_zero( %int( %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ) ), 6 ) ), \" - \", %string( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) ) ) ) ) ), \"-thumb.jpg\" ) ) }",
|
||||
"title": "{ %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"title_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"title_sanitized_plex": "{ %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"title_sanitized_plex_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get_non_empty( entry_metadata, \"title\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"tv_show_by_date_episode_ordering": "upload-month-day",
|
||||
"tv_show_by_date_episode_ordering_sanitized": "upload-month-day",
|
||||
"tv_show_by_date_ordering_pair_validation_": "{ [ %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ), 6 ] }",
|
||||
"tv_show_by_date_ordering_pair_validation__sanitized": "{ %sanitize( [ %concat( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ), %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ), upload_date_index_padded ), 6 ] ) }",
|
||||
"tv_show_by_date_season_ordering": "upload-year",
|
||||
"tv_show_by_date_season_ordering_sanitized": "upload-year",
|
||||
"tv_show_content_rating": "TV-14",
|
||||
"tv_show_content_rating_default": "TV-14",
|
||||
"tv_show_content_rating_default_sanitized": "TV-14",
|
||||
"tv_show_content_rating_sanitized": "TV-14",
|
||||
"tv_show_date_range_type": "upload_date",
|
||||
"tv_show_date_range_type_sanitized": "upload_date",
|
||||
"tv_show_directory": "tv_show_directory_path",
|
||||
"tv_show_directory_sanitized": "tv_show_directory_path",
|
||||
"tv_show_fanart_file_name": "fanart.jpg",
|
||||
"tv_show_fanart_file_name_sanitized": "fanart.jpg",
|
||||
"tv_show_genre": "Documentaries",
|
||||
"tv_show_genre_default": "ytdl-sub",
|
||||
"tv_show_genre_default_sanitized": "ytdl-sub",
|
||||
"tv_show_genre_sanitized": "Documentaries",
|
||||
"tv_show_name": "NOVA PBS",
|
||||
"tv_show_name_sanitized": "NOVA PBS",
|
||||
"tv_show_poster_file_name": "poster.jpg",
|
||||
"tv_show_poster_file_name_sanitized": "poster.jpg",
|
||||
"uid": "{ %map_get( entry_metadata, \"id\" ) }",
|
||||
"uid_sanitized": "{ %sanitize( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uid_sanitized_plex": "{ %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uid_sanitized_plex_sanitized": "{ %sanitize( %sanitize_plex_episode( %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"upload_date": "{ %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) }",
|
||||
"upload_date_index": "{ %int(1) }",
|
||||
"upload_date_index_padded": "01",
|
||||
"upload_date_index_padded_sanitized": "01",
|
||||
"upload_date_index_reversed": "{ %int(99) }",
|
||||
"upload_date_index_reversed_padded": "99",
|
||||
"upload_date_index_reversed_padded_sanitized": "99",
|
||||
"upload_date_index_reversed_sanitized": "99",
|
||||
"upload_date_index_sanitized": "1",
|
||||
"upload_date_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ) }",
|
||||
"upload_date_standardized": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) }",
|
||||
"upload_date_standardized_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"upload_day": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day\" ) ) }",
|
||||
"upload_day_of_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year\" ) ) }",
|
||||
"upload_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_padded\" ) ) }",
|
||||
"upload_day_of_year_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_padded\" ) ) ) }",
|
||||
"upload_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed_padded\" ) ) ) }",
|
||||
"upload_day_of_year_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year_reversed\" ) ) ) }",
|
||||
"upload_day_of_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_of_year\" ) ) ) }",
|
||||
"upload_day_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ) }",
|
||||
"upload_day_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_padded\" ) ) ) }",
|
||||
"upload_day_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed\" ) ) }",
|
||||
"upload_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed_padded\" ) ) }",
|
||||
"upload_day_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed_padded\" ) ) ) }",
|
||||
"upload_day_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day_reversed\" ) ) ) }",
|
||||
"upload_day_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"day\" ) ) ) }",
|
||||
"upload_month": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) }",
|
||||
"upload_month_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_padded\" ) ) }",
|
||||
"upload_month_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_padded\" ) ) ) }",
|
||||
"upload_month_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed\" ) ) }",
|
||||
"upload_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed_padded\" ) ) }",
|
||||
"upload_month_reversed_padded_sanitized": "{ %sanitize( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed_padded\" ) ) ) }",
|
||||
"upload_month_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month_reversed\" ) ) ) }",
|
||||
"upload_month_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"month\" ) ) ) }",
|
||||
"upload_year": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) }",
|
||||
"upload_year_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year\" ) ) ) }",
|
||||
"upload_year_truncated": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated\" ) ) }",
|
||||
"upload_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated_reversed\" ) ) }",
|
||||
"upload_year_truncated_reversed_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated_reversed\" ) ) ) }",
|
||||
"upload_year_truncated_sanitized": "{ %sanitize( %int( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"year_truncated\" ) ) ) }",
|
||||
"uploader": "{ %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"uploader_id": "{ %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) }",
|
||||
"uploader_id_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) }",
|
||||
"uploader_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader\", %map_get_non_empty( entry_metadata, \"uploader_id\", %map_get( entry_metadata, \"id\" ) ) ) ) }",
|
||||
"uploader_url": "{ %map_get_non_empty( entry_metadata, \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"uploader_url_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"uploader_url\", %map_get( entry_metadata, \"webpage_url\" ) ) ) }",
|
||||
"url": "https://www.youtube.com/@novapbs",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url100_sanitized": "",
|
||||
"url10_sanitized": "",
|
||||
"url11": "",
|
||||
"url11_sanitized": "",
|
||||
"url12": "",
|
||||
"url12_sanitized": "",
|
||||
"url13": "",
|
||||
"url13_sanitized": "",
|
||||
"url14": "",
|
||||
"url14_sanitized": "",
|
||||
"url15": "",
|
||||
"url15_sanitized": "",
|
||||
"url16": "",
|
||||
"url16_sanitized": "",
|
||||
"url17": "",
|
||||
"url17_sanitized": "",
|
||||
"url18": "",
|
||||
"url18_sanitized": "",
|
||||
"url19": "",
|
||||
"url19_sanitized": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url20_sanitized": "",
|
||||
"url21": "",
|
||||
"url21_sanitized": "",
|
||||
"url22": "",
|
||||
"url22_sanitized": "",
|
||||
"url23": "",
|
||||
"url23_sanitized": "",
|
||||
"url24": "",
|
||||
"url24_sanitized": "",
|
||||
"url25": "",
|
||||
"url25_sanitized": "",
|
||||
"url26": "",
|
||||
"url26_sanitized": "",
|
||||
"url27": "",
|
||||
"url27_sanitized": "",
|
||||
"url28": "",
|
||||
"url28_sanitized": "",
|
||||
"url29": "",
|
||||
"url29_sanitized": "",
|
||||
"url2_sanitized": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url30_sanitized": "",
|
||||
"url31": "",
|
||||
"url31_sanitized": "",
|
||||
"url32": "",
|
||||
"url32_sanitized": "",
|
||||
"url33": "",
|
||||
"url33_sanitized": "",
|
||||
"url34": "",
|
||||
"url34_sanitized": "",
|
||||
"url35": "",
|
||||
"url35_sanitized": "",
|
||||
"url36": "",
|
||||
"url36_sanitized": "",
|
||||
"url37": "",
|
||||
"url37_sanitized": "",
|
||||
"url38": "",
|
||||
"url38_sanitized": "",
|
||||
"url39": "",
|
||||
"url39_sanitized": "",
|
||||
"url3_sanitized": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url40_sanitized": "",
|
||||
"url41": "",
|
||||
"url41_sanitized": "",
|
||||
"url42": "",
|
||||
"url42_sanitized": "",
|
||||
"url43": "",
|
||||
"url43_sanitized": "",
|
||||
"url44": "",
|
||||
"url44_sanitized": "",
|
||||
"url45": "",
|
||||
"url45_sanitized": "",
|
||||
"url46": "",
|
||||
"url46_sanitized": "",
|
||||
"url47": "",
|
||||
"url47_sanitized": "",
|
||||
"url48": "",
|
||||
"url48_sanitized": "",
|
||||
"url49": "",
|
||||
"url49_sanitized": "",
|
||||
"url4_sanitized": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url50_sanitized": "",
|
||||
"url51": "",
|
||||
"url51_sanitized": "",
|
||||
"url52": "",
|
||||
"url52_sanitized": "",
|
||||
"url53": "",
|
||||
"url53_sanitized": "",
|
||||
"url54": "",
|
||||
"url54_sanitized": "",
|
||||
"url55": "",
|
||||
"url55_sanitized": "",
|
||||
"url56": "",
|
||||
"url56_sanitized": "",
|
||||
"url57": "",
|
||||
"url57_sanitized": "",
|
||||
"url58": "",
|
||||
"url58_sanitized": "",
|
||||
"url59": "",
|
||||
"url59_sanitized": "",
|
||||
"url5_sanitized": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url60_sanitized": "",
|
||||
"url61": "",
|
||||
"url61_sanitized": "",
|
||||
"url62": "",
|
||||
"url62_sanitized": "",
|
||||
"url63": "",
|
||||
"url63_sanitized": "",
|
||||
"url64": "",
|
||||
"url64_sanitized": "",
|
||||
"url65": "",
|
||||
"url65_sanitized": "",
|
||||
"url66": "",
|
||||
"url66_sanitized": "",
|
||||
"url67": "",
|
||||
"url67_sanitized": "",
|
||||
"url68": "",
|
||||
"url68_sanitized": "",
|
||||
"url69": "",
|
||||
"url69_sanitized": "",
|
||||
"url6_sanitized": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url70_sanitized": "",
|
||||
"url71": "",
|
||||
"url71_sanitized": "",
|
||||
"url72": "",
|
||||
"url72_sanitized": "",
|
||||
"url73": "",
|
||||
"url73_sanitized": "",
|
||||
"url74": "",
|
||||
"url74_sanitized": "",
|
||||
"url75": "",
|
||||
"url75_sanitized": "",
|
||||
"url76": "",
|
||||
"url76_sanitized": "",
|
||||
"url77": "",
|
||||
"url77_sanitized": "",
|
||||
"url78": "",
|
||||
"url78_sanitized": "",
|
||||
"url79": "",
|
||||
"url79_sanitized": "",
|
||||
"url7_sanitized": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url80_sanitized": "",
|
||||
"url81": "",
|
||||
"url81_sanitized": "",
|
||||
"url82": "",
|
||||
"url82_sanitized": "",
|
||||
"url83": "",
|
||||
"url83_sanitized": "",
|
||||
"url84": "",
|
||||
"url84_sanitized": "",
|
||||
"url85": "",
|
||||
"url85_sanitized": "",
|
||||
"url86": "",
|
||||
"url86_sanitized": "",
|
||||
"url87": "",
|
||||
"url87_sanitized": "",
|
||||
"url88": "",
|
||||
"url88_sanitized": "",
|
||||
"url89": "",
|
||||
"url89_sanitized": "",
|
||||
"url8_sanitized": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url90_sanitized": "",
|
||||
"url91": "",
|
||||
"url91_sanitized": "",
|
||||
"url92": "",
|
||||
"url92_sanitized": "",
|
||||
"url93": "",
|
||||
"url93_sanitized": "",
|
||||
"url94": "",
|
||||
"url94_sanitized": "",
|
||||
"url95": "",
|
||||
"url95_sanitized": "",
|
||||
"url96": "",
|
||||
"url96_sanitized": "",
|
||||
"url97": "",
|
||||
"url97_sanitized": "",
|
||||
"url98": "",
|
||||
"url98_sanitized": "",
|
||||
"url99": "",
|
||||
"url99_sanitized": "",
|
||||
"url9_sanitized": "",
|
||||
"url_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs",
|
||||
"urls": "{ [ \"https://www.youtube.com/@novapbs\" ] }",
|
||||
"urls_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs\uff02]",
|
||||
"webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"webpage_url_sanitized": "{ %sanitize( %map_get( entry_metadata, \"webpage_url\" ) ) }",
|
||||
"width": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }",
|
||||
"width_sanitized": "{ %sanitize( %map_get_non_empty( entry_metadata, \"width\", 0 ) ) }",
|
||||
"ytdl_sub_chapters_from_comments": "{ %throw( \"Plugin variable ytdl_sub_chapters_from_comments has not been created yet\" ) }",
|
||||
"ytdl_sub_chapters_from_comments_sanitized": "{ %sanitize( ytdl_sub_chapters_from_comments ) }",
|
||||
"ytdl_sub_entry_date_eval": "{ %string( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) }",
|
||||
"ytdl_sub_entry_date_eval_sanitized": "{ %sanitize( %string( %string( %map_get( %to_date_metadata( %map_get_non_empty( entry_metadata, \"upload_date\", %datetime_strftime( %map_get( entry_metadata, \"epoch\" ), \"%Y%m%d\" ) ) ), \"date_standardized\" ) ) ) ) }",
|
||||
"ytdl_sub_input_url": "",
|
||||
"ytdl_sub_input_url_count": "{ %int(0) }",
|
||||
"ytdl_sub_input_url_count_sanitized": "0",
|
||||
"ytdl_sub_input_url_index": "{ %int(-1) }",
|
||||
"ytdl_sub_input_url_index_sanitized": "-1",
|
||||
"ytdl_sub_input_url_sanitized": ""
|
||||
}
|
||||
155
tests/resources/expected_json/tv_show/inspect_overrides.json
Normal file
155
tests/resources/expected_json/tv_show/inspect_overrides.json
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
{
|
||||
"assert_not_collection": "{ %bool(True) }",
|
||||
"avatar_uncropped_thumbnail_file_name": "poster.jpg",
|
||||
"banner_uncropped_thumbnail_file_name": "fanart.jpg",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"episode_content_rating": "TV-14",
|
||||
"episode_date_standardized": "{ upload_date_standardized }",
|
||||
"episode_file_name": "s{ upload_year }.e{ %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) } - { title_sanitized_plex }",
|
||||
"episode_file_path": "{ %sanitize( %concat( \"Season \", %string( upload_year ) ) ) }/{ %sanitize( %concat( \"s\", %string( upload_year ), \".e\", %string( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ), \" - \", %string( title_sanitized_plex ) ) ) }",
|
||||
"episode_number": "{ upload_month }{ upload_day_padded }{ upload_date_index_padded }",
|
||||
"episode_number_and_padded_": "{ [ %concat( upload_month, upload_day_padded, upload_date_index_padded ), 6 ] }",
|
||||
"episode_number_padded": "{ %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) }",
|
||||
"episode_plot": "{ webpage_url }\n\n{ description }",
|
||||
"episode_title": "{ upload_date_standardized } - { title }",
|
||||
"episode_year": "{ %slice( upload_date_standardized, 0, 4 ) }",
|
||||
"file_title": "{ title_sanitized_plex }",
|
||||
"file_uid": "{ uid_sanitized_plex }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"modified_webpage_url": "{ webpage_url }",
|
||||
"only_recent_date_range": "2months",
|
||||
"only_recent_max_files": "{ %int(30) }",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_readable": "{ width }x{ height }",
|
||||
"s01_name": "",
|
||||
"s01_url": "",
|
||||
"season_directory_name": "Season { upload_year }",
|
||||
"season_number": "{ upload_year }",
|
||||
"season_number_padded": "{ upload_year }",
|
||||
"season_poster_file_name": "{ %sanitize( %concat( \"Season \", %string( upload_year ) ) ) }/Season{ upload_year }.jpg",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/@novapbs\" ] }",
|
||||
"subscription_indent_1": "Documentaries",
|
||||
"subscription_indent_2": "TV-14",
|
||||
"subscription_value": "https://www.youtube.com/@novapbs",
|
||||
"subscription_value_1": "https://www.youtube.com/@novapbs",
|
||||
"thumbnail_file_name": "{ %concat( %string( %sanitize( %concat( \"Season \", %string( upload_year ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( upload_year ), \".e\", %string( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ), \" - \", %string( title_sanitized_plex ) ) ) ) ) }-thumb.jpg",
|
||||
"tv_show_by_date_episode_ordering": "upload-month-day",
|
||||
"tv_show_by_date_ordering_pair_validation_": "{ [ %concat( upload_month, upload_day_padded, upload_date_index_padded ), 6 ] }",
|
||||
"tv_show_by_date_season_ordering": "upload-year",
|
||||
"tv_show_content_rating": "TV-14",
|
||||
"tv_show_content_rating_default": "TV-14",
|
||||
"tv_show_date_range_type": "upload_date",
|
||||
"tv_show_directory": "tv_show_directory_path",
|
||||
"tv_show_fanart_file_name": "fanart.jpg",
|
||||
"tv_show_genre": "Documentaries",
|
||||
"tv_show_genre_default": "ytdl-sub",
|
||||
"tv_show_name": "NOVA PBS",
|
||||
"tv_show_poster_file_name": "poster.jpg",
|
||||
"url": "https://www.youtube.com/@novapbs",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url11": "",
|
||||
"url12": "",
|
||||
"url13": "",
|
||||
"url14": "",
|
||||
"url15": "",
|
||||
"url16": "",
|
||||
"url17": "",
|
||||
"url18": "",
|
||||
"url19": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url21": "",
|
||||
"url22": "",
|
||||
"url23": "",
|
||||
"url24": "",
|
||||
"url25": "",
|
||||
"url26": "",
|
||||
"url27": "",
|
||||
"url28": "",
|
||||
"url29": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url31": "",
|
||||
"url32": "",
|
||||
"url33": "",
|
||||
"url34": "",
|
||||
"url35": "",
|
||||
"url36": "",
|
||||
"url37": "",
|
||||
"url38": "",
|
||||
"url39": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url41": "",
|
||||
"url42": "",
|
||||
"url43": "",
|
||||
"url44": "",
|
||||
"url45": "",
|
||||
"url46": "",
|
||||
"url47": "",
|
||||
"url48": "",
|
||||
"url49": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url51": "",
|
||||
"url52": "",
|
||||
"url53": "",
|
||||
"url54": "",
|
||||
"url55": "",
|
||||
"url56": "",
|
||||
"url57": "",
|
||||
"url58": "",
|
||||
"url59": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url61": "",
|
||||
"url62": "",
|
||||
"url63": "",
|
||||
"url64": "",
|
||||
"url65": "",
|
||||
"url66": "",
|
||||
"url67": "",
|
||||
"url68": "",
|
||||
"url69": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url71": "",
|
||||
"url72": "",
|
||||
"url73": "",
|
||||
"url74": "",
|
||||
"url75": "",
|
||||
"url76": "",
|
||||
"url77": "",
|
||||
"url78": "",
|
||||
"url79": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url81": "",
|
||||
"url82": "",
|
||||
"url83": "",
|
||||
"url84": "",
|
||||
"url85": "",
|
||||
"url86": "",
|
||||
"url87": "",
|
||||
"url88": "",
|
||||
"url89": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url91": "",
|
||||
"url92": "",
|
||||
"url93": "",
|
||||
"url94": "",
|
||||
"url95": "",
|
||||
"url96": "",
|
||||
"url97": "",
|
||||
"url98": "",
|
||||
"url99": "",
|
||||
"urls": "{ [ \"https://www.youtube.com/@novapbs\" ] }"
|
||||
}
|
||||
520
tests/resources/expected_json/tv_show/inspect_variables.json
Normal file
520
tests/resources/expected_json/tv_show/inspect_variables.json
Normal file
|
|
@ -0,0 +1,520 @@
|
|||
{
|
||||
"assert_not_collection": "{ %bool(True) }",
|
||||
"assert_not_collection_sanitized": "true",
|
||||
"avatar_uncropped_thumbnail_file_name": "poster.jpg",
|
||||
"avatar_uncropped_thumbnail_file_name_sanitized": "poster.jpg",
|
||||
"banner_uncropped_thumbnail_file_name": "fanart.jpg",
|
||||
"banner_uncropped_thumbnail_file_name_sanitized": "fanart.jpg",
|
||||
"channel": "{ %map_get_non_empty( entry_metadata, \"channel\", uploader ) }",
|
||||
"channel_id": "{ %map_get_non_empty( entry_metadata, \"channel_id\", uploader_id ) }",
|
||||
"channel_id_sanitized": "{ %sanitize( channel_id ) }",
|
||||
"channel_sanitized": "{ %sanitize( channel ) }",
|
||||
"chapters": "{ [ ] }",
|
||||
"chapters_sanitized": "{ %sanitize( chapters ) }",
|
||||
"comments": "{ [ ] }",
|
||||
"comments_sanitized": "{ %sanitize( comments ) }",
|
||||
"creator": "{ %map_get_non_empty( entry_metadata, \"creator\", channel ) }",
|
||||
"creator_sanitized": "{ %sanitize( creator ) }",
|
||||
"description": "{ %map_get_non_empty( entry_metadata, \"description\", '' ) }",
|
||||
"description_sanitized": "{ %sanitize( description ) }",
|
||||
"download_index": "{ %int( 1 ) }",
|
||||
"download_index_padded6": "{ %pad_zero( download_index, 6 ) }",
|
||||
"download_index_padded6_sanitized": "{ %sanitize( download_index_padded6 ) }",
|
||||
"download_index_sanitized": "{ %sanitize( download_index ) }",
|
||||
"duration": "{ %map_get_non_empty( entry_metadata, \"duration\", 0 ) }",
|
||||
"duration_sanitized": "{ %sanitize( duration ) }",
|
||||
"enable_bilateral_scraping": "{ %bool(True) }",
|
||||
"enable_bilateral_scraping_sanitized": "true",
|
||||
"enable_resolution_assert": "{ %bool(True) }",
|
||||
"enable_resolution_assert_sanitized": "true",
|
||||
"enable_throttle_protection": "{ %bool(True) }",
|
||||
"enable_throttle_protection_sanitized": "true",
|
||||
"entry_metadata": "{ { } }",
|
||||
"entry_metadata_sanitized": "{ %sanitize( entry_metadata ) }",
|
||||
"episode_content_rating": "TV-14",
|
||||
"episode_content_rating_sanitized": "TV-14",
|
||||
"episode_date_standardized": "{ upload_date_standardized }",
|
||||
"episode_date_standardized_sanitized": "{ %sanitize( upload_date_standardized ) }",
|
||||
"episode_file_name": "s{ upload_year }.e{ %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) } - { title_sanitized_plex }",
|
||||
"episode_file_name_sanitized": "{ %sanitize( %concat( \"s\", %string( upload_year ), \".e\", %string( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ), \" - \", %string( title_sanitized_plex ) ) ) }",
|
||||
"episode_file_path": "{ %sanitize( %concat( \"Season \", %string( upload_year ) ) ) }/{ %sanitize( %concat( \"s\", %string( upload_year ), \".e\", %string( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ), \" - \", %string( title_sanitized_plex ) ) ) }",
|
||||
"episode_file_path_sanitized": "{ %sanitize( %concat( %string( %sanitize( %concat( \"Season \", %string( upload_year ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( upload_year ), \".e\", %string( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ), \" - \", %string( title_sanitized_plex ) ) ) ) ) ) }",
|
||||
"episode_number": "{ upload_month }{ upload_day_padded }{ upload_date_index_padded }",
|
||||
"episode_number_and_padded_": "{ [ %concat( upload_month, upload_day_padded, upload_date_index_padded ), 6 ] }",
|
||||
"episode_number_and_padded__sanitized": "{ %sanitize( [ %concat( upload_month, upload_day_padded, upload_date_index_padded ), 6 ] ) }",
|
||||
"episode_number_padded": "{ %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) }",
|
||||
"episode_number_padded_sanitized": "{ %sanitize( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ) }",
|
||||
"episode_number_sanitized": "{ %sanitize( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ) }",
|
||||
"episode_plot": "{ webpage_url }\n\n{ description }",
|
||||
"episode_plot_sanitized": "{ %sanitize( %concat( %string( webpage_url ), \"\n\n\", %string( description ) ) ) }",
|
||||
"episode_title": "{ upload_date_standardized } - { title }",
|
||||
"episode_title_sanitized": "{ %sanitize( %concat( %string( upload_date_standardized ), \" - \", %string( title ) ) ) }",
|
||||
"episode_year": "{ %slice( upload_date_standardized, 0, 4 ) }",
|
||||
"episode_year_sanitized": "{ %sanitize( %slice( upload_date_standardized, 0, 4 ) ) }",
|
||||
"epoch": "{ %map_get( entry_metadata, \"epoch\" ) }",
|
||||
"epoch_date": "{ %datetime_strftime( epoch, \"%Y%m%d\" ) }",
|
||||
"epoch_date_sanitized": "{ %sanitize( epoch_date ) }",
|
||||
"epoch_hour": "{ %datetime_strftime( epoch, \"%H\" ) }",
|
||||
"epoch_hour_sanitized": "{ %sanitize( epoch_hour ) }",
|
||||
"epoch_sanitized": "{ %sanitize( epoch ) }",
|
||||
"ext": "{ %throw( \"Plugin variable ext has not been created yet\" ) }",
|
||||
"ext_sanitized": "{ %sanitize( ext ) }",
|
||||
"extractor": "{ %map_get( entry_metadata, \"extractor\" ) }",
|
||||
"extractor_key": "{ %map_get( entry_metadata, \"extractor_key\" ) }",
|
||||
"extractor_key_sanitized": "{ %sanitize( extractor_key ) }",
|
||||
"extractor_sanitized": "{ %sanitize( extractor ) }",
|
||||
"file_title": "{ title_sanitized_plex }",
|
||||
"file_title_sanitized": "{ %sanitize( title_sanitized_plex ) }",
|
||||
"file_uid": "{ uid_sanitized_plex }",
|
||||
"file_uid_sanitized": "{ %sanitize( uid_sanitized_plex ) }",
|
||||
"height": "{ %map_get_non_empty( entry_metadata, \"height\", 0 ) }",
|
||||
"height_sanitized": "{ %sanitize( height ) }",
|
||||
"ie_key": "{ %map_get_non_empty( entry_metadata, \"ie_key\", extractor_key ) }",
|
||||
"ie_key_sanitized": "{ %sanitize( ie_key ) }",
|
||||
"include_sibling_metadata": "{ %bool(False) }",
|
||||
"include_sibling_metadata_sanitized": "false",
|
||||
"info_json_ext": "info.json",
|
||||
"info_json_ext_sanitized": "info.json",
|
||||
"modified_webpage_url": "{ webpage_url }",
|
||||
"modified_webpage_url_sanitized": "{ %sanitize( webpage_url ) }",
|
||||
"only_recent_date_range": "2months",
|
||||
"only_recent_date_range_sanitized": "2months",
|
||||
"only_recent_max_files": "{ %int(30) }",
|
||||
"only_recent_max_files_sanitized": "30",
|
||||
"playlist_count": "{ %map_get_non_empty( entry_metadata, \"playlist_count\", 1 ) }",
|
||||
"playlist_count_sanitized": "{ %sanitize( playlist_count ) }",
|
||||
"playlist_description": "{ %map_get_non_empty( playlist_metadata, \"description\", description ) }",
|
||||
"playlist_description_sanitized": "{ %sanitize( playlist_description ) }",
|
||||
"playlist_index": "{ %map_get_non_empty( entry_metadata, \"playlist_index\", 1 ) }",
|
||||
"playlist_index_padded": "{ %pad_zero( playlist_index, 2 ) }",
|
||||
"playlist_index_padded6": "{ %pad_zero( playlist_index, 6 ) }",
|
||||
"playlist_index_padded6_sanitized": "{ %sanitize( playlist_index_padded6 ) }",
|
||||
"playlist_index_padded_sanitized": "{ %sanitize( playlist_index_padded ) }",
|
||||
"playlist_index_reversed": "{ %sub( playlist_count, playlist_index, -1 ) }",
|
||||
"playlist_index_reversed_padded": "{ %pad_zero( playlist_index_reversed, 2 ) }",
|
||||
"playlist_index_reversed_padded6": "{ %pad_zero( playlist_index_reversed, 6 ) }",
|
||||
"playlist_index_reversed_padded6_sanitized": "{ %sanitize( playlist_index_reversed_padded6 ) }",
|
||||
"playlist_index_reversed_padded_sanitized": "{ %sanitize( playlist_index_reversed_padded ) }",
|
||||
"playlist_index_reversed_sanitized": "{ %sanitize( playlist_index_reversed ) }",
|
||||
"playlist_index_sanitized": "{ %sanitize( playlist_index ) }",
|
||||
"playlist_max_upload_date": "{ %array_reduce( %if_passthrough( %extract_field_from_siblings( \"upload_date\" ), [ upload_date ] ), %max ) }",
|
||||
"playlist_max_upload_date_sanitized": "{ %sanitize( playlist_max_upload_date ) }",
|
||||
"playlist_max_upload_year": "{ %int( %map_get( %to_date_metadata( playlist_max_upload_date ), \"year\" ) ) }",
|
||||
"playlist_max_upload_year_sanitized": "{ %sanitize( playlist_max_upload_year ) }",
|
||||
"playlist_max_upload_year_truncated": "{ %int( %map_get( %to_date_metadata( playlist_max_upload_date ), \"year_truncated\" ) ) }",
|
||||
"playlist_max_upload_year_truncated_sanitized": "{ %sanitize( playlist_max_upload_year_truncated ) }",
|
||||
"playlist_metadata": "{ %map_get_non_empty( entry_metadata, \"playlist_metadata\", { } ) }",
|
||||
"playlist_metadata_sanitized": "{ %sanitize( playlist_metadata ) }",
|
||||
"playlist_title": "{ %map_get_non_empty( entry_metadata, \"playlist_title\", title ) }",
|
||||
"playlist_title_sanitized": "{ %sanitize( playlist_title ) }",
|
||||
"playlist_uid": "{ %map_get_non_empty( playlist_metadata, \"playlist_id\", uid ) }",
|
||||
"playlist_uid_sanitized": "{ %sanitize( playlist_uid ) }",
|
||||
"playlist_uploader": "{ %map_get_non_empty( playlist_metadata, \"uploader\", uploader ) }",
|
||||
"playlist_uploader_id": "{ %map_get_non_empty( entry_metadata, \"playlist_uploader_id\", uploader_id ) }",
|
||||
"playlist_uploader_id_sanitized": "{ %sanitize( playlist_uploader_id ) }",
|
||||
"playlist_uploader_sanitized": "{ %sanitize( playlist_uploader ) }",
|
||||
"playlist_uploader_url": "{ %map_get_non_empty( playlist_metadata, \"uploader_url\", webpage_url ) }",
|
||||
"playlist_uploader_url_sanitized": "{ %sanitize( playlist_uploader_url ) }",
|
||||
"playlist_webpage_url": "{ %map_get_non_empty( playlist_metadata, \"webpage_url\", webpage_url ) }",
|
||||
"playlist_webpage_url_sanitized": "{ %sanitize( playlist_webpage_url ) }",
|
||||
"release_date": "{ %map_get_non_empty( entry_metadata, \"release_date\", upload_date ) }",
|
||||
"release_date_sanitized": "{ %sanitize( release_date ) }",
|
||||
"release_date_standardized": "{ %string( %map_get( %to_date_metadata( release_date ), \"date_standardized\" ) ) }",
|
||||
"release_date_standardized_sanitized": "{ %sanitize( release_date_standardized ) }",
|
||||
"release_day": "{ %int( %map_get( %to_date_metadata( release_date ), \"day\" ) ) }",
|
||||
"release_day_of_year": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_of_year\" ) ) }",
|
||||
"release_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_of_year_padded\" ) ) }",
|
||||
"release_day_of_year_padded_sanitized": "{ %sanitize( release_day_of_year_padded ) }",
|
||||
"release_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_of_year_reversed\" ) ) }",
|
||||
"release_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"release_day_of_year_reversed_padded_sanitized": "{ %sanitize( release_day_of_year_reversed_padded ) }",
|
||||
"release_day_of_year_reversed_sanitized": "{ %sanitize( release_day_of_year_reversed ) }",
|
||||
"release_day_of_year_sanitized": "{ %sanitize( release_day_of_year ) }",
|
||||
"release_day_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_padded\" ) ) }",
|
||||
"release_day_padded_sanitized": "{ %sanitize( release_day_padded ) }",
|
||||
"release_day_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"day_reversed\" ) ) }",
|
||||
"release_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"day_reversed_padded\" ) ) }",
|
||||
"release_day_reversed_padded_sanitized": "{ %sanitize( release_day_reversed_padded ) }",
|
||||
"release_day_reversed_sanitized": "{ %sanitize( release_day_reversed ) }",
|
||||
"release_day_sanitized": "{ %sanitize( release_day ) }",
|
||||
"release_month": "{ %int( %map_get( %to_date_metadata( release_date ), \"month\" ) ) }",
|
||||
"release_month_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"month_padded\" ) ) }",
|
||||
"release_month_padded_sanitized": "{ %sanitize( release_month_padded ) }",
|
||||
"release_month_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"month_reversed\" ) ) }",
|
||||
"release_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( release_date ), \"month_reversed_padded\" ) ) }",
|
||||
"release_month_reversed_padded_sanitized": "{ %sanitize( release_month_reversed_padded ) }",
|
||||
"release_month_reversed_sanitized": "{ %sanitize( release_month_reversed ) }",
|
||||
"release_month_sanitized": "{ %sanitize( release_month ) }",
|
||||
"release_year": "{ %int( %map_get( %to_date_metadata( release_date ), \"year\" ) ) }",
|
||||
"release_year_sanitized": "{ %sanitize( release_year ) }",
|
||||
"release_year_truncated": "{ %int( %map_get( %to_date_metadata( release_date ), \"year_truncated\" ) ) }",
|
||||
"release_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( release_date ), \"year_truncated_reversed\" ) ) }",
|
||||
"release_year_truncated_reversed_sanitized": "{ %sanitize( release_year_truncated_reversed ) }",
|
||||
"release_year_truncated_sanitized": "{ %sanitize( release_year_truncated ) }",
|
||||
"requested_subtitles": "{ { } }",
|
||||
"requested_subtitles_sanitized": "{ %sanitize( requested_subtitles ) }",
|
||||
"resolution_assert": "{ %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) }",
|
||||
"resolution_assert_height_gte": "{ %int(361) }",
|
||||
"resolution_assert_height_gte_sanitized": "361",
|
||||
"resolution_assert_ignore_titles": "{ [ ] }",
|
||||
"resolution_assert_ignore_titles_sanitized": "[]",
|
||||
"resolution_assert_is_ignored": "{ %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) }",
|
||||
"resolution_assert_is_ignored_sanitized": "{ %sanitize( %print_if_true( %concat( title, \" has a match in resolution_assert_ignore_titles, skipping resolution assert.\" ), %contains_any( title, resolution_assert_ignore_titles ) ) ) }",
|
||||
"resolution_assert_print": "{ %bool(True) }",
|
||||
"resolution_assert_print_sanitized": "true",
|
||||
"resolution_assert_sanitized": "{ %sanitize( %if( %and( enable_resolution_assert, %ne( height, 0 ), %not( resolution_assert_is_ignored ) ), %assert( %gte( height, resolution_assert_height_gte ), %concat( \"Entry \", title, \" downloaded at a low resolution (\", resolution_readable, \"), you've probably been throttled. \", \"Stopping further downloads, wait a few hours and try again. \", \"Disable using the override variable `enable_resolution_assert: False`.\" ) ), \"false is no-op\" ) ) }",
|
||||
"resolution_readable": "{ width }x{ height }",
|
||||
"resolution_readable_sanitized": "{ %sanitize( %concat( %string( width ), \"x\", %string( height ) ) ) }",
|
||||
"s01_name": "",
|
||||
"s01_name_sanitized": "",
|
||||
"s01_url": "",
|
||||
"s01_url_sanitized": "",
|
||||
"season_directory_name": "Season { upload_year }",
|
||||
"season_directory_name_sanitized": "{ %sanitize( %concat( \"Season \", %string( upload_year ) ) ) }",
|
||||
"season_number": "{ upload_year }",
|
||||
"season_number_padded": "{ upload_year }",
|
||||
"season_number_padded_sanitized": "{ %sanitize( upload_year ) }",
|
||||
"season_number_sanitized": "{ %sanitize( upload_year ) }",
|
||||
"season_poster_file_name": "{ %sanitize( %concat( \"Season \", %string( upload_year ) ) ) }/Season{ upload_year }.jpg",
|
||||
"season_poster_file_name_sanitized": "{ %sanitize( %concat( %string( %sanitize( %concat( \"Season \", %string( upload_year ) ) ) ), \"/Season\", %string( upload_year ), \".jpg\" ) ) }",
|
||||
"sibling_metadata": "{ %map_get_non_empty( entry_metadata, \"sibling_metadata\", [ ] ) }",
|
||||
"sibling_metadata_sanitized": "{ %sanitize( sibling_metadata ) }",
|
||||
"source_count": "{ %map_get_non_empty( playlist_metadata, \"playlist_count\", 1 ) }",
|
||||
"source_count_sanitized": "{ %sanitize( source_count ) }",
|
||||
"source_description": "{ %map_get_non_empty( source_metadata, \"description\", playlist_description ) }",
|
||||
"source_description_sanitized": "{ %sanitize( source_description ) }",
|
||||
"source_index": "{ %map_get_non_empty( playlist_metadata, \"playlist_index\", 1 ) }",
|
||||
"source_index_padded": "{ %pad_zero( source_index, 2 ) }",
|
||||
"source_index_padded_sanitized": "{ %sanitize( source_index_padded ) }",
|
||||
"source_index_sanitized": "{ %sanitize( source_index ) }",
|
||||
"source_metadata": "{ %map_get_non_empty( entry_metadata, \"source_metadata\", { } ) }",
|
||||
"source_metadata_sanitized": "{ %sanitize( source_metadata ) }",
|
||||
"source_title": "{ %map_get_non_empty( source_metadata, \"title\", playlist_title ) }",
|
||||
"source_title_sanitized": "{ %sanitize( source_title ) }",
|
||||
"source_uid": "{ %map_get_non_empty( source_metadata, \"id\", playlist_uid ) }",
|
||||
"source_uid_sanitized": "{ %sanitize( source_uid ) }",
|
||||
"source_uploader": "{ %map_get_non_empty( source_metadata, \"uploader\", playlist_uploader ) }",
|
||||
"source_uploader_id": "{ %map_get_non_empty( source_metadata, \"uploader_id\", playlist_uploader_id ) }",
|
||||
"source_uploader_id_sanitized": "{ %sanitize( source_uploader_id ) }",
|
||||
"source_uploader_sanitized": "{ %sanitize( source_uploader ) }",
|
||||
"source_uploader_url": "{ %map_get_non_empty( source_metadata, \"uploader_url\", source_webpage_url ) }",
|
||||
"source_uploader_url_sanitized": "{ %sanitize( source_uploader_url ) }",
|
||||
"source_webpage_url": "{ %map_get_non_empty( source_metadata, \"webpage_url\", playlist_webpage_url ) }",
|
||||
"source_webpage_url_sanitized": "{ %sanitize( source_webpage_url ) }",
|
||||
"sponsorblock_chapters": "{ [ ] }",
|
||||
"sponsorblock_chapters_sanitized": "{ %sanitize( sponsorblock_chapters ) }",
|
||||
"subscription_array": "{ [ \"https://www.youtube.com/@novapbs\" ] }",
|
||||
"subscription_array_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs\uff02]",
|
||||
"subscription_has_download_archive": "{ %bool(False) }",
|
||||
"subscription_has_download_archive_sanitized": "false",
|
||||
"subscription_indent_1": "Documentaries",
|
||||
"subscription_indent_1_sanitized": "Documentaries",
|
||||
"subscription_indent_2": "TV-14",
|
||||
"subscription_indent_2_sanitized": "TV-14",
|
||||
"subscription_name": "NOVA PBS",
|
||||
"subscription_name_sanitized": "NOVA PBS",
|
||||
"subscription_value": "https://www.youtube.com/@novapbs",
|
||||
"subscription_value_1": "https://www.youtube.com/@novapbs",
|
||||
"subscription_value_1_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs",
|
||||
"subscription_value_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs",
|
||||
"thumbnail_ext": "jpg",
|
||||
"thumbnail_ext_sanitized": "jpg",
|
||||
"thumbnail_file_name": "{ %concat( %string( %sanitize( %concat( \"Season \", %string( upload_year ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( upload_year ), \".e\", %string( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ), \" - \", %string( title_sanitized_plex ) ) ) ) ) }-thumb.jpg",
|
||||
"thumbnail_file_name_sanitized": "{ %sanitize( %concat( %string( %concat( %string( %sanitize( %concat( \"Season \", %string( upload_year ) ) ) ), \"/\", %string( %sanitize( %concat( \"s\", %string( upload_year ), \".e\", %string( %pad_zero( %int( %concat( upload_month, upload_day_padded, upload_date_index_padded ) ), 6 ) ), \" - \", %string( title_sanitized_plex ) ) ) ) ) ), \"-thumb.jpg\" ) ) }",
|
||||
"title": "{ %map_get_non_empty( entry_metadata, \"title\", uid ) }",
|
||||
"title_sanitized": "{ %sanitize( title ) }",
|
||||
"title_sanitized_plex": "{ %sanitize_plex_episode( title ) }",
|
||||
"title_sanitized_plex_sanitized": "{ %sanitize( title_sanitized_plex ) }",
|
||||
"tv_show_by_date_episode_ordering": "upload-month-day",
|
||||
"tv_show_by_date_episode_ordering_sanitized": "upload-month-day",
|
||||
"tv_show_by_date_ordering_pair_validation_": "{ [ %concat( upload_month, upload_day_padded, upload_date_index_padded ), 6 ] }",
|
||||
"tv_show_by_date_ordering_pair_validation__sanitized": "{ %sanitize( [ %concat( upload_month, upload_day_padded, upload_date_index_padded ), 6 ] ) }",
|
||||
"tv_show_by_date_season_ordering": "upload-year",
|
||||
"tv_show_by_date_season_ordering_sanitized": "upload-year",
|
||||
"tv_show_content_rating": "TV-14",
|
||||
"tv_show_content_rating_default": "TV-14",
|
||||
"tv_show_content_rating_default_sanitized": "TV-14",
|
||||
"tv_show_content_rating_sanitized": "TV-14",
|
||||
"tv_show_date_range_type": "upload_date",
|
||||
"tv_show_date_range_type_sanitized": "upload_date",
|
||||
"tv_show_directory": "tv_show_directory_path",
|
||||
"tv_show_directory_sanitized": "tv_show_directory_path",
|
||||
"tv_show_fanart_file_name": "fanart.jpg",
|
||||
"tv_show_fanart_file_name_sanitized": "fanart.jpg",
|
||||
"tv_show_genre": "Documentaries",
|
||||
"tv_show_genre_default": "ytdl-sub",
|
||||
"tv_show_genre_default_sanitized": "ytdl-sub",
|
||||
"tv_show_genre_sanitized": "Documentaries",
|
||||
"tv_show_name": "NOVA PBS",
|
||||
"tv_show_name_sanitized": "NOVA PBS",
|
||||
"tv_show_poster_file_name": "poster.jpg",
|
||||
"tv_show_poster_file_name_sanitized": "poster.jpg",
|
||||
"uid": "{ %map_get( entry_metadata, \"id\" ) }",
|
||||
"uid_sanitized": "{ %sanitize( uid ) }",
|
||||
"uid_sanitized_plex": "{ %sanitize_plex_episode( uid ) }",
|
||||
"uid_sanitized_plex_sanitized": "{ %sanitize( uid_sanitized_plex ) }",
|
||||
"upload_date": "{ %map_get_non_empty( entry_metadata, \"upload_date\", epoch_date ) }",
|
||||
"upload_date_index": "{ %int( 1 ) }",
|
||||
"upload_date_index_padded": "{ %pad_zero( upload_date_index, 2 ) }",
|
||||
"upload_date_index_padded_sanitized": "{ %sanitize( upload_date_index_padded ) }",
|
||||
"upload_date_index_reversed": "{ %sub( 100, upload_date_index ) }",
|
||||
"upload_date_index_reversed_padded": "{ %pad_zero( upload_date_index_reversed, 2 ) }",
|
||||
"upload_date_index_reversed_padded_sanitized": "{ %sanitize( upload_date_index_reversed_padded ) }",
|
||||
"upload_date_index_reversed_sanitized": "{ %sanitize( upload_date_index_reversed ) }",
|
||||
"upload_date_index_sanitized": "{ %sanitize( upload_date_index ) }",
|
||||
"upload_date_sanitized": "{ %sanitize( upload_date ) }",
|
||||
"upload_date_standardized": "{ %string( %map_get( %to_date_metadata( upload_date ), \"date_standardized\" ) ) }",
|
||||
"upload_date_standardized_sanitized": "{ %sanitize( upload_date_standardized ) }",
|
||||
"upload_day": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day\" ) ) }",
|
||||
"upload_day_of_year": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_of_year\" ) ) }",
|
||||
"upload_day_of_year_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_of_year_padded\" ) ) }",
|
||||
"upload_day_of_year_padded_sanitized": "{ %sanitize( upload_day_of_year_padded ) }",
|
||||
"upload_day_of_year_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_of_year_reversed\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_of_year_reversed_padded\" ) ) }",
|
||||
"upload_day_of_year_reversed_padded_sanitized": "{ %sanitize( upload_day_of_year_reversed_padded ) }",
|
||||
"upload_day_of_year_reversed_sanitized": "{ %sanitize( upload_day_of_year_reversed ) }",
|
||||
"upload_day_of_year_sanitized": "{ %sanitize( upload_day_of_year ) }",
|
||||
"upload_day_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_padded\" ) ) }",
|
||||
"upload_day_padded_sanitized": "{ %sanitize( upload_day_padded ) }",
|
||||
"upload_day_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"day_reversed\" ) ) }",
|
||||
"upload_day_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"day_reversed_padded\" ) ) }",
|
||||
"upload_day_reversed_padded_sanitized": "{ %sanitize( upload_day_reversed_padded ) }",
|
||||
"upload_day_reversed_sanitized": "{ %sanitize( upload_day_reversed ) }",
|
||||
"upload_day_sanitized": "{ %sanitize( upload_day ) }",
|
||||
"upload_month": "{ %int( %map_get( %to_date_metadata( upload_date ), \"month\" ) ) }",
|
||||
"upload_month_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"month_padded\" ) ) }",
|
||||
"upload_month_padded_sanitized": "{ %sanitize( upload_month_padded ) }",
|
||||
"upload_month_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"month_reversed\" ) ) }",
|
||||
"upload_month_reversed_padded": "{ %string( %map_get( %to_date_metadata( upload_date ), \"month_reversed_padded\" ) ) }",
|
||||
"upload_month_reversed_padded_sanitized": "{ %sanitize( upload_month_reversed_padded ) }",
|
||||
"upload_month_reversed_sanitized": "{ %sanitize( upload_month_reversed ) }",
|
||||
"upload_month_sanitized": "{ %sanitize( upload_month ) }",
|
||||
"upload_year": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year\" ) ) }",
|
||||
"upload_year_sanitized": "{ %sanitize( upload_year ) }",
|
||||
"upload_year_truncated": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year_truncated\" ) ) }",
|
||||
"upload_year_truncated_reversed": "{ %int( %map_get( %to_date_metadata( upload_date ), \"year_truncated_reversed\" ) ) }",
|
||||
"upload_year_truncated_reversed_sanitized": "{ %sanitize( upload_year_truncated_reversed ) }",
|
||||
"upload_year_truncated_sanitized": "{ %sanitize( upload_year_truncated ) }",
|
||||
"uploader": "{ %map_get_non_empty( entry_metadata, \"uploader\", uploader_id ) }",
|
||||
"uploader_id": "{ %map_get_non_empty( entry_metadata, \"uploader_id\", uid ) }",
|
||||
"uploader_id_sanitized": "{ %sanitize( uploader_id ) }",
|
||||
"uploader_sanitized": "{ %sanitize( uploader ) }",
|
||||
"uploader_url": "{ %map_get_non_empty( entry_metadata, \"uploader_url\", webpage_url ) }",
|
||||
"uploader_url_sanitized": "{ %sanitize( uploader_url ) }",
|
||||
"url": "https://www.youtube.com/@novapbs",
|
||||
"url10": "",
|
||||
"url100": "",
|
||||
"url100_sanitized": "",
|
||||
"url10_sanitized": "",
|
||||
"url11": "",
|
||||
"url11_sanitized": "",
|
||||
"url12": "",
|
||||
"url12_sanitized": "",
|
||||
"url13": "",
|
||||
"url13_sanitized": "",
|
||||
"url14": "",
|
||||
"url14_sanitized": "",
|
||||
"url15": "",
|
||||
"url15_sanitized": "",
|
||||
"url16": "",
|
||||
"url16_sanitized": "",
|
||||
"url17": "",
|
||||
"url17_sanitized": "",
|
||||
"url18": "",
|
||||
"url18_sanitized": "",
|
||||
"url19": "",
|
||||
"url19_sanitized": "",
|
||||
"url2": "",
|
||||
"url20": "",
|
||||
"url20_sanitized": "",
|
||||
"url21": "",
|
||||
"url21_sanitized": "",
|
||||
"url22": "",
|
||||
"url22_sanitized": "",
|
||||
"url23": "",
|
||||
"url23_sanitized": "",
|
||||
"url24": "",
|
||||
"url24_sanitized": "",
|
||||
"url25": "",
|
||||
"url25_sanitized": "",
|
||||
"url26": "",
|
||||
"url26_sanitized": "",
|
||||
"url27": "",
|
||||
"url27_sanitized": "",
|
||||
"url28": "",
|
||||
"url28_sanitized": "",
|
||||
"url29": "",
|
||||
"url29_sanitized": "",
|
||||
"url2_sanitized": "",
|
||||
"url3": "",
|
||||
"url30": "",
|
||||
"url30_sanitized": "",
|
||||
"url31": "",
|
||||
"url31_sanitized": "",
|
||||
"url32": "",
|
||||
"url32_sanitized": "",
|
||||
"url33": "",
|
||||
"url33_sanitized": "",
|
||||
"url34": "",
|
||||
"url34_sanitized": "",
|
||||
"url35": "",
|
||||
"url35_sanitized": "",
|
||||
"url36": "",
|
||||
"url36_sanitized": "",
|
||||
"url37": "",
|
||||
"url37_sanitized": "",
|
||||
"url38": "",
|
||||
"url38_sanitized": "",
|
||||
"url39": "",
|
||||
"url39_sanitized": "",
|
||||
"url3_sanitized": "",
|
||||
"url4": "",
|
||||
"url40": "",
|
||||
"url40_sanitized": "",
|
||||
"url41": "",
|
||||
"url41_sanitized": "",
|
||||
"url42": "",
|
||||
"url42_sanitized": "",
|
||||
"url43": "",
|
||||
"url43_sanitized": "",
|
||||
"url44": "",
|
||||
"url44_sanitized": "",
|
||||
"url45": "",
|
||||
"url45_sanitized": "",
|
||||
"url46": "",
|
||||
"url46_sanitized": "",
|
||||
"url47": "",
|
||||
"url47_sanitized": "",
|
||||
"url48": "",
|
||||
"url48_sanitized": "",
|
||||
"url49": "",
|
||||
"url49_sanitized": "",
|
||||
"url4_sanitized": "",
|
||||
"url5": "",
|
||||
"url50": "",
|
||||
"url50_sanitized": "",
|
||||
"url51": "",
|
||||
"url51_sanitized": "",
|
||||
"url52": "",
|
||||
"url52_sanitized": "",
|
||||
"url53": "",
|
||||
"url53_sanitized": "",
|
||||
"url54": "",
|
||||
"url54_sanitized": "",
|
||||
"url55": "",
|
||||
"url55_sanitized": "",
|
||||
"url56": "",
|
||||
"url56_sanitized": "",
|
||||
"url57": "",
|
||||
"url57_sanitized": "",
|
||||
"url58": "",
|
||||
"url58_sanitized": "",
|
||||
"url59": "",
|
||||
"url59_sanitized": "",
|
||||
"url5_sanitized": "",
|
||||
"url6": "",
|
||||
"url60": "",
|
||||
"url60_sanitized": "",
|
||||
"url61": "",
|
||||
"url61_sanitized": "",
|
||||
"url62": "",
|
||||
"url62_sanitized": "",
|
||||
"url63": "",
|
||||
"url63_sanitized": "",
|
||||
"url64": "",
|
||||
"url64_sanitized": "",
|
||||
"url65": "",
|
||||
"url65_sanitized": "",
|
||||
"url66": "",
|
||||
"url66_sanitized": "",
|
||||
"url67": "",
|
||||
"url67_sanitized": "",
|
||||
"url68": "",
|
||||
"url68_sanitized": "",
|
||||
"url69": "",
|
||||
"url69_sanitized": "",
|
||||
"url6_sanitized": "",
|
||||
"url7": "",
|
||||
"url70": "",
|
||||
"url70_sanitized": "",
|
||||
"url71": "",
|
||||
"url71_sanitized": "",
|
||||
"url72": "",
|
||||
"url72_sanitized": "",
|
||||
"url73": "",
|
||||
"url73_sanitized": "",
|
||||
"url74": "",
|
||||
"url74_sanitized": "",
|
||||
"url75": "",
|
||||
"url75_sanitized": "",
|
||||
"url76": "",
|
||||
"url76_sanitized": "",
|
||||
"url77": "",
|
||||
"url77_sanitized": "",
|
||||
"url78": "",
|
||||
"url78_sanitized": "",
|
||||
"url79": "",
|
||||
"url79_sanitized": "",
|
||||
"url7_sanitized": "",
|
||||
"url8": "",
|
||||
"url80": "",
|
||||
"url80_sanitized": "",
|
||||
"url81": "",
|
||||
"url81_sanitized": "",
|
||||
"url82": "",
|
||||
"url82_sanitized": "",
|
||||
"url83": "",
|
||||
"url83_sanitized": "",
|
||||
"url84": "",
|
||||
"url84_sanitized": "",
|
||||
"url85": "",
|
||||
"url85_sanitized": "",
|
||||
"url86": "",
|
||||
"url86_sanitized": "",
|
||||
"url87": "",
|
||||
"url87_sanitized": "",
|
||||
"url88": "",
|
||||
"url88_sanitized": "",
|
||||
"url89": "",
|
||||
"url89_sanitized": "",
|
||||
"url8_sanitized": "",
|
||||
"url9": "",
|
||||
"url90": "",
|
||||
"url90_sanitized": "",
|
||||
"url91": "",
|
||||
"url91_sanitized": "",
|
||||
"url92": "",
|
||||
"url92_sanitized": "",
|
||||
"url93": "",
|
||||
"url93_sanitized": "",
|
||||
"url94": "",
|
||||
"url94_sanitized": "",
|
||||
"url95": "",
|
||||
"url95_sanitized": "",
|
||||
"url96": "",
|
||||
"url96_sanitized": "",
|
||||
"url97": "",
|
||||
"url97_sanitized": "",
|
||||
"url98": "",
|
||||
"url98_sanitized": "",
|
||||
"url99": "",
|
||||
"url99_sanitized": "",
|
||||
"url9_sanitized": "",
|
||||
"url_sanitized": "https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs",
|
||||
"urls": "{ [ \"https://www.youtube.com/@novapbs\" ] }",
|
||||
"urls_sanitized": "[\uff02https\uff1a\u29f8\u29f8www.youtube.com\u29f8@novapbs\uff02]",
|
||||
"webpage_url": "{ %map_get( entry_metadata, \"webpage_url\" ) }",
|
||||
"webpage_url_sanitized": "{ %sanitize( webpage_url ) }",
|
||||
"width": "{ %map_get_non_empty( entry_metadata, \"width\", 0 ) }",
|
||||
"width_sanitized": "{ %sanitize( width ) }",
|
||||
"ytdl_sub_chapters_from_comments": "{ %throw( \"Plugin variable ytdl_sub_chapters_from_comments has not been created yet\" ) }",
|
||||
"ytdl_sub_chapters_from_comments_sanitized": "{ %sanitize( ytdl_sub_chapters_from_comments ) }",
|
||||
"ytdl_sub_entry_date_eval": "{ %string( upload_date_standardized ) }",
|
||||
"ytdl_sub_entry_date_eval_sanitized": "{ %sanitize( ytdl_sub_entry_date_eval ) }",
|
||||
"ytdl_sub_input_url": "{ %string( '' ) }",
|
||||
"ytdl_sub_input_url_count": "{ %int( 0 ) }",
|
||||
"ytdl_sub_input_url_count_sanitized": "{ %sanitize( ytdl_sub_input_url_count ) }",
|
||||
"ytdl_sub_input_url_index": "{ %int( -1 ) }",
|
||||
"ytdl_sub_input_url_index_sanitized": "{ %sanitize( ytdl_sub_input_url_index ) }",
|
||||
"ytdl_sub_input_url_sanitized": "{ %sanitize( ytdl_sub_input_url ) }"
|
||||
}
|
||||
|
|
@ -8,9 +8,11 @@ import pytest
|
|||
import yaml
|
||||
|
||||
from ytdl_sub.config.config_file import ConfigFile
|
||||
from ytdl_sub.entries.script.variable_definitions import VARIABLES
|
||||
from ytdl_sub.plugins.nfo_tags import NfoTagsOptions
|
||||
from ytdl_sub.subscriptions.subscription import Subscription
|
||||
from ytdl_sub.utils.exceptions import ValidationException
|
||||
from ytdl_sub.utils.script import ScriptUtils
|
||||
|
||||
|
||||
@contextmanager
|
||||
|
|
|
|||
118
tests/unit/config/test_subscription_partial_resolve.py
Normal file
118
tests/unit/config/test_subscription_partial_resolve.py
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
from pathlib import Path
|
||||
|
||||
from resources import expected_json
|
||||
|
||||
from ytdl_sub.config.config_file import ConfigFile
|
||||
from ytdl_sub.entries.script.variable_definitions import VARIABLES
|
||||
from ytdl_sub.subscriptions.subscription import Subscription
|
||||
from ytdl_sub.utils.script import ScriptUtils
|
||||
|
||||
|
||||
def _ensure_partial_resolve(
|
||||
sub: Subscription, preset_type: str, should_fully_resolve: bool
|
||||
) -> None:
|
||||
unresolvable = sub.plugins.get_all_variables(
|
||||
additional_options=[sub.downloader_options, sub.output_options]
|
||||
)
|
||||
unresolvable.add("entry_metadata")
|
||||
unresolvable.add("sibling_metadata")
|
||||
|
||||
if not should_fully_resolve:
|
||||
unresolvable.update(VARIABLES.scripts().keys())
|
||||
|
||||
script = sub.overrides.script.add(
|
||||
{
|
||||
f"{preset_type}_directory": "tv_show_directory_path",
|
||||
f"{preset_type}_directory_sanitized": "tv_show_directory_path",
|
||||
}
|
||||
)
|
||||
partial_script = script.resolve_partial(unresolvable=unresolvable)
|
||||
|
||||
# Assert only overrides
|
||||
out = {
|
||||
name: ScriptUtils.to_native_script(partial_script._variables[name])
|
||||
for name in sub.overrides.keys
|
||||
if not name.startswith("%")
|
||||
}
|
||||
|
||||
expected_out_filename = f"{preset_type}/inspect_overrides.json"
|
||||
if should_fully_resolve:
|
||||
expected_out_filename = f"{preset_type}/inspect_full_overrides.json"
|
||||
|
||||
assert out == expected_json(out, expected_out_filename)
|
||||
|
||||
# Assert all variables
|
||||
out = {
|
||||
name: ScriptUtils.to_native_script(partial_script._variables[name])
|
||||
for name in partial_script.variable_names
|
||||
}
|
||||
|
||||
expected_out_filename = f"{preset_type}/inspect_variables.json"
|
||||
if should_fully_resolve:
|
||||
expected_out_filename = f"{preset_type}/inspect_full_variables.json"
|
||||
|
||||
assert out == expected_json(out, expected_out_filename)
|
||||
|
||||
|
||||
def test_partial_resolve_tv_show(config_file: ConfigFile, tv_show_subscriptions_path: Path):
|
||||
_ensure_partial_resolve(
|
||||
sub=Subscription.from_file_path(
|
||||
config=config_file, subscription_path=tv_show_subscriptions_path
|
||||
)[0],
|
||||
preset_type="tv_show",
|
||||
should_fully_resolve=True,
|
||||
)
|
||||
|
||||
|
||||
def test_partial_resolve_tv_show_full(config_file: ConfigFile, tv_show_subscriptions_path: Path):
|
||||
_ensure_partial_resolve(
|
||||
sub=Subscription.from_file_path(
|
||||
config=config_file, subscription_path=tv_show_subscriptions_path
|
||||
)[0],
|
||||
preset_type="tv_show",
|
||||
should_fully_resolve=False,
|
||||
)
|
||||
|
||||
|
||||
def test_partial_resolve_music(default_config: ConfigFile, music_subscriptions_path: Path):
|
||||
_ensure_partial_resolve(
|
||||
sub=Subscription.from_file_path(
|
||||
config=default_config, subscription_path=music_subscriptions_path
|
||||
)[0],
|
||||
preset_type="music",
|
||||
should_fully_resolve=True,
|
||||
)
|
||||
|
||||
|
||||
def test_partial_resolve_music_full(default_config: ConfigFile, music_subscriptions_path: Path):
|
||||
_ensure_partial_resolve(
|
||||
sub=Subscription.from_file_path(
|
||||
config=default_config, subscription_path=music_subscriptions_path
|
||||
)[0],
|
||||
preset_type="music",
|
||||
should_fully_resolve=False,
|
||||
)
|
||||
|
||||
|
||||
def test_partial_resolve_music_video(
|
||||
default_config: ConfigFile, music_video_subscription_path: Path
|
||||
):
|
||||
_ensure_partial_resolve(
|
||||
sub=Subscription.from_file_path(
|
||||
config=default_config, subscription_path=music_video_subscription_path
|
||||
)[0],
|
||||
preset_type="music_video",
|
||||
should_fully_resolve=False,
|
||||
)
|
||||
|
||||
|
||||
def test_partial_resolve_music_video_full(
|
||||
default_config: ConfigFile, music_video_subscription_path: Path
|
||||
):
|
||||
_ensure_partial_resolve(
|
||||
sub=Subscription.from_file_path(
|
||||
config=default_config, subscription_path=music_video_subscription_path
|
||||
)[0],
|
||||
preset_type="music_video",
|
||||
should_fully_resolve=True,
|
||||
)
|
||||
|
|
@ -65,8 +65,8 @@ def mock_entry_to_dict(
|
|||
"epoch": 1596878400,
|
||||
"epoch_date": "20200808",
|
||||
"epoch_hour": "09",
|
||||
"title": "entry {title}",
|
||||
"title_sanitized": "entry {title}",
|
||||
"title": "entry {title}",
|
||||
"title_sanitized": "entry {title}",
|
||||
"ext": ext,
|
||||
"description": "",
|
||||
"creator": "abc123",
|
||||
|
|
@ -113,8 +113,8 @@ def mock_entry_to_dict(
|
|||
"playlist_count": 1,
|
||||
"playlist_max_upload_year": 2021,
|
||||
"playlist_max_upload_year_truncated": 21,
|
||||
"playlist_title": "entry {title}",
|
||||
"playlist_title_sanitized": "entry {title}",
|
||||
"playlist_title": "entry {title}",
|
||||
"playlist_title_sanitized": "entry {title}",
|
||||
"playlist_description": "",
|
||||
"playlist_webpage_url": "https://yourname.here",
|
||||
"playlist_uid": "abc123",
|
||||
|
|
@ -126,15 +126,15 @@ def mock_entry_to_dict(
|
|||
"source_description": "",
|
||||
"source_index": 1,
|
||||
"source_index_padded": "01",
|
||||
"source_title": "entry {title}",
|
||||
"source_title_sanitized": "entry {title}",
|
||||
"source_title": "entry {title}",
|
||||
"source_title_sanitized": "entry {title}",
|
||||
"source_webpage_url": "https://yourname.here",
|
||||
"source_uid": "abc123",
|
||||
"source_uploader": "abc123",
|
||||
"source_uploader_id": "abc123",
|
||||
"source_uploader_url": "https://yourname.here",
|
||||
"uid_sanitized_plex": "abc123",
|
||||
"title_sanitized_plex": "entry {title}",
|
||||
"title_sanitized_plex": "entry {title}",
|
||||
"release_date": upload_date,
|
||||
"release_date_standardized": "2021-01-12",
|
||||
"release_year": 2021,
|
||||
|
|
|
|||
|
|
@ -115,12 +115,12 @@ class TestUnstructuredDictFormatterValidator(object):
|
|||
assert len(validator.dict) == 8
|
||||
assert all(isinstance(val, expected_formatter_class) for val in validator.dict.values())
|
||||
assert validator.dict_with_format_strings == {
|
||||
"key1": "{ %concat( %string( '''string with ''' ), %string( variable ) ) }",
|
||||
"key1": '{ %concat( %string( "string with " ), %string( variable ) ) }',
|
||||
"key2": "no variables",
|
||||
"key3": "{ %int(3) }",
|
||||
"key4": "{ %float(4.132) }",
|
||||
"key5": "{ %bool(True) }",
|
||||
"key6": "{ { %concat( %string( variable ), %string( '''_key''' ) ): '''value''', '''static_key''': %concat( %string( variable ), %string( '''_value''' ) ) } }",
|
||||
"key7": "{ [ '''list_1''', %concat( %string( '''list_''' ), %string( variable_2 ) ) ] }",
|
||||
"key8": "{ %concat( %string( '''string ''' ), %string( variable1 ), %string( ''' with multiple ''' ), %string( variable2 ) ) }",
|
||||
"key6": '{ { %concat( %string( variable ), %string( "_key" ) ): "value", "static_key": %concat( %string( variable ), %string( "_value" ) ) } }',
|
||||
"key7": '{ [ "list_1", %concat( %string( "list_" ), %string( variable_2 ) ) ] }',
|
||||
"key8": '{ %concat( %string( "string " ), %string( variable1 ), %string( " with multiple " ), %string( variable2 ) ) }',
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue