def test_prepare_video(self):
        vid_returned, size, duration, thumbnail_content = media.prepare_video(
            self.TEST_VIDEO_PATH,
            aspect_ratios=1.0,
            max_duration=10.0,
            save_path='media/output.mp4',
            save_only=True)
        self.assertEqual(duration, 10.0, 'Invalid duration.')
        self.assertEqual(size[0], size[1], 'Invalid width/length.')
        self.assertTrue(os.path.isfile('media/output.mp4'),
                        'Output file not generated.')
        self.assertTrue(os.path.isfile(vid_returned),
                        'Output file not returned.')

        with self.assertRaises(ValueError) as ve:
            media.prepare_video(self.TEST_VIDEO_PATH,
                                aspect_ratios=1.0,
                                max_duration=10,
                                save_only=True)
        self.assertEqual(str(ve.exception), '"save_path" cannot be empty.')
        self.assertGreater(len(thumbnail_content), 0,
                           'No thumbnail content returned.')

        # Save video, thumbnail content and verify attributes
        vidclip_output = VideoFileClip('media/output.mp4')
        self.assertAlmostEqual(duration, vidclip_output.duration, places=0)
        self.assertEqual(size[0], vidclip_output.size[0])
        self.assertEqual(size[1], vidclip_output.size[1])

        im = Image.open(io.BytesIO(thumbnail_content))
        self.assertEqual(size[0], im.size[0])
        self.assertEqual(size[1], im.size[1])
Example #2
0
 def test_helper_methods(self):
     self.assertRaises(ValueError, lambda: media.prepare_video(
         self.TEST_VIDEO_PATH, thumbnail_frame_ts=999.99))
     self.assertRaises(ValueError, lambda: media.prepare_video(
         self.TEST_VIDEO_PATH, save_path='output.mov'))
     self.assertRaises(ValueError, lambda: media.calc_crop((1, 2, 3), (500, 600)))
     box = media.calc_crop((1, 2), (400, 800))
     self.assertEqual(box, (0, 200, 400, 600))
    def test_prepare_video3(self):
        video_content, size, duration, thumbnail_content = media.prepare_video(
            self.TEST_VIDEO_PATH,
            max_size=None,
            max_duration=1000.0,
            skip_reencoding=True,
            min_size=None)

        self.assertEqual(size[0], self.TEST_VIDEO_SIZE[0], 'Width changed.')
        self.assertEqual(size[1], self.TEST_VIDEO_SIZE[1], 'Height changed.')

        self.assertGreater(len(video_content), 0, 'No video content returned.')
        self.assertGreater(len(thumbnail_content), 0,
                           'No thumbnail content returned.')

        # Save video, thumbnail content and verify attributes
        video_output = tempfile.NamedTemporaryFile(prefix='ipae_test_',
                                                   suffix='.mp4',
                                                   delete=False)
        video_output.write(video_content)
        video_output.close()
        vidclip_output = VideoFileClip(video_output.name)
        self.assertAlmostEqual(duration, vidclip_output.duration, places=0)
        self.assertEqual(size[0], vidclip_output.size[0])
        self.assertEqual(size[1], vidclip_output.size[1])

        im = Image.open(io.BytesIO(thumbnail_content))
        self.assertEqual(size[0], im.size[0])
        self.assertEqual(size[1], im.size[1])

        self.assertEqual(os.path.getsize(video_output.name),
                         os.path.getsize(self.TEST_VIDEO_PATH))
    def test_prepare_video2(self):
        video_content, size, duration, thumbnail_content = media.prepare_video(
            self.TEST_VIDEO_PATH, max_size=(480, 480), min_size=(0, 0))
        self.assertEqual(duration, self.TEST_VIDEO_DURATION,
                         'Duration changed.')
        self.assertLessEqual(size[0], 480, 'Invalid width.')
        self.assertLessEqual(size[1], 480, 'Invalid height.')
        self.assertEqual(
            1.0 * size[0] / size[1],
            1.0 * self.TEST_VIDEO_SIZE[0] / self.TEST_VIDEO_SIZE[1],
            'Aspect ratio changed.')
        self.assertGreater(len(video_content), 0, 'No video content returned.')
        self.assertGreater(len(thumbnail_content), 0,
                           'No thumbnail content returned.')

        # Save video, thumbnail content and verify attributes
        video_output = tempfile.NamedTemporaryFile(prefix='ipae_test_',
                                                   suffix='.mp4',
                                                   delete=False)
        video_output.write(video_content)
        video_output.close()
        vidclip_output = VideoFileClip(video_output.name)
        self.assertAlmostEqual(duration, vidclip_output.duration, places=0)
        self.assertEqual(size[0], vidclip_output.size[0])
        self.assertEqual(size[1], vidclip_output.size[1])

        im = Image.open(io.BytesIO(thumbnail_content))
        self.assertEqual(size[0], im.size[0])
        self.assertEqual(size[1], im.size[1])
Example #5
0
 def prepare(self, story=False):
     ratio = MediaRatios.reel if story else MediaRatios.standard
     size = (1080, 1920) if story else (1080, 1350)
     # print('ratio is: ', ratio)
     if self.is_image():
         return IGMedia.prepare_image(self.media_path,
                                      max_size=size,
                                      aspect_ratios=ratio)
     elif self.is_video():
         max_time = 15.0 if story else 60.0
         return IGMedia.prepare_video(self.media_path,
                                      max_size=size,
                                      aspect_ratios=ratio,
                                      max_duration=max_time)
Example #6
0
    def test_remote_video(self):
        video_url = 'https://raw.githubusercontent.com/johndyer/mediaelement-files/master/big_buck_bunny.mp4'
        video_content, size, duration, thumbnail_content = media.prepare_video(
            video_url, aspect_ratios=1.0, max_duration=10)
        self.assertEqual(duration, 10.0, 'Invalid duration.')
        self.assertEqual(size[0], size[1], 'Invalid width/length.')
        self.assertGreater(len(video_content), 0, 'No video content returned.')
        self.assertGreater(len(thumbnail_content), 0, 'No thumbnail content returned.')

        # Save video, thumbnail content and verify attributes
        video_output = tempfile.NamedTemporaryFile(prefix='ipae_test_', suffix='.mp4', delete=False)
        video_output.write(video_content)
        video_output.close()
        vidclip_output = VideoFileClip(video_output.name)
        self.assertAlmostEqual(duration, vidclip_output.duration, places=1)
        self.assertEqual(size[0], vidclip_output.size[0])
        self.assertEqual(size[1], vidclip_output.size[1])

        im = Image.open(io.BytesIO(thumbnail_content))
        self.assertEqual(size[0], im.size[0])
        self.assertEqual(size[1], im.size[1])
Example #7
0
def post_video(api, filepath, thumb_data, caption):
    data, size, duration, thumb = media.prepare_video(filepath, aspect_ratios=MediaRatios.standard, skip_reencoding=False)
    api.post_video(data, size, duration, thumb, caption)