ExecAfterDownloadPP: fix __init__ method
[youtube-dl] / youtube_dl / postprocessor / xattrpp.py
index f6c63fe97545d86947ef1ef4bf2d70e9ea7144be..93d0abcf6d1b563109c5488d10b67a012f916103 100644 (file)
@@ -11,6 +11,7 @@ from ..compat import (
 from ..utils import (
     check_executable,
     hyphenate_date,
+    version_tuple,
 )
 
 
@@ -36,6 +37,19 @@ class XAttrMetadataPP(PostProcessor):
             # try the pyxattr module...
             import xattr
 
+            # Unicode arguments are not supported in python-pyxattr until
+            # version 0.5.0
+            # See https://github.com/rg3/youtube-dl/issues/5498
+            pyxattr_required_version = '0.5.0'
+            if version_tuple(xattr.__version__) < version_tuple(pyxattr_required_version):
+                self._downloader.report_warning(
+                    'python-pyxattr is detected but is too old. '
+                    'youtube-dl requires %s or above while your version is %s. '
+                    'Falling back to other xattr implementations' % (
+                        pyxattr_required_version, xattr.__version__))
+
+                raise ImportError
+
             def write_xattr(path, key, value):
                 return xattr.setxattr(path, key, value)
 
@@ -105,8 +119,8 @@ class XAttrMetadataPP(PostProcessor):
                     byte_value = value.encode('utf-8')
                     write_xattr(filename, xattrname, byte_value)
 
-            return True, info
+            return [], info
 
         except (subprocess.CalledProcessError, OSError):
             self._downloader.report_error("This filesystem doesn't support extended attributes. (You may have to enable them in your /etc/fstab)")
-            return False, info
+            return [], info