8000 escape "[]=;:," characters in filter arguments to avoid early termina… · Powercoder64/ffmpeg-python@efc0104 · GitHub
[go: up one dir, main page]

Skip to content

Commit efc0104

Browse files
committed
escape "[]=;:," characters in filter arguments to avoid early termination
1 parent a986cbe commit efc0104

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

ffmpeg/nodes.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import unicode_literals
22

33
from builtins import object
4+
from past.builtins import basestring
45
import hashlib
56
import json
67

@@ -51,8 +52,21 @@ class FilterNode(Node):
5152
"""FilterNode"""
5253
def _get_filter(self):
5354
params_text = self._name
54-
arg_params = ['{}'.format(arg) for arg in self._args]
55-
kwarg_params = ['{}={}'.format(k, self._kwargs[k]) for k in sorted(self._kwargs)]
55+
56+
# Helper function to escape uncomfortable characters
57+
def escape_chars(seq, keys):
58+
for k in keys:
59+
if not isinstance(seq[k], basestring):
60+
continue
61+
for ch in "[]=;:,":
62+
seq[k] = seq[k].replace(ch, "\\\\"+ch)
63+
return seq
64+
65+
_args = escape_chars(self._args[:], range(len(self._args)))
66+
_kwargs = escape_chars(self._kwargs.copy(), self._kwargs.keys())
67+
68+
arg_params = ['{}'.format(arg) for arg in _args]
69+
kwarg_params = ['{}={}'.format(k, _kwargs[k]) for k in sorted(_kwargs)]
5670
params = arg_params + kwarg_params
5771
if params:
5872
params_text += '={}'.format(':'.join(params))

0 commit comments

Comments
 (0)
0