YoutubePlaylistIE: don't crash with empty lists (related #808)
authorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Sat, 27 Apr 2013 08:41:52 +0000 (10:41 +0200)
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Sat, 27 Apr 2013 08:41:52 +0000 (10:41 +0200)
The playlist_title wasn't initialized.

test/test_youtube_lists.py
youtube_dl/InfoExtractors.py

index c7f00af3216e0ee8292618a4ea24de062ac8d983..b11e6ccaa246b5f4ddadc44d677573aa7c502399 100644 (file)
@@ -71,6 +71,13 @@ class TestYoutubeLists(unittest.TestCase):
         ytie_results = [YoutubeIE()._extract_id(url['url']) for url in result['entries']]
         self.assertFalse('pElCt5oNDuI' in ytie_results)
         self.assertFalse('KdPEApIVdWM' in ytie_results)
+        
+    def test_youtube_playlist_empty(self):
+        dl = FakeDownloader()
+        ie = YoutubePlaylistIE(dl)
+        result = ie.extract('https://www.youtube.com/playlist?list=PLtPgu7CB4gbZDA7i_euNxn75ISqxwZPYx')[0]
+        self.assertIsPlaylist(result)
+        self.assertEqual(len(result['entries']), 0)
 
     def test_youtube_course(self):
         dl = FakeDownloader()
index 3450f0d17e19d95d67645a50c79f0680b05379cc..967f6a1003ab9ca858d90d12ea762b0a13183d57 100755 (executable)
@@ -1723,12 +1723,11 @@ class YoutubePlaylistIE(InfoExtractor):
             if 'feed' not in response:
                 self._downloader.report_error(u'Got a malformed response from YouTube API')
                 return
+            playlist_title = response['feed']['title']['$t']
             if 'entry' not in response['feed']:
                 # Number of videos is a multiple of self._MAX_RESULTS
                 break
 
-            playlist_title = response['feed']['title']['$t']
-
             videos += [ (entry['yt$position']['$t'], entry['content']['src'])
                         for entry in response['feed']['entry']
                         if 'content' in entry ]