diff --git a/test/test_postprocessors.py b/test/test_postprocessors.py
index 2e9a1bf94..12fc427fb 100644
--- a/test/test_postprocessors.py
+++ b/test/test_postprocessors.py
@@ -14,10 +14,10 @@
class TestMetadataFromField(unittest.TestCase):
def test_format_to_regex(self):
pp = MetadataFromFieldPP(None, ['title:%(title)s - %(artist)s'])
- self.assertEqual(pp._data[0]['regex'], r'(?P
[^\r\n]+)\ \-\ (?P[^\r\n]+)')
+ self.assertEqual(pp._data[0]['regex'], r'(?P.+)\ \-\ (?P.+)')
class TestMetadataFromTitle(unittest.TestCase):
def test_format_to_regex(self):
pp = MetadataFromTitlePP(None, '%(title)s - %(artist)s')
- self.assertEqual(pp._titleregex, r'(?P[^\r\n]+)\ \-\ (?P[^\r\n]+)')
+ self.assertEqual(pp._titleregex, r'(?P.+)\ \-\ (?P.+)')
diff --git a/yt_dlp/postprocessor/ffmpeg.py b/yt_dlp/postprocessor/ffmpeg.py
index ffce98cd5..accd715be 100644
--- a/yt_dlp/postprocessor/ffmpeg.py
+++ b/yt_dlp/postprocessor/ffmpeg.py
@@ -10,7 +10,7 @@
from .common import AudioConversionError, PostProcessor
-from ..compat import compat_str
+from ..compat import compat_str, compat_numeric_types
from ..utils import (
encodeArgument,
encodeFilename,
@@ -530,6 +530,8 @@ def run(self, info):
metadata = {}
def add(meta_list, info_list=None):
+ if not meta_list:
+ return
if not info_list:
info_list = meta_list
if not isinstance(meta_list, (list, tuple)):
@@ -537,7 +539,7 @@ def add(meta_list, info_list=None):
if not isinstance(info_list, (list, tuple)):
info_list = (info_list,)
for info_f in info_list:
- if info.get(info_f) is not None:
+ if isinstance(info.get(info_f), (compat_str, compat_numeric_types)):
for meta_f in meta_list:
metadata[meta_f] = info[info_f]
break
@@ -563,6 +565,10 @@ def add(meta_list, info_list=None):
add('episode_id', ('episode', 'episode_id'))
add('episode_sort', 'episode_number')
+ prefix = 'meta_'
+ for key in filter(lambda k: k.startswith(prefix), info.keys()):
+ add(key[len(prefix):], key)
+
if not metadata:
self.to_screen('There isn\'t any metadata to add')
return [], info
@@ -577,7 +583,7 @@ def add(meta_list, info_list=None):
else:
options.extend(['-c', 'copy'])
- for (name, value) in metadata.items():
+ for name, value in metadata.items():
options.extend(['-metadata', '%s=%s' % (name, value)])
chapters = info.get('chapters', [])
diff --git a/yt_dlp/postprocessor/metadatafromfield.py b/yt_dlp/postprocessor/metadatafromfield.py
index 636199214..195c63f92 100644
--- a/yt_dlp/postprocessor/metadatafromfield.py
+++ b/yt_dlp/postprocessor/metadatafromfield.py
@@ -45,7 +45,7 @@ def format_to_regex(fmt):
# replace %(..)s with regex group and escape other string parts
for match in re.finditer(r'%\((\w+)\)s', fmt):
regex += re.escape(fmt[lastpos:match.start()])
- regex += r'(?P<%s>[^\r\n]+)' % match.group(1)
+ regex += r'(?P<%s>.+)' % match.group(1)
lastpos = match.end()
if lastpos < len(fmt):
regex += re.escape(fmt[lastpos:])