aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2017-03-26 02:30:10 +0700
committerSergey M․ <dstftw@gmail.com>2017-03-26 02:30:10 +0700
commit51098426b83a8ebce4b0c08e869ce023232089fd (patch)
treea7d851f3b72e81525ea806ee12d72dc660c0d36f
parentfb4fc44928d042a33287fd3e8e18b721c29ff8e8 (diff)
[utils] Introduce expand_path
-rw-r--r--test/test_utils.py10
-rw-r--r--youtube_dl/utils.py6
2 files changed, 16 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index 173c49514..8c50b46e8 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -56,6 +56,7 @@ from youtube_dl.utils import (
read_batch_urls,
sanitize_filename,
sanitize_path,
+ expand_path,
prepend_extension,
replace_extension,
remove_start,
@@ -95,6 +96,8 @@ from youtube_dl.utils import (
from youtube_dl.compat import (
compat_chr,
compat_etree_fromstring,
+ compat_getenv,
+ compat_setenv,
compat_urlparse,
compat_parse_qs,
)
@@ -214,6 +217,13 @@ class TestUtil(unittest.TestCase):
self.assertEqual(sanitize_path('./abc'), 'abc')
self.assertEqual(sanitize_path('./../abc'), '..\\abc')
+ def test_expand_path(self):
+ compat_setenv('YOUTUBE-DL-EXPATH-PATH', 'expanded')
+ self.assertEqual(expand_path('%YOUTUBE-DL-EXPATH-PATH%'), 'expanded')
+ self.assertEqual(expand_path('%HOMEPATH%'), compat_getenv('HOMEPATH'))
+ self.assertEqual(expand_path('~'), compat_getenv('HOME'))
+ self.assertEqual(expand_path('~/%YOUTUBE-DL-EXPATH-PATH%'), '%s/expanded' % compat_getenv('HOME'))
+
def test_prepend_extension(self):
self.assertEqual(prepend_extension('abc.ext', 'temp'), 'abc.temp.ext')
self.assertEqual(prepend_extension('abc.ext', 'temp', 'ext'), 'abc.temp.ext')
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index d293c7498..2340bc306 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -39,6 +39,7 @@ from .compat import (
compat_basestring,
compat_chr,
compat_etree_fromstring,
+ compat_expanduser,
compat_html_entities,
compat_html_entities_html5,
compat_http_client,
@@ -539,6 +540,11 @@ def sanitized_Request(url, *args, **kwargs):
return compat_urllib_request.Request(sanitize_url(url), *args, **kwargs)
+def expand_path(s):
+ """Expand shell variables and ~"""
+ return os.path.expandvars(compat_expanduser(s))
+
+
def orderedSet(iterable):
""" Remove all duplicates from the input iterable """
res = []