[metadatafromtitle] Some improvements and cleanup
authorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Sat, 14 Mar 2015 18:55:42 +0000 (19:55 +0100)
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Sat, 14 Mar 2015 19:06:33 +0000 (20:06 +0100)
* Remove the 'songtitle' field, 'title' can be used instead.
* Remove newlines in the help text, for consistency with other options.
* Add 'from __future__ import unicode_literals'.
* Call '__init__' from the parent class.
* Add test for the format_to_regex method

test/test_postprocessors.py [new file with mode: 0644]
youtube_dl/options.py
youtube_dl/postprocessor/ffmpeg.py
youtube_dl/postprocessor/metadatafromtitle.py

diff --git a/test/test_postprocessors.py b/test/test_postprocessors.py
new file mode 100644 (file)
index 0000000..addb69d
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+
+from __future__ import unicode_literals
+
+# Allow direct execution
+import os
+import sys
+import unittest
+sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
+from youtube_dl.postprocessor import MetadataFromTitlePP
+
+
+class TestMetadataFromTitle(unittest.TestCase):
+    def test_format_to_regex(self):
+        pp = MetadataFromTitlePP(None, '%(title)s - %(artist)s')
+        self.assertEqual(pp._titleregex, '(?P<title>.+)\ \-\ (?P<artist>.+)')
index be9402fdb4dbbc2a9b17b0918263daeaab46405d..4e6e47d6fdc430f4071c1470f25a1b7377ad7845 100644 (file)
@@ -738,10 +738,10 @@ def parseOpts(overrideArguments=None):
     postproc.add_option(
         '--metadata-from-title',
         metavar='FORMAT', dest='metafromtitle',
-        help='parse additional metadata like song title / artist from the video title. \n'
+        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.\n'
-             'Additional templates: %(songtitle), %(album), %(artist). \n'
+             'the parsed parameters replace existing values. '
+             'Additional templates: %(album), %(artist). '
              'Example: --metadata-from-title "%(artist)s - %(title)s" matches a title like '
              '"Coldplay - Paradise"')
     postproc.add_option(
index a17113cbfa160e248a7d787ad74501e8b78cf00d..b6f51cfd5e1ed5cebb4981dfbf3152e67ed33d1d 100644 (file)
@@ -541,9 +541,7 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):
 class FFmpegMetadataPP(FFmpegPostProcessor):
     def run(self, info):
         metadata = {}
-        if info.get('songtitle') is not None:
-            metadata['title'] = info['songtitle']
-        elif info.get('title') is not None:
+        if info.get('title') is not None:
             metadata['title'] = info['title']
         if info.get('upload_date') is not None:
             metadata['date'] = info['upload_date']
index 4c9d3aafec43ec12be9dcb4eba991274d8dbe849..5019433d3dde55a9e18f82f40ad8f93e4a49d10b 100644 (file)
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
 
 import re
 
@@ -12,20 +12,19 @@ class MetadataFromTitlePPError(PostProcessingError):
 
 class MetadataFromTitlePP(PostProcessor):
     def __init__(self, downloader, titleformat):
+        super(MetadataFromTitlePP, self).__init__(downloader)
         self._titleformat = titleformat
-        self._titleregex = self.fmtToRegex(titleformat)
+        self._titleregex = self.format_to_regex(titleformat)
 
-    def fmtToRegex(self, fmt):
+    def format_to_regex(self, fmt):
         """
         Converts a string like
            '%(title)s - %(artist)s'
         to a regex like
            '(?P<title>.+)\ \-\ (?P<artist>.+)'
-        and a list of the named groups [title, artist]
         """
         lastpos = 0
         regex = ""
-        groups = []
         # 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()])