|
|
|
@ -12,6 +12,7 @@ import copy
|
|
|
|
|
|
|
|
|
|
from test.helper import FakeYDL, assertRegexpMatches
|
|
|
|
|
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
|
|
|
|
@ -507,6 +508,51 @@ class TestYoutubeDL(unittest.TestCase):
|
|
|
|
|
res = get_videos(f)
|
|
|
|
|
self.assertEqual(res, ['1'])
|
|
|
|
|
|
|
|
|
|
def test_playlist_items_selection(self):
|
|
|
|
|
entries = [{
|
|
|
|
|
'id': compat_str(i),
|
|
|
|
|
'title': compat_str(i),
|
|
|
|
|
'url': TEST_URL,
|
|
|
|
|
} for i in range(1, 5)]
|
|
|
|
|
playlist = {
|
|
|
|
|
'_type': 'playlist',
|
|
|
|
|
'id': 'test',
|
|
|
|
|
'entries': entries,
|
|
|
|
|
'extractor': 'test:playlist',
|
|
|
|
|
'extractor_key': 'test:playlist',
|
|
|
|
|
'webpage_url': 'http://example.com',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def get_ids(params):
|
|
|
|
|
ydl = YDL(params)
|
|
|
|
|
# make a copy because the dictionary can be modified
|
|
|
|
|
ydl.process_ie_result(playlist.copy())
|
|
|
|
|
return [int(v['id']) for v in ydl.downloaded_info_dicts]
|
|
|
|
|
|
|
|
|
|
result = get_ids({})
|
|
|
|
|
self.assertEqual(result, [1, 2, 3, 4])
|
|
|
|
|
|
|
|
|
|
result = get_ids({'playlistend': 10})
|
|
|
|
|
self.assertEqual(result, [1, 2, 3, 4])
|
|
|
|
|
|
|
|
|
|
result = get_ids({'playlistend': 2})
|
|
|
|
|
self.assertEqual(result, [1, 2])
|
|
|
|
|
|
|
|
|
|
result = get_ids({'playliststart': 10})
|
|
|
|
|
self.assertEqual(result, [])
|
|
|
|
|
|
|
|
|
|
result = get_ids({'playliststart': 2})
|
|
|
|
|
self.assertEqual(result, [2, 3, 4])
|
|
|
|
|
|
|
|
|
|
result = get_ids({'playlist_items': '2-4'})
|
|
|
|
|
self.assertEqual(result, [2, 3, 4])
|
|
|
|
|
|
|
|
|
|
result = get_ids({'playlist_items': '2,4'})
|
|
|
|
|
self.assertEqual(result, [2, 4])
|
|
|
|
|
|
|
|
|
|
result = get_ids({'playlist_items': '10'})
|
|
|
|
|
self.assertEqual(result, [])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
unittest.main()
|
|
|
|
|