fix filter

This commit is contained in:
Jesse Bannon 2026-01-23 15:40:22 -08:00
parent c1310c6a93
commit 5474c2f778
3 changed files with 20 additions and 5 deletions

View file

@ -7,13 +7,14 @@ from ytdl_sub.config.validators.options import OptionsValidator
from ytdl_sub.entries.entry import Entry from ytdl_sub.entries.entry import Entry
from ytdl_sub.utils.exceptions import StringFormattingException from ytdl_sub.utils.exceptions import StringFormattingException
from ytdl_sub.utils.logger import Logger from ytdl_sub.utils.logger import Logger
from ytdl_sub.validators.string_formatter_validators import ListFormatterValidator from ytdl_sub.validators.string_formatter_validators import BooleanFormatterValidator
from ytdl_sub.validators.validators import ListValidator
from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive
logger = Logger.get("filter-exclude") logger = Logger.get("filter-exclude")
class FilterExcludeOptions(ListFormatterValidator, OptionsValidator): class FilterExcludeOptions(ListValidator[BooleanFormatterValidator], OptionsValidator):
""" """
Applies a conditional OR on any number of filters comprised of either variables or scripts. Applies a conditional OR on any number of filters comprised of either variables or scripts.
If any filter evaluates to True, the entry will be excluded. If any filter evaluates to True, the entry will be excluded.
@ -29,6 +30,8 @@ class FilterExcludeOptions(ListFormatterValidator, OptionsValidator):
{ %contains( %lower(description), '#short' ) } { %contains( %lower(description), '#short' ) }
""" """
_inner_list_type = BooleanFormatterValidator
class FilterExcludePlugin(Plugin[FilterExcludeOptions]): class FilterExcludePlugin(Plugin[FilterExcludeOptions]):
plugin_options_type = FilterExcludeOptions plugin_options_type = FilterExcludeOptions

View file

@ -7,13 +7,14 @@ from ytdl_sub.config.validators.options import OptionsValidator
from ytdl_sub.entries.entry import Entry from ytdl_sub.entries.entry import Entry
from ytdl_sub.utils.exceptions import StringFormattingException from ytdl_sub.utils.exceptions import StringFormattingException
from ytdl_sub.utils.logger import Logger from ytdl_sub.utils.logger import Logger
from ytdl_sub.validators.string_formatter_validators import ListFormatterValidator from ytdl_sub.validators.string_formatter_validators import BooleanFormatterValidator
from ytdl_sub.validators.validators import ListValidator
from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive
logger = Logger.get("filter-include") logger = Logger.get("filter-include")
class FilterIncludeOptions(ListFormatterValidator, OptionsValidator): class FilterIncludeOptions(ListValidator[BooleanFormatterValidator], OptionsValidator):
""" """
Applies a conditional AND on any number of filters comprised of either variables or scripts. Applies a conditional AND on any number of filters comprised of either variables or scripts.
If all filters evaluate to True, the entry will be included. If all filters evaluate to True, the entry will be included.
@ -37,6 +38,8 @@ class FilterIncludeOptions(ListFormatterValidator, OptionsValidator):
} }
""" """
_inner_list_type = BooleanFormatterValidator
class FilterIncludePlugin(Plugin[FilterIncludeOptions]): class FilterIncludePlugin(Plugin[FilterIncludeOptions]):
plugin_options_type = FilterIncludeOptions plugin_options_type = FilterIncludeOptions

View file

@ -119,6 +119,13 @@ class StandardizedDateValidator(StringFormatterValidator):
return resolved return resolved
class BooleanFormatterValidator(StringFormatterValidator):
_expected_value_type_name = "boolean"
def post_process(self, resolved: Any) -> bool:
return ScriptUtils.bool_formatter_output(output=str(resolved))
# pylint: disable=line-too-long # pylint: disable=line-too-long
class OverridesStringFormatterValidator(StringFormatterValidator): class OverridesStringFormatterValidator(StringFormatterValidator):
""" """
@ -154,7 +161,9 @@ class OverridesFloatFormatterValidator(FloatFormatterValidator, OverridesStringF
""" """
class OverridesBooleanFormatterValidator(OverridesStringFormatterValidator): class OverridesBooleanFormatterValidator(
BooleanFormatterValidator, OverridesStringFormatterValidator
):
_expected_value_type_name = "boolean" _expected_value_type_name = "boolean"
def post_process(self, resolved: Any) -> bool: def post_process(self, resolved: Any) -> bool: