def test_extract_video_with_audio_crossposted_post(self, rv_mock, filter_content, make_title, make_dir_path): url = 'https://v.redd.it/lkfmw864od1971' fallback_url = url + '/DASH_2_4_M?source=fallback' parent_submission = get_mock_reddit_video_submission( _id='pppppp', is_video=True, title='A parent vid', subreddit='DefinitelyNotPublicFreakout', media={'reddit_video': {'fallback_url': fallback_url}} ) rv_mock.return_value = parent_submission submission = get_mock_reddit_video_submission(crosspost_parent=parent_submission, url='https://v.redd.it/nottherealurl') post = get_post(url=url, session=self.session, reddit_id=submission.id, title=submission.title) filter_content.return_value = True make_title.return_value = post.title make_dir_path.return_value = 'content_dir_path' re = RedditVideoExtractor(post) re.extract_content() rv_mock.assert_called() self.assertEqual(2, (len(re.extracted_content))) vid_content = re.extracted_content[0] self.check(vid_content, fallback_url, post, title=f'{post.title}(video)') audio_content = re.extracted_content[1] self.check(audio_content, f'{url}/DASH_audio?source=fallback', post, title=f'{post.title}(audio)') self.assertEqual(1, len(video_merger.videos_to_merge))
def test_extract_video_with_audio(self, get_host_vid, check_audio, filter_content, make_title, make_dir_path): url = 'https://v.redd.it/lkfmw864od1971' fallback_url = url + '/DASH_2_4_M?source=fallback' submission = get_mock_reddit_video_submission( media={'reddit_video': { 'fallback_url': fallback_url }}) get_host_vid.return_value = submission check_audio.return_value = True post = get_post(url=url, session=self.session, reddit_id=submission.id) filter_content.return_value = True make_title.return_value = post.title make_dir_path.return_value = 'content_dir_path' re = RedditVideoExtractor(post) re.extract_content() self.assertEqual(2, len(re.extracted_content)) vid_content = re.extracted_content[0] self.check(vid_content, fallback_url, post, title=f'{post.title}(video)') audio_content = re.extracted_content[1] self.check(audio_content, f'{url}/DASH_audio?source=fallback', post, title=f'{post.title}(audio)') self.assertEqual(1, len(video_merger.videos_to_merge))
def test_extract_video_with_audio_extract_exception( self, get_host_vid, get_audio, filter_content, make_title, make_dir_path): url = 'https://v.redd.it/lkfmw864od1971' fallback_url = url + '/DASH_2_4_M?source=fallback' get_audio.side_effect = AttributeError submission = get_mock_reddit_video_submission( is_video=True, media={'reddit_video': { 'fallback_url': fallback_url }}) get_host_vid.return_value = submission post = get_post(url=url, session=self.session, reddit_id=submission.id, title=submission.title) filter_content.return_value = True make_title.return_value = post.title make_dir_path.return_value = 'content_dir_path' re = RedditVideoExtractor(post) re.extract_content() self.assertEqual(1, len(re.extracted_content)) self.check_output(re, fallback_url, post, title=f'{post.title}(video)') self.assertEqual(0, len(video_merger.videos_to_merge))
def test_extract_video_failed_to_find_url(self, get_vid_url, get_host_vid, filter_content, make_title, make_dir_path): submission = get_mock_reddit_video_submission(is_video=True) get_vid_url.return_value = None get_host_vid.return_value = submission post = get_post(title=submission.title, session=self.session) re = RedditVideoExtractor(post) re.extract_content() self.assertEqual(0, len(re.extracted_content)) self.assertTrue(re.failed_extraction) self.assertIsNotNone(re.failed_extraction_message)
def test_extract_gif(self, get_host_vid, filter_content, make_title, make_dir_path): url = 'https://v.redd.it/lkfmw864od1971' fallback_url = url + '/DASH_2_4_M?source=fallback' submission = get_mock_reddit_video_submission(media={'reddit_video': {'fallback_url': fallback_url}}) get_host_vid.return_value = submission post = get_post(url=url, session=self.session, reddit_id=submission.id) filter_content.return_value = True make_title.return_value = post.title make_dir_path.return_value = 'content_dir_path' re = RedditVideoExtractor(post) re.extract_content() self.check_output(re, fallback_url, post, title=f'{post.title}(video)')