Adds ``Filter Keywords``, a preset that can include or exclude media with any of the listed keywords. Both keywords and title/description are lower-cased before filtering.
Supports the following override variables:
* ``title_include_keywords``
* ``title_exclude_keywords``
* ``description_include_keywords``
* ``description_exclude_keywords``
For best usage, use the `~` tilda subscription mode to set a subscription's list override variables.
Tilda mode allows override variables to be set directly underneath it.
```
Plex TV Show by Date | Filter Keywords:
= Documentaries:
"~NOVA PBS":
url: "https://www.youtube.com/@novapbs"
title_exclude_keywords:
- "preview"
- "trailer"
"~To Catch a Smuggler":
url: "https://www.youtube.com/@NatGeo"
title_include_keywords:
- "To Catch a Smuggler"
```
67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
from ytdl_sub.script.types.resolvable import AnyArgument
|
|
from ytdl_sub.script.types.resolvable import ReturnableArgument
|
|
from ytdl_sub.script.types.resolvable import String
|
|
from ytdl_sub.script.utils.exceptions import UserThrownRuntimeError
|
|
|
|
|
|
class ErrorFunctions:
|
|
@staticmethod
|
|
def throw(error_message: String) -> AnyArgument:
|
|
"""
|
|
:description:
|
|
Explicitly throw an error with the provided error message.
|
|
"""
|
|
raise UserThrownRuntimeError(error_message)
|
|
|
|
@staticmethod
|
|
def assert_(value: ReturnableArgument, assert_message: String) -> ReturnableArgument:
|
|
"""
|
|
:description:
|
|
Explicitly throw an error with the provided assert message if ``value`` evaluates to
|
|
False. If it evaluates to True, it will return ``value``.
|
|
"""
|
|
evaluated_val = value.value()
|
|
if not bool(evaluated_val.value):
|
|
raise UserThrownRuntimeError(assert_message)
|
|
return evaluated_val
|
|
|
|
@staticmethod
|
|
def assert_then(
|
|
value: AnyArgument, ret: ReturnableArgument, assert_message: String
|
|
) -> ReturnableArgument:
|
|
"""
|
|
:description:
|
|
Explicitly throw an error with the provided assert message if ``value`` evaluates to
|
|
False. If it evaluates to True, it will return ``ret``.
|
|
"""
|
|
if not bool(value.value):
|
|
raise UserThrownRuntimeError(assert_message)
|
|
return ret.value()
|
|
|
|
@staticmethod
|
|
def assert_eq(
|
|
value: ReturnableArgument, equals: AnyArgument, assert_message: String
|
|
) -> ReturnableArgument:
|
|
"""
|
|
:description:
|
|
Explicitly throw an error with the provided assert message if ``value`` does not equal
|
|
``equals``. If they do equal, then return ``value``.
|
|
"""
|
|
evaluated_val = value.value()
|
|
if not evaluated_val.value == equals.value:
|
|
raise UserThrownRuntimeError(assert_message)
|
|
return evaluated_val
|
|
|
|
@staticmethod
|
|
def assert_ne(
|
|
value: ReturnableArgument, equals: AnyArgument, assert_message: String
|
|
) -> ReturnableArgument:
|
|
"""
|
|
:description:
|
|
Explicitly throw an error with the provided assert message if ``value`` equals
|
|
``equals``. If they do equal, then return ``value``.
|
|
"""
|
|
evaluated_value = value.value()
|
|
if evaluated_value.value == equals.value:
|
|
raise UserThrownRuntimeError(assert_message)
|
|
return evaluated_value
|