aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-05-02 23:23:06 +0600
committerSergey M․ <dstftw@gmail.com>2015-05-02 23:23:06 +0600
commitb3ed15b7604ce83e85b791ed329c5725a436b805 (patch)
treef10ae77994c6eaa011cdfb3be62f490e1d930dd1
parent666a9a2b954bb6c75a5fcdb9fbb18842038c188a (diff)
downloadyoutube-dl-b3ed15b7604ce83e85b791ed329c5725a436b805.tar.xz
[utils] Add replace_extension
-rw-r--r--test/test_utils.py9
-rw-r--r--youtube_dl/utils.py7
2 files changed, 16 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index a9464f2e4..6906a65c2 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -42,6 +42,7 @@ from youtube_dl.utils import (
sanitize_path,
sanitize_url_path_consecutive_slashes,
prepend_extension,
+ replace_extension,
shell_quote,
smuggle_url,
str_to_int,
@@ -202,6 +203,14 @@ class TestUtil(unittest.TestCase):
self.assertEqual(prepend_extension('.abc', 'temp'), '.abc.temp')
self.assertEqual(prepend_extension('.abc.ext', 'temp'), '.abc.temp.ext')
+ def test_replace_extension(self):
+ self.assertEqual(replace_extension('abc.ext', 'temp'), 'abc.temp')
+ self.assertEqual(replace_extension('abc.ext', 'temp', 'ext'), 'abc.temp')
+ self.assertEqual(replace_extension('abc.unexpected_ext', 'temp', 'ext'), 'abc.unexpected_ext.temp')
+ self.assertEqual(replace_extension('abc', 'temp'), 'abc.temp')
+ self.assertEqual(replace_extension('.abc', 'temp'), '.abc.temp')
+ self.assertEqual(replace_extension('.abc.ext', 'temp'), '.abc.temp')
+
def test_ordered_set(self):
self.assertEqual(orderedSet([1, 1, 2, 3, 4, 4, 5, 6, 7, 3, 5]), [1, 2, 3, 4, 5, 6, 7])
self.assertEqual(orderedSet([]), [])
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index b3abfbc11..a5a5c317e 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -1357,6 +1357,13 @@ def prepend_extension(filename, ext, expected_real_ext=None):
else '{0}.{1}'.format(filename, ext))
+def replace_extension(filename, ext, expected_real_ext=None):
+ name, real_ext = os.path.splitext(filename)
+ return '{0}.{1}'.format(
+ name if not expected_real_ext or real_ext[1:] == expected_real_ext else filename,
+ ext)
+
+
def check_executable(exe, args=[]):
""" Checks if the given binary is installed somewhere in PATH, and returns its name.
args can be a list of arguments for a short output (like -version) """