diff options
Diffstat (limited to 'test/test_YoutubeDL.py')
| -rw-r--r-- | test/test_YoutubeDL.py | 91 | 
1 files changed, 81 insertions, 10 deletions
| diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index a13c09ef4..20f45f439 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -15,7 +15,7 @@ from youtube_dl import YoutubeDL  from youtube_dl.compat import compat_str  from youtube_dl.extractor import YoutubeIE  from youtube_dl.postprocessor.common import PostProcessor -from youtube_dl.utils import match_filter_func +from youtube_dl.utils import ExtractorError, match_filter_func  TEST_URL = 'http://localhost/sample.mp4' @@ -229,21 +229,70 @@ class TestFormatSelection(unittest.TestCase):              '141', '172', '140', '171', '139',          ] -        for f1id, f2id in zip(order, order[1:]): -            f1 = YoutubeIE._formats[f1id].copy() -            f1['format_id'] = f1id -            f1['url'] = 'url:' + f1id -            f2 = YoutubeIE._formats[f2id].copy() -            f2['format_id'] = f2id -            f2['url'] = 'url:' + f2id +        def format_info(f_id): +            info = YoutubeIE._formats[f_id].copy() +            info['format_id'] = f_id +            info['url'] = 'url:' + f_id +            return info +        formats_order = [format_info(f_id) for f_id in order] +        info_dict = _make_result(list(formats_order), extractor='youtube') +        ydl = YDL({'format': 'bestvideo+bestaudio'}) +        yie = YoutubeIE(ydl) +        yie._sort_formats(info_dict['formats']) +        ydl.process_ie_result(info_dict) +        downloaded = ydl.downloaded_info_dicts[0] +        self.assertEqual(downloaded['format_id'], '137+141') +        self.assertEqual(downloaded['ext'], 'mp4') + +        info_dict = _make_result(list(formats_order), extractor='youtube') +        ydl = YDL({'format': 'bestvideo[height>=999999]+bestaudio/best'}) +        yie = YoutubeIE(ydl) +        yie._sort_formats(info_dict['formats']) +        ydl.process_ie_result(info_dict) +        downloaded = ydl.downloaded_info_dicts[0] +        self.assertEqual(downloaded['format_id'], '38') + +        info_dict = _make_result(list(formats_order), extractor='youtube') +        ydl = YDL({'format': 'bestvideo/best,bestaudio'}) +        yie = YoutubeIE(ydl) +        yie._sort_formats(info_dict['formats']) +        ydl.process_ie_result(info_dict) +        downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] +        self.assertEqual(downloaded_ids, ['137', '141']) + +        info_dict = _make_result(list(formats_order), extractor='youtube') +        ydl = YDL({'format': '(bestvideo[ext=mp4],bestvideo[ext=webm])+bestaudio'}) +        yie = YoutubeIE(ydl) +        yie._sort_formats(info_dict['formats']) +        ydl.process_ie_result(info_dict) +        downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] +        self.assertEqual(downloaded_ids, ['137+141', '248+141']) + +        info_dict = _make_result(list(formats_order), extractor='youtube') +        ydl = YDL({'format': '(bestvideo[ext=mp4],bestvideo[ext=webm])[height<=720]+bestaudio'}) +        yie = YoutubeIE(ydl) +        yie._sort_formats(info_dict['formats']) +        ydl.process_ie_result(info_dict) +        downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] +        self.assertEqual(downloaded_ids, ['136+141', '247+141']) + +        info_dict = _make_result(list(formats_order), extractor='youtube') +        ydl = YDL({'format': '(bestvideo[ext=none]/bestvideo[ext=webm])+bestaudio'}) +        yie = YoutubeIE(ydl) +        yie._sort_formats(info_dict['formats']) +        ydl.process_ie_result(info_dict) +        downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] +        self.assertEqual(downloaded_ids, ['248+141']) + +        for f1, f2 in zip(formats_order, formats_order[1:]):              info_dict = _make_result([f1, f2], extractor='youtube')              ydl = YDL({'format': 'best/bestvideo'})              yie = YoutubeIE(ydl)              yie._sort_formats(info_dict['formats'])              ydl.process_ie_result(info_dict)              downloaded = ydl.downloaded_info_dicts[0] -            self.assertEqual(downloaded['format_id'], f1id) +            self.assertEqual(downloaded['format_id'], f1['format_id'])              info_dict = _make_result([f2, f1], extractor='youtube')              ydl = YDL({'format': 'best/bestvideo'}) @@ -251,7 +300,17 @@ class TestFormatSelection(unittest.TestCase):              yie._sort_formats(info_dict['formats'])              ydl.process_ie_result(info_dict)              downloaded = ydl.downloaded_info_dicts[0] -            self.assertEqual(downloaded['format_id'], f1id) +            self.assertEqual(downloaded['format_id'], f1['format_id']) + +    def test_invalid_format_specs(self): +        def assert_syntax_error(format_spec): +            ydl = YDL({'format': format_spec}) +            info_dict = _make_result([{'format_id': 'foo', 'url': TEST_URL}]) +            self.assertRaises(SyntaxError, ydl.process_ie_result, info_dict) + +        assert_syntax_error('bestvideo,,best') +        assert_syntax_error('+bestaudio') +        assert_syntax_error('bestvideo+')      def test_format_filtering(self):          formats = [ @@ -308,6 +367,18 @@ class TestFormatSelection(unittest.TestCase):          downloaded = ydl.downloaded_info_dicts[0]          self.assertEqual(downloaded['format_id'], 'G') +        ydl = YDL({'format': 'all[width>=400][width<=600]'}) +        ydl.process_ie_result(info_dict) +        downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] +        self.assertEqual(downloaded_ids, ['B', 'C', 'D']) + +        ydl = YDL({'format': 'best[height<40]'}) +        try: +            ydl.process_ie_result(info_dict) +        except ExtractorError: +            pass +        self.assertEqual(ydl.downloaded_info_dicts, []) +  class TestYoutubeDL(unittest.TestCase):      def test_subtitles(self): | 
