aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSergey M․ <[email protected]>2017-05-14 00:03:15 +0700
committerSergey M․ <[email protected]>2017-05-14 00:03:15 +0700
commitfa26734e0760549b7b727017106e9d649bb695ff (patch)
treecafcf88ea865a3bb417fa815a7516a71a40fa105
parent12f01118b0bd621e3e3df813a774fa0a9c1cfd73 (diff)
downloadyoutube-dl-fa26734e0760549b7b727017106e9d649bb695ff.tar.gz
youtube-dl-fa26734e0760549b7b727017106e9d649bb695ff.zip
[postprocessor/metadatafromtitle] Add support regex syntax for --metadata-from-title (closes #13065)
-rw-r--r--youtube_dl/options.py11
-rw-r--r--youtube_dl/postprocessor/metadatafromtitle.py4
2 files changed, 9 insertions, 6 deletions
diff --git a/youtube_dl/options.py b/youtube_dl/options.py
index 52309fb84..57f2e2c1e 100644
--- a/youtube_dl/options.py
+++ b/youtube_dl/options.py
@@ -814,11 +814,12 @@ def parseOpts(overrideArguments=None):
'--metadata-from-title',
metavar='FORMAT', dest='metafromtitle',
help='Parse additional metadata like song title / artist from the video title. '
- 'The format syntax is the same as --output, '
- 'the parsed parameters replace existing values. '
- 'Additional templates: %(album)s, %(artist)s. '
- 'Example: --metadata-from-title "%(artist)s - %(title)s" matches a title like '
- '"Coldplay - Paradise"')
+ 'The format syntax is the same as --output. Regular expression with '
+ 'named capture groups may also be used. '
+ 'The parsed parameters replace existing values. '
+ 'Example: --metadata-from-title "%(artist)s - %(title)s" matches a title like '
+ '"Coldplay - Paradise". '
+ 'Example (regex): --metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"')
postproc.add_option(
'--xattrs',
action='store_true', dest='xattrs', default=False,
diff --git a/youtube_dl/postprocessor/metadatafromtitle.py b/youtube_dl/postprocessor/metadatafromtitle.py
index a7d637a3c..c73f02447 100644
--- a/youtube_dl/postprocessor/metadatafromtitle.py
+++ b/youtube_dl/postprocessor/metadatafromtitle.py
@@ -9,7 +9,9 @@ class MetadataFromTitlePP(PostProcessor):
def __init__(self, downloader, titleformat):
super(MetadataFromTitlePP, self).__init__(downloader)
self._titleformat = titleformat
- self._titleregex = self.format_to_regex(titleformat)
+ self._titleregex = (self.format_to_regex(titleformat)
+ if re.search(r'%\(\w+\)s', titleformat)
+ else titleformat)
def format_to_regex(self, fmt):
r"""