+ def test_khanacademy_topic(self):
+ dl = FakeYDL()
+ ie = KhanAcademyIE(dl)
+ result = ie.extract('https://www.khanacademy.org/math/applied-math/cryptography')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'cryptography')
+ self.assertEqual(result['title'], 'Journey into cryptography')
+ self.assertEqual(result['description'], 'How have humans protected their secret messages through history? What has changed today?')
+ assertGreaterEqual(self, len(result['entries']), 3)
+
+ def test_EveryonesMixtape(self):
+ dl = FakeYDL()
+ ie = EveryonesMixtapeIE(dl)
+ result = ie.extract('http://everyonesmixtape.com/#/mix/m7m0jJAbMQi')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'm7m0jJAbMQi')
+ self.assertEqual(result['title'], 'Driving')
+ self.assertEqual(len(result['entries']), 24)
+
+ def test_rutube_channel(self):
+ dl = FakeYDL()
+ ie = RutubeChannelIE(dl)
+ result = ie.extract('http://rutube.ru/tags/video/1800/')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], '1800')
+ assertGreaterEqual(self, len(result['entries']), 68)
+
+ def test_rutube_person(self):
+ dl = FakeYDL()
+ ie = RutubePersonIE(dl)
+ result = ie.extract('http://rutube.ru/video/person/313878/')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], '313878')
+ assertGreaterEqual(self, len(result['entries']), 37)
+
+ def test_multiple_brightcove_videos(self):
+ # https://github.com/rg3/youtube-dl/issues/2283
+ dl = FakeYDL()
+ ie = GenericIE(dl)
+ result = ie.extract('http://www.newyorker.com/online/blogs/newsdesk/2014/01/always-never-nuclear-command-and-control.html')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'always-never-nuclear-command-and-control')
+ self.assertEqual(result['title'], 'Always/Never: A Little-Seen Movie About Nuclear Command and Control : The New Yorker')
+ self.assertEqual(len(result['entries']), 3)
+
+ def test_GoogleSearch(self):
+ dl = FakeYDL()
+ ie = GoogleSearchIE(dl)
+ result = ie.extract('gvsearch15:python language')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'python language')
+ self.assertEqual(result['title'], 'python language')
+ self.assertEqual(len(result['entries']), 15)
+
+ def test_generic_rss_feed(self):
+ dl = FakeYDL()
+ ie = GenericIE(dl)
+ result = ie.extract('http://phihag.de/2014/youtube-dl/rss.xml')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'http://phihag.de/2014/youtube-dl/rss.xml')
+ self.assertEqual(result['title'], 'Zero Punctuation')
+ self.assertTrue(len(result['entries']) > 10)
+
+ def test_ted_playlist(self):
+ dl = FakeYDL()
+ ie = TEDIE(dl)
+ result = ie.extract('http://www.ted.com/playlists/who_are_the_hackers')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], '10')
+ self.assertEqual(result['title'], 'Who are the hackers?')
+ assertGreaterEqual(self, len(result['entries']), 6)
+
+ def test_toypics_user(self):
+ dl = FakeYDL()
+ ie = ToypicsUserIE(dl)
+ result = ie.extract('http://videos.toypics.net/Mikey')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'Mikey')
+ assertGreaterEqual(self, len(result['entries']), 17)
+
+ def test_xtube_user(self):
+ dl = FakeYDL()
+ ie = XTubeUserIE(dl)
+ result = ie.extract('http://www.xtube.com/community/profile.php?user=greenshowers')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'greenshowers')
+ assertGreaterEqual(self, len(result['entries']), 155)
+
+ def test_InstagramUser(self):
+ dl = FakeYDL()
+ ie = InstagramUserIE(dl)
+ result = ie.extract('http://instagram.com/porsche')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'porsche')
+ assertGreaterEqual(self, len(result['entries']), 2)
+ test_video = next(
+ e for e in result['entries']
+ if e['id'] == '614605558512799803_462752227')
+ dl.add_default_extra_info(test_video, ie, '(irrelevant URL)')
+ dl.process_video_result(test_video, download=False)
+ EXPECTED = {
+ 'id': '614605558512799803_462752227',
+ 'ext': 'mp4',
+ 'title': '#Porsche Intelligent Performance.',
+ 'thumbnail': 're:^https?://.*\.jpg',
+ 'uploader': 'Porsche',
+ 'uploader_id': 'porsche',
+ 'timestamp': 1387486713,
+ 'upload_date': '20131219',
+ }
+ expect_info_dict(self, EXPECTED, test_video)
+
+ def test_CSpan_playlist(self):
+ dl = FakeYDL()
+ ie = CSpanIE(dl)
+ result = ie.extract(
+ 'http://www.c-span.org/video/?318608-1/gm-ignition-switch-recall')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], '342759')
+ self.assertEqual(
+ result['title'], 'General Motors Ignition Switch Recall')
+ whole_duration = sum(e['duration'] for e in result['entries'])
+ self.assertEqual(whole_duration, 14855)
+
+ def test_aol_playlist(self):
+ dl = FakeYDL()
+ ie = AolIE(dl)
+ result = ie.extract(
+ 'http://on.aol.com/playlist/brace-yourself---todays-weirdest-news-152147?icid=OnHomepageC4_Omg_Img#_videoid=518184316')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], '152147')
+ self.assertEqual(
+ result['title'], 'Brace Yourself - Today\'s Weirdest News')
+ assertGreaterEqual(self, len(result['entries']), 10)
+
+ def test_TeacherTubeUser(self):
+ dl = FakeYDL()
+ ie = TeacherTubeUserIE(dl)
+ result = ie.extract('http://www.teachertube.com/user/profile/rbhagwati2')
+ self.assertIsPlaylist(result)
+ self.assertEqual(result['id'], 'rbhagwati2')
+ assertGreaterEqual(self, len(result['entries']), 179)