[options] Handle special characters in argv (Fixes #5157)
[youtube-dl] / youtube_dl / options.py
index be9402fdb4dbbc2a9b17b0918263daeaab46405d..35c7e5fb3507f5e846e166c5f6c15f6cf637498a 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(
@@ -794,6 +794,11 @@ def parseOpts(overrideArguments=None):
             write_string('[debug] Override config: ' + repr(overrideArguments) + '\n')
     else:
         command_line_conf = sys.argv[1:]
+        # Workaround for Python 2.x, where argv is a byte list
+        if sys.version_info < (3,):
+            command_line_conf = [
+                a.decode('utf-8', 'replace') for a in command_line_conf]
+
         if '--ignore-config' in command_line_conf:
             system_conf = []
             user_conf = []