[postprocessor/metadatafromtitle] Add support regex syntax for --metadata-from-title...
authorSergey M․ <dstftw@gmail.com>
Sat, 13 May 2017 17:03:15 +0000 (00:03 +0700)
committerSergey M․ <dstftw@gmail.com>
Sat, 13 May 2017 17:03:15 +0000 (00:03 +0700)
youtube_dl/options.py
youtube_dl/postprocessor/metadatafromtitle.py

index 52309fb8421a0e1017646572f369b56443371a81..57f2e2c1e093f1f9b14cbb712b183e308aac2f22 100644 (file)
@@ -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,
index a7d637a3c84f16ba8024b618ea30549fdcf109a6..c73f02447402e74a8eefd52a3c2f72bfd8c919f0 100644 (file)
@@ -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"""