mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2026-11-14 16:16:37 +00:00
71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
from __future__ import unicode_literals
|
|
|
|
import unittest
|
|
|
|
from test.helper import FakeYDL
|
|
from youtube_dl.extractor.reddit import RedditRIE
|
|
|
|
|
|
class _TestRedditRIE(RedditRIE):
|
|
def __init__(self, downloader):
|
|
super(_TestRedditRIE, self).__init__(downloader)
|
|
self.cookies = {}
|
|
self.requests = []
|
|
self.download_kwargs = None
|
|
self.skip_old_session_cookie = False
|
|
|
|
def _get_cookies(self, url):
|
|
return self.cookies
|
|
|
|
def _request_webpage(self, url_or_request, video_id, note=None, errnote=None,
|
|
fatal=True, data=None, headers={}, query={}, expected_status=None):
|
|
self.requests.append((url_or_request, query))
|
|
if 'old.reddit.com' in url_or_request and not self.skip_old_session_cookie:
|
|
self.cookies['loid'] = object()
|
|
elif '/svc/shreddit/' in url_or_request:
|
|
self.cookies['loid'] = object()
|
|
return True
|
|
|
|
def _download_json(self, url, video_id, **kwargs):
|
|
self.download_kwargs = kwargs
|
|
return [{
|
|
'data': {
|
|
'children': [{
|
|
'data': {
|
|
'url': 'https://v.redd.it/test-video',
|
|
},
|
|
}],
|
|
},
|
|
}]
|
|
|
|
def _extract_m3u8_formats(self, *args, **kwargs):
|
|
return []
|
|
|
|
def _extract_mpd_formats(self, *args, **kwargs):
|
|
return []
|
|
|
|
def _sort_formats(self, formats):
|
|
pass
|
|
|
|
|
|
class TestRedditSession(unittest.TestCase):
|
|
def setUp(self):
|
|
self.ie = _TestRedditRIE(FakeYDL())
|
|
|
|
def test_initializes_anonymous_session(self):
|
|
result = self.ie._real_extract(
|
|
'https://www.reddit.com/r/videos/comments/abc123/example-post/')
|
|
|
|
self.assertEqual(result['url'], 'https://v.redd.it/test-video')
|
|
self.assertEqual(self.ie.requests[0][0], 'https://old.reddit.com/')
|
|
self.assertEqual(self.ie.download_kwargs.get('expected_status'), 403)
|
|
|
|
def test_falls_back_to_shreddit_when_old_reddit_does_not_set_loid(self):
|
|
self.ie.skip_old_session_cookie = True
|
|
self.ie._real_extract(
|
|
'https://www.reddit.com/r/videos/comments/abc123/example-post/')
|
|
|
|
self.assertEqual(self.ie.requests[0][0], 'https://old.reddit.com/')
|
|
self.assertIn('/svc/shreddit/example-post', self.ie.requests[1][0])
|
|
self.assertEqual(self.ie.requests[1][1]['render-mode'], 'partial')
|