diff options
| author | rzhxeo <rzhxeo@users.noreply.github.com> | 2013-09-30 21:39:58 -0700 | 
|---|---|---|
| committer | rzhxeo <rzhxeo@users.noreply.github.com> | 2013-09-30 21:39:58 -0700 | 
| commit | c0de39e6d42d8de6a77768b2a96570fd8df8ad36 (patch) | |
| tree | ef10e4ee36c43121490ae5bf89275c1793a30f88 /test | |
| parent | a921f40799d2ecb4be53b3241d2dbfc80f804d73 (diff) | |
| parent | 722076a123c60ed6d5a978c4bc2609f46c8e3ee9 (diff) | |
Merge pull request #2 from rg3/master
Update
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_all_urls.py | 1 | ||||
| -rw-r--r-- | test/test_dailymotion_subtitles.py | 2 | ||||
| -rw-r--r-- | test/test_playlists.py | 34 | ||||
| -rw-r--r-- | test/test_youtube_signature.py | 80 | ||||
| -rw-r--r-- | test/test_youtube_subtitles.py | 2 | 
5 files changed, 118 insertions, 1 deletions
diff --git a/test/test_all_urls.py b/test/test_all_urls.py index 99fc7bd28..ff1c86efe 100644 --- a/test/test_all_urls.py +++ b/test/test_all_urls.py @@ -36,6 +36,7 @@ class TestAllURLsMatching(unittest.TestCase):          self.assertFalse(YoutubeIE.suitable(u'https://www.youtube.com/watch?v=AV6J6_AeFEQ&playnext=1&list=PL4023E734DA416012')) #668          self.assertMatch('http://youtu.be/BaW_jenozKc', ['youtube'])          self.assertMatch('http://www.youtube.com/v/BaW_jenozKc', ['youtube']) +        self.assertMatch('https://youtube.googleapis.com/v/BaW_jenozKc', ['youtube'])      def test_youtube_channel_matching(self):          assertChannel = lambda url: self.assertMatch(url, ['youtube:channel']) diff --git a/test/test_dailymotion_subtitles.py b/test/test_dailymotion_subtitles.py index bcd9f79f6..83c65d57e 100644 --- a/test/test_dailymotion_subtitles.py +++ b/test/test_dailymotion_subtitles.py @@ -40,6 +40,7 @@ class TestDailymotionSubtitles(unittest.TestCase):          subtitles = self.getSubtitles()          self.assertEqual(md5(subtitles['fr']), '594564ec7d588942e384e920e5341792')      def test_allsubtitles(self): +        self.DL.params['writesubtitles'] = True          self.DL.params['allsubtitles'] = True          subtitles = self.getSubtitles()          self.assertEqual(len(subtitles.keys()), 5) @@ -54,6 +55,7 @@ class TestDailymotionSubtitles(unittest.TestCase):          self.assertTrue(len(subtitles.keys()) == 0)      def test_nosubtitles(self):          self.url = 'http://www.dailymotion.com/video/x12u166_le-zapping-tele-star-du-08-aout-2013_tv' +        self.DL.params['writesubtitles'] = True          self.DL.params['allsubtitles'] = True          subtitles = self.getSubtitles()          self.assertEqual(len(subtitles), 0) diff --git a/test/test_playlists.py b/test/test_playlists.py index 4a2e00b01..c33511333 100644 --- a/test/test_playlists.py +++ b/test/test_playlists.py @@ -1,4 +1,5 @@  #!/usr/bin/env python +# encoding: utf-8  import sys  import unittest @@ -8,7 +9,14 @@ import json  import os  sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from youtube_dl.extractor import DailymotionPlaylistIE, VimeoChannelIE, UstreamChannelIE +from youtube_dl.extractor import ( +    DailymotionPlaylistIE, +    DailymotionUserIE, +    VimeoChannelIE, +    UstreamChannelIE, +    SoundcloudUserIE, +    LivestreamIE, +)  from youtube_dl.utils import *  from helper import FakeYDL @@ -26,6 +34,14 @@ class TestPlaylists(unittest.TestCase):          self.assertEqual(result['title'], u'SPORT')          self.assertTrue(len(result['entries']) > 20) +    def test_dailymotion_user(self): +        dl = FakeYDL() +        ie = DailymotionUserIE(dl) +        result = ie.extract('http://www.dailymotion.com/user/generation-quoi/') +        self.assertIsPlaylist(result) +        self.assertEqual(result['title'], u'Génération Quoi') +        self.assertTrue(len(result['entries']) >= 26) +      def test_vimeo_channel(self):          dl = FakeYDL()          ie = VimeoChannelIE(dl) @@ -42,5 +58,21 @@ class TestPlaylists(unittest.TestCase):          self.assertEqual(result['id'], u'5124905')          self.assertTrue(len(result['entries']) >= 11) +    def test_soundcloud_user(self): +        dl = FakeYDL() +        ie = SoundcloudUserIE(dl) +        result = ie.extract('https://soundcloud.com/the-concept-band') +        self.assertIsPlaylist(result) +        self.assertEqual(result['id'], u'9615865') +        self.assertTrue(len(result['entries']) >= 12) + +    def test_livestream_event(self): +        dl = FakeYDL() +        ie = LivestreamIE(dl) +        result = ie.extract('http://new.livestream.com/tedx/cityenglish') +        self.assertIsPlaylist(result) +        self.assertEqual(result['title'], u'TEDCity2.0 (English)') +        self.assertTrue(len(result['entries']) >= 4) +  if __name__ == '__main__':      unittest.main() diff --git a/test/test_youtube_signature.py b/test/test_youtube_signature.py new file mode 100644 index 000000000..5007d9a16 --- /dev/null +++ b/test/test_youtube_signature.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python + +import io +import re +import string +import sys +import unittest + +# Allow direct execution +import os +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from youtube_dl.extractor import YoutubeIE +from youtube_dl.utils import compat_str, compat_urlretrieve + +_TESTS = [ +    ( +        u'https://s.ytimg.com/yts/jsbin/html5player-vflHOr_nV.js', +        u'js', +        86, +        u'>=<;:/.-[+*)(\'&%$#"!ZYX0VUTSRQPONMLKJIHGFEDCBA\\yxwvutsrqponmlkjihgfedcba987654321', +    ), +    ( +        u'https://s.ytimg.com/yts/jsbin/html5player-vfldJ8xgI.js', +        u'js', +        85, +        u'3456789a0cdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS[UVWXYZ!"#$%&\'()*+,-./:;<=>?@', +    ), +    ( +        u'https://s.ytimg.com/yts/swfbin/watch_as3-vflg5GhxU.swf', +        u'swf', +        82, +        u':/.-,+*)=\'&%$#"!ZYX0VUTSRQPONMLKJIHGFEDCBAzyxw>utsrqponmlkjihgfedcba987654321' +    ), +] + + +class TestSignature(unittest.TestCase): +    def setUp(self): +        TEST_DIR = os.path.dirname(os.path.abspath(__file__)) +        self.TESTDATA_DIR = os.path.join(TEST_DIR, 'testdata') +        if not os.path.exists(self.TESTDATA_DIR): +            os.mkdir(self.TESTDATA_DIR) + + +def make_tfunc(url, stype, sig_length, expected_sig): +    basename = url.rpartition('/')[2] +    m = re.match(r'.*-([a-zA-Z0-9_-]+)\.[a-z]+$', basename) +    assert m, '%r should follow URL format' % basename +    test_id = m.group(1) + +    def test_func(self): +        fn = os.path.join(self.TESTDATA_DIR, basename) + +        if not os.path.exists(fn): +            compat_urlretrieve(url, fn) + +        ie = YoutubeIE() +        if stype == 'js': +            with io.open(fn, encoding='utf-8') as testf: +                jscode = testf.read() +            func = ie._parse_sig_js(jscode) +        else: +            assert stype == 'swf' +            with open(fn, 'rb') as testf: +                swfcode = testf.read() +            func = ie._parse_sig_swf(swfcode) +        src_sig = compat_str(string.printable[:sig_length]) +        got_sig = func(src_sig) +        self.assertEqual(got_sig, expected_sig) + +    test_func.__name__ = str('test_signature_' + stype + '_' + test_id) +    setattr(TestSignature, test_func.__name__, test_func) + +for test_spec in _TESTS: +    make_tfunc(*test_spec) + + +if __name__ == '__main__': +    unittest.main() diff --git a/test/test_youtube_subtitles.py b/test/test_youtube_subtitles.py index 5632871ac..168e6c66c 100644 --- a/test/test_youtube_subtitles.py +++ b/test/test_youtube_subtitles.py @@ -41,6 +41,7 @@ class TestYoutubeSubtitles(unittest.TestCase):          subtitles = self.getSubtitles()          self.assertEqual(md5(subtitles['it']), '164a51f16f260476a05b50fe4c2f161d')      def test_youtube_allsubtitles(self): +        self.DL.params['writesubtitles'] = True          self.DL.params['allsubtitles'] = True          subtitles = self.getSubtitles()          self.assertEqual(len(subtitles.keys()), 13) @@ -66,6 +67,7 @@ class TestYoutubeSubtitles(unittest.TestCase):          self.assertTrue(subtitles['it'] is not None)      def test_youtube_nosubtitles(self):          self.url = 'sAjKT8FhjI8' +        self.DL.params['writesubtitles'] = True          self.DL.params['allsubtitles'] = True          subtitles = self.getSubtitles()          self.assertEqual(len(subtitles), 0)  | 
