Scripting Functions#
Array Functions#
array#
- spec:
array(maybe_array: AnyArgument) -> Array
- description:
Tries to cast an unknown variable type to an Array.
array_apply#
- spec:
array_apply(array: Array, lambda_function: Lambda) -> Array
- description:
Apply a lambda function on every element in the Array.
- usage:
{
%array_apply( [1, 2, 3] , %string )
}
# ["1", "2", "3"]
array_apply_fixed#
- spec:
array_apply_fixed(array: Array, fixed_argument: AnyArgument, lambda2_function: LambdaTwo, reverse_args: Optional[Boolean]) -> Array
- description:
Apply a lambda function on every element in the Array, with
fixed_argument
passed as a second argument to every invocation.
array_at#
- spec:
array_at(array: Array, idx: Integer, default: Optional[AnyArgument]) -> AnyArgument
- description:
Return the element in the Array at index
idx
. Ifidx
exceeds the array length, either returndefault
if provided or throw an error.
array_contains#
- spec:
array_contains(array: Array, value: AnyArgument) -> Boolean
- description:
Return True if the value exists in the Array. False otherwise.
array_enumerate#
- spec:
array_enumerate(array: Array, lambda_function: LambdaTwo) -> Array
- description:
Apply a lambda function on every element in the Array, where each arg passed to the lambda function is
idx, element
as two separate args.
array_extend#
- spec:
array_extend(arrays: Array, ...) -> Array
- description:
Combine multiple Arrays into a single Array.
array_first#
- spec:
array_first(array: Array, fallback: AnyArgument) -> AnyArgument
- description:
Returns the first element whose boolean conversion is True. Returns fallback if all elements evaluate to False.
array_flatten#
- spec:
array_flatten(array: Array) -> Array
- description:
Flatten any nested Arrays into a single-dimensional Array.
array_index#
- spec:
array_index(array: Array, value: AnyArgument) -> Integer
- description:
Return the index of the value within the Array if it exists. If it does not, it will throw an error.
array_overlay#
- spec:
array_overlay(array: Array, overlap: Array, only_missing: Optional[Boolean]) -> Array
- description:
Overlaps
overlap
ontoarray
. Can optionally only overlay missing indices.
array_product#
- spec:
array_product(arrays: Array, ...) -> Array
- description:
Returns the Cartesian product of elements from different arrays
array_reduce#
- spec:
array_reduce(array: Array, lambda_reduce_function: LambdaReduce) -> AnyArgument
- description:
Apply a reduce function on pairs of elements in the Array, until one element remains. Executes using the left-most and reduces in the right direction.
array_reverse#
- spec:
array_reverse(array: Array) -> Array
- description:
Reverse an Array.
array_size#
- spec:
array_size(array: Array) -> Integer
- description:
Returns the size of an Array.
array_slice#
- spec:
array_slice(array: Array, start: Integer, end: Optional[Integer]) -> Array
- description:
Returns the slice of the Array.
Boolean Functions#
and#
- spec:
and(values: AnyArgument, ...) -> Boolean
- description:
and
operator. Returns True if all values evaluate to True. False otherwise.
bool#
- spec:
bool(value: AnyArgument) -> Boolean
- description:
Cast any type to a Boolean.
eq#
- spec:
eq(left: AnyArgument, right: AnyArgument) -> Boolean
- description:
==
operator. Returns True if left == right. False otherwise.
gt#
- spec:
gt(left: AnyArgument, right: AnyArgument) -> Boolean
- description:
>
operator. Returns True if left > right. False otherwise.
gte#
- spec:
gte(left: AnyArgument, right: AnyArgument) -> Boolean
- description:
>=
operator. Returns True if left >= right. False otherwise.
is_array#
- spec:
is_array(value: AnyArgument) -> Boolean
- description:
Returns True if a value is a Map. False otherwise.
is_bool#
- spec:
is_bool(value: AnyArgument) -> Boolean
- description:
Returns True if a value is a Float. False otherwise.
is_float#
- spec:
is_float(value: AnyArgument) -> Boolean
- description:
Returns True if a value is a Float. False otherwise.
is_int#
- spec:
is_int(value: AnyArgument) -> Boolean
- description:
Returns True if a value is an Integer. False otherwise.
is_map#
- spec:
is_map(value: AnyArgument) -> Boolean
- description:
Returns True if a value is a Map. False otherwise.
is_null#
- spec:
is_null(value: AnyArgument) -> Boolean
- description:
Returns True if a value is null (i.e. an empty string). False otherwise.
is_numeric#
- spec:
is_numeric(value: AnyArgument) -> Boolean
- description:
Returns True if a value is either an Integer or Float. False otherwise.
is_string#
- spec:
is_string(value: AnyArgument) -> Boolean
- description:
Returns True if a value is a String. False otherwise.
lt#
- spec:
lt(left: AnyArgument, right: AnyArgument) -> Boolean
- description:
<
operator. Returns True if left < right. False otherwise.
lte#
- spec:
lte(left: AnyArgument, right: AnyArgument) -> Boolean
- description:
<=
operator. Returns True if left <= right. False otherwise.
ne#
- spec:
ne(left: AnyArgument, right: AnyArgument) -> Boolean
- description:
!=
operator. Returns True if left != right. False otherwise.
not#
- spec:
not(value: Boolean) -> Boolean
- description:
not
operator. Returns the opposite of value.
or#
- spec:
or(values: AnyArgument, ...) -> Boolean
- description:
or
operator. Returns True if any value evaluates to True. False otherwise.
xor#
- spec:
xor(values: AnyArgument, ...) -> Boolean
- description:
^
operator. Returns True if exactly one value is set to True. False otherwise.
Conditional Functions#
elif#
- spec:
elif(if_elif_else: AnyArgument, ...) -> AnyArgument
- description:
Conditional
if
statement that is capable of doing else-ifs (elif
) via adjacent arguments. It is expected for there to be an odd number of arguments >= 3 to supply at least one conditional and an else.- usage:
%elif( condition1, return1, condition2, return2, ... else_return )
if#
- spec:
if(condition: Boolean, true: ReturnableArgumentA, false: ReturnableArgumentB) -> Union[ReturnableArgumentA, ReturnableArgumentB]
- description:
Conditional
if
statement that returns thetrue
orfalse
parameter depending on thecondition
value.
if_passthrough#
- spec:
if_passthrough(maybe_true_arg: ReturnableArgumentA, else_arg: ReturnableArgumentB) -> Union[ReturnableArgumentA, ReturnableArgumentB]
- description:
Conditional
if
statement that returns themaybe_true_arg
if it evaluates to True, otherwise returnselse_arg
.
Date Functions#
datetime_strftime#
- spec:
datetime_strftime(posix_timestamp: Integer, date_format: String) -> String
- description:
Converts a posix timestamp to a date using strftime formatting.
Error Functions#
assert#
- spec:
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 returnvalue
.
assert_eq#
- spec:
assert_eq(value: ReturnableArgument, equals: AnyArgument, assert_message: String) -> ReturnableArgument
- description:
Explicitly throw an error with the provided assert message if
value
does not equalequals
. If they do equal, then returnvalue
.
assert_ne#
- spec:
assert_ne(value: ReturnableArgument, equals: AnyArgument, assert_message: String) -> ReturnableArgument
- description:
Explicitly throw an error with the provided assert message if
value
equalsequals
. If they do equal, then returnvalue
.
assert_then#
- spec:
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 returnret
.
throw#
- spec:
throw(error_message: String) -> AnyArgument
- description:
Explicitly throw an error with the provided error message.
Json Functions#
from_json#
- spec:
from_json(argument: String) -> AnyArgument
- description:
Converts a JSON string into an actual type.
Map Functions#
map#
- spec:
map(maybe_mapping: AnyArgument) -> Map
- description:
Tries to cast an unknown variable type to a Map.
map_apply#
- spec:
map_apply(mapping: Map, lambda_function: LambdaTwo) -> Array
- description:
Apply a lambda function on the Map, where each arg passed to the lambda function is
key, value
as two separate args.
map_contains#
- spec:
map_contains(mapping: Map, key: AnyArgument) -> Boolean
- description:
Returns True if the key is in the Map. False otherwise.
map_enumerate#
- spec:
map_enumerate(mapping: Map, lambda_function: LambdaThree) -> Array
- description:
Apply a lambda function on the Map, where each arg passed to the lambda function is
idx, key, value
as three separate args.
map_extend#
- spec:
map_extend(maps: Map, ...) -> Map
- description:
Return maps combined in the order from left-to-right. Duplicate keys will use the right-most map’s value.
map_get#
- spec:
map_get(mapping: Map, key: AnyArgument, default: Optional[AnyArgument]) -> AnyArgument
- description:
Return
key
’s value within the Map. Ifkey
does not exist, anddefault
is provided, it will returndefault
. Otherwise, will error.
map_get_non_empty#
- spec:
map_get_non_empty(mapping: Map, key: AnyArgument, default: AnyArgument) -> AnyArgument
- description:
Return
key
’s value within the Map. Ifkey
does not exist or is an empty string, returndefault
. Otherwise, will error.
map_size#
- spec:
map_size(mapping: Map) -> Integer
- description:
Returns the size of a Map.
Numeric Functions#
add#
- spec:
add(values: Numeric, ...) -> Numeric
- description:
+
operator. Returns the sum of all values.
div#
- spec:
div(left: Numeric, right: Numeric) -> Numeric
- description:
/
operator. Returnsleft / right
.
float#
- spec:
float(value: AnyArgument) -> Float
- description:
Cast to Float.
int#
- spec:
int(value: AnyArgument) -> Integer
- description:
Cast to Integer.
max#
- spec:
max(values: Numeric, ...) -> Numeric
- description:
Returns max of all values.
min#
- spec:
min(values: Numeric, ...) -> Numeric
- description:
Returns min of all values.
mod#
- spec:
mod(left: Numeric, right: Numeric) -> Numeric
- description:
%
operator. Returnsleft % right
.
mul#
- spec:
mul(values: Numeric, ...) -> Numeric
- description:
*
operator. Returns the product of all values.
pow#
- spec:
pow(base: Numeric, exponent: Numeric) -> Numeric
- description:
**
operator. Returns the exponential of the base and exponent value.
sub#
- spec:
sub(values: Numeric, ...) -> Numeric
- description:
-
operator. Subtracts all values from left to right.
Regex Functions#
regex_capture_groups#
- spec:
regex_capture_groups(regex: String) -> Integer
- description:
Returns number of capture groups in regex
regex_fullmatch#
- spec:
regex_fullmatch(regex: String, string: String) -> Array
- description:
Checks for entire string to be a match. If a match exists, returns the string as the first element of the Array. If there are capture groups, returns each group as a subsequent element in the Array.
regex_match#
- spec:
regex_match(regex: String, string: String) -> Array
- description:
Checks for a match only at the beginning of the string. If a match exists, returns the string as the first element of the Array. If there are capture groups, returns each group as a subsequent element in the Array.
regex_search#
- spec:
regex_search(regex: String, string: String) -> Array
- description:
Checks for a match anywhere in the string. If a match exists, returns the string as the first element of the Array. If there are capture groups, returns each group as a subsequent element in the Array.
regex_sub#
- spec:
regex_sub(regex: String, replacement: String, string: String) -> String
- description:
Returns the string obtained by replacing the leftmost non-overlapping occurrences of the pattern in string by the replacement string. The replacement string can reference the match groups via backslash escapes. Callables as replacement argument are not supported.
String Functions#
capitalize#
- spec:
capitalize(string: String) -> String
- description:
Capitalize the first character in the string.
concat#
- spec:
concat(values: String, ...) -> String
- description:
Concatenate multiple Strings into a single String.
contains#
- spec:
contains(string: String, contains: String) -> Boolean
- description:
Returns True if
contains
is instring
. False otherwise.
lower#
- spec:
lower(string: String) -> String
- description:
Lower-case the entire String.
pad#
- spec:
pad(string: String, length: Integer, char: String) -> String
- description:
Pads the string to the given length
pad_zero#
- spec:
pad_zero(numeric: Numeric, length: Integer) -> String
- description:
Pads a numeric with zeros to the given length
replace#
- spec:
replace(string: String, old: String, new: String, count: Optional[Integer]) -> String
- description:
Replace the
old
part of the String with thenew
. Optionally only replace itcount
number of times.
slice#
- spec:
slice(string: String, start: Integer, end: Optional[Integer]) -> String
- description:
Returns the slice of the Array.
split#
- spec:
split(string: String, sep: String, max_split: Optional[Integer]) -> Array
- description:
Splits the input string into multiple strings.
string#
- spec:
string(value: AnyArgument) -> String
- description:
Cast to String.
titlecase#
- spec:
titlecase(string: String) -> String
- description:
Capitalize each word in the string.
upper#
- spec:
upper(string: String) -> String
- description:
Upper-case the entire String.
Ytdl-Sub Functions#
legacy_bracket_safety#
- spec:
legacy_bracket_safety(value: ReturnableArgument) -> ReturnableArgument
ytdl-sub used to replace brackets (‘{’, ‘}’) with unicode brackets (’{’, ‘}’) to not interfere with its legacy variable scripting system. This function replicates that behavior.
sanitize#
- spec:
sanitize(value: AnyArgument) -> String
Sanitize a string using yt-dlp’s sanitize_filename
method to ensure it’s safe to use
for file/directory names on any OS.
sanitize_plex_episode#
- spec:
sanitize_plex_episode(string: String) -> String
Sanitize a string using sanitize
and replace numerics with their respective fixed-width
numbers. This is used to have Plex avoid scraping numbers like 4x4
as the
season and/or episode.
to_date_metadata#
- spec:
to_date_metadata(yyyymmdd: String) -> Map
Takes a date in the form of YYYYMMDD and returns a Map containing:
date (String, YYYYMMDD)
date_standardized (String, YYYY-MM-DD)
year (Integer)
month (Integer)
day (Integer)
year_truncated (Integer, YY from YY[YY])
month_padded (String)
day_padded (String)
year_truncated_reversed (Integer, 100 - year_truncated)
month_reversed (Integer, 13 - month)
month_reversed_padded (String)
day_reversed (Integer, total_days_in_month + 1 - day)
day_reversed_padded (String)
day_of_year (Integer)
day_of_year_padded (String, padded 3)
day_of_year_reversed (Integer, total_days_in_year + 1 - day_of_year)
day_of_year_reversed_padded (String, padded 3)
to_native_filepath#
- spec:
to_native_filepath(filepath: String) -> String
Convert any unix-based path separators (‘/’) with the OS’s native separator.
truncate_filepath_if_too_long#
- spec:
truncate_filepath_if_too_long(filepath: String) -> String
If a file-path is too long for the OS, this function will truncate it while preserving the extension.