diff --git a/app/library/Utils.py b/app/library/Utils.py
index be338ec4..4251bb5e 100644
--- a/app/library/Utils.py
+++ b/app/library/Utils.py
@@ -465,6 +465,13 @@ def arg_converter(args: str) -> dict:
if "postprocessors" in diff:
diff["postprocessors"] = [pp for pp in diff["postprocessors"] if pp not in default_opts["postprocessors"]]
+ if "match_filter" in diff:
+ import inspect
+
+ matchFilter = inspect.getclosurevars(diff["match_filter"].func).nonlocals["filters"]
+ if isinstance(matchFilter, set):
+ diff["match_filter"] = {"filters": list(matchFilter)}
+
from .encoder import Encoder
return json.loads(json.dumps(diff, cls=Encoder))
@@ -691,7 +698,7 @@ def get(
if not path:
return data
- # If data is not a dict or list, attempt to convert it (similar to PHP's get_object_vars).
+ # If data is not a dict or list, attempt to convert it.
if not isinstance(data, dict | list):
try:
data = vars(data)
diff --git a/app/library/YTDLPOpts.py b/app/library/YTDLPOpts.py
index a414543e..1a5fd206 100644
--- a/app/library/YTDLPOpts.py
+++ b/app/library/YTDLPOpts.py
@@ -142,4 +142,14 @@ class YTDLPOpts(metaclass=Singleton):
data["impersonate"] = ImpersonateTarget.from_str(data["impersonate"])
+ if (
+ "match_filter" in data
+ and isinstance(data["match_filter"], dict)
+ and "filters" in data["match_filter"]
+ and len(data["match_filter"]["filters"]) > 0
+ ):
+ from yt_dlp.utils import match_filter_func
+
+ data["match_filter"] = match_filter_func(data["match_filter"]["filters"])
+
return data
diff --git a/ui/assets/css/style.css b/ui/assets/css/style.css
index 0867fd4b..dced2c82 100644
--- a/ui/assets/css/style.css
+++ b/ui/assets/css/style.css
@@ -286,3 +286,7 @@ hr {
max-height: unset !important;
width: unset !important;
}
+
+.is-auto {
+ unicode-bidi: embed;
+}
diff --git a/ui/layouts/default.vue b/ui/layouts/default.vue
index 068887f6..3aa65669 100644
--- a/ui/layouts/default.vue
+++ b/ui/layouts/default.vue
@@ -27,7 +27,7 @@