]>
Raphaƫl G. Git Repositories - youtubedl/blob - test/test_youtube_lists.py
   7 # Allow direct execution 
   9 sys
.path
.append(os
.path
.dirname(os
.path
.dirname(os
.path
.abspath(__file__
)))) 
  11 from youtube_dl
.InfoExtractors 
import YoutubeUserIE
, YoutubePlaylistIE
, YoutubeIE
, YoutubeChannelIE
 
  12 from youtube_dl
.utils 
import * 
  13 from youtube_dl
.FileDownloader 
import FileDownloader
 
  15 PARAMETERS_FILE 
= os
.path
.join(os
.path
.dirname(os
.path
.abspath(__file__
)), "parameters.json") 
  16 with io
.open(PARAMETERS_FILE
, encoding
='utf-8') as pf
: 
  17     parameters 
= json
.load(pf
) 
  19 # General configuration (from __init__, not very elegant...) 
  20 jar 
= compat_cookiejar
.CookieJar() 
  21 cookie_processor 
= compat_urllib_request
.HTTPCookieProcessor(jar
) 
  22 proxy_handler 
= compat_urllib_request
.ProxyHandler() 
  23 opener 
= compat_urllib_request
.build_opener(proxy_handler
, cookie_processor
, YoutubeDLHandler()) 
  24 compat_urllib_request
.install_opener(opener
) 
  26 class FakeDownloader(FileDownloader
): 
  29         self
.params 
= parameters
 
  30     def to_screen(self
, s
): 
  32     def trouble(self
, s
, tb
=None): 
  34     def extract_info(self
, url
): 
  35         self
.result
.append(url
) 
  38 class TestYoutubeLists(unittest
.TestCase
): 
  39     def assertIsPlaylist(self
,info
): 
  40         """Make sure the info has '_type' set to 'playlist'""" 
  41         self
.assertEqual(info
['_type'], 'playlist') 
  43     def test_youtube_playlist(self
): 
  45         ie 
= YoutubePlaylistIE(dl
) 
  46         result 
= ie
.extract('https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re')[0] 
  47         self
.assertIsPlaylist(result
) 
  48         self
.assertEqual(result
['title'], 'ytdl test PL') 
  49         ytie_results 
= [YoutubeIE()._extract
_id
(url
['url']) for url 
in result
['entries']] 
  50         self
.assertEqual(ytie_results
, [ 'bV9L5Ht9LgY', 'FXxLjLQi3Fg', 'tU3Bgo5qJZE']) 
  52     def test_issue_673(self
): 
  54         ie 
= YoutubePlaylistIE(dl
) 
  55         result 
= ie
.extract('PLBB231211A4F62143')[0] 
  56         self
.assertEqual(result
['title'], 'Team Fortress 2') 
  57         self
.assertTrue(len(result
['entries']) > 40) 
  59     def test_youtube_playlist_long(self
): 
  61         ie 
= YoutubePlaylistIE(dl
) 
  62         result 
= ie
.extract('https://www.youtube.com/playlist?list=UUBABnxM4Ar9ten8Mdjj1j0Q')[0] 
  63         self
.assertIsPlaylist(result
) 
  64         self
.assertTrue(len(result
['entries']) >= 799) 
  66     def test_youtube_playlist_with_deleted(self
): 
  69         ie 
= YoutubePlaylistIE(dl
) 
  70         result 
= ie
.extract('https://www.youtube.com/playlist?list=PLwP_SiAcdui0KVebT0mU9Apz359a4ubsC')[0] 
  71         ytie_results 
= [YoutubeIE()._extract
_id
(url
['url']) for url 
in result
['entries']] 
  72         self
.assertFalse('pElCt5oNDuI' in ytie_results
) 
  73         self
.assertFalse('KdPEApIVdWM' in ytie_results
) 
  75     def test_youtube_playlist_empty(self
): 
  77         ie 
= YoutubePlaylistIE(dl
) 
  78         result 
= ie
.extract('https://www.youtube.com/playlist?list=PLtPgu7CB4gbZDA7i_euNxn75ISqxwZPYx')[0] 
  79         self
.assertIsPlaylist(result
) 
  80         self
.assertEqual(len(result
['entries']), 0) 
  82     def test_youtube_course(self
): 
  84         ie 
= YoutubePlaylistIE(dl
) 
  85         # TODO find a > 100 (paginating?) videos course 
  86         result 
= ie
.extract('https://www.youtube.com/course?list=ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8')[0] 
  87         entries 
= result
['entries'] 
  88         self
.assertEqual(YoutubeIE()._extract
_id
(entries
[0]['url']), 'j9WZyLZCBzs') 
  89         self
.assertEqual(len(entries
), 25) 
  90         self
.assertEqual(YoutubeIE()._extract
_id
(entries
[-1]['url']), 'rYefUsYuEp0') 
  92     def test_youtube_channel(self
): 
  94         ie 
= YoutubeChannelIE(dl
) 
  95         #test paginated channel 
  96         result 
= ie
.extract('https://www.youtube.com/channel/UCKfVa3S1e4PHvxWcwyMMg8w')[0] 
  97         self
.assertTrue(len(result
['entries']) > 90) 
  98         #test autogenerated channel 
  99         result 
= ie
.extract('https://www.youtube.com/channel/HCtnHdj3df7iM/videos')[0] 
 100         self
.assertTrue(len(result
['entries']) >= 18) 
 102     def test_youtube_user(self
): 
 103         dl 
= FakeDownloader() 
 104         ie 
= YoutubeUserIE(dl
) 
 105         result 
= ie
.extract('https://www.youtube.com/user/TheLinuxFoundation')[0] 
 106         self
.assertTrue(len(result
['entries']) >= 320) 
 108 if __name__ 
== '__main__':