def test_create_custom_tag(self):
        sample_manifest = self._get_sample_manifest()
        manifest_resource_response = self.bitmovin.manifests.HLS.create(
            sample_manifest)
        self.assertIsNotNone(manifest_resource_response)
        self.assertIsNotNone(manifest_resource_response.resource)
        self.assertIsNotNone(manifest_resource_response.resource.id)
        self._compare_manifests(sample_manifest,
                                manifest_resource_response.resource)

        sample_audio_media = self._get_sample_audio_media()
        audio_media_resource_response = self.bitmovin.manifests.HLS.AudioMedia.create(
            object_=sample_audio_media,
            manifest_id=manifest_resource_response.resource.id)

        custom_tag = CustomTag(position_mode=PositionMode.SEGMENT,
                               segment=1,
                               data="#X-CUSTOM-TAG")

        custom_tag_resource_response = self.bitmovin.manifests.HLS.AudioMedia.CustomTag.create(
            object_=custom_tag,
            manifest_id=manifest_resource_response.resource.id,
            media_id=audio_media_resource_response.resource.id)

        self.assertIsNotNone(custom_tag_resource_response)
        self.assertIsNotNone(custom_tag_resource_response.resource)
        self.assertIsNotNone(custom_tag_resource_response.resource.id)
        self._compare_custom_tags(first=custom_tag,
                                  second=custom_tag_resource_response.resource)
def insert_discontinuity(stream_type, manifest_id, stream_or_media_id,
                         keyframe):
    discontinuity_tag = CustomTag(data="#EXT-X-DISCONTINUITY",
                                  position_mode=PositionMode.KEYFRAME,
                                  keyframe_id=keyframe.id)

    if stream_type == 'audio':
        bitmovin.manifests.HLS.AudioMedia.CustomTag.create(
            object_=discontinuity_tag,
            manifest_id=manifest_id,
            media_id=stream_or_media_id)
    if stream_type == 'video':
        bitmovin.manifests.HLS.VariantStream.CustomTag.create(
            object_=discontinuity_tag,
            manifest_id=manifest_id,
            stream_id=stream_or_media_id)
예제 #3
0
    def test_delete_custom_tag(self):
        sample_manifest = self._get_sample_manifest()
        manifest_resource_response = self.bitmovin.manifests.HLS.create(sample_manifest)
        self.assertIsNotNone(manifest_resource_response)
        self.assertIsNotNone(manifest_resource_response.resource)
        self.assertIsNotNone(manifest_resource_response.resource.id)
        self._compare_manifests(sample_manifest, manifest_resource_response.resource)

        sample_variant_stream = self._get_sample_variant_stream()
        variant_stream_resource_response = self.bitmovin.manifests.HLS.VariantStream.create(
            object_=sample_variant_stream, manifest_id=manifest_resource_response.resource.id)

        custom_tag = CustomTag(position_mode=PositionMode.SEGMENT, segment=1, data="#X-CUSTOM-TAG")

        custom_tag_resource_response = self.bitmovin.manifests.HLS.VariantStream.CustomTag.create(
            object_=custom_tag,
            manifest_id=manifest_resource_response.resource.id,
            stream_id=variant_stream_resource_response.resource.id
        )

        self.assertIsNotNone(custom_tag_resource_response)
        self.assertIsNotNone(custom_tag_resource_response.resource)
        self.assertIsNotNone(custom_tag_resource_response.resource.id)
        self._compare_custom_tags(custom_tag, custom_tag_resource_response.resource)

        deleted_custom_tag_resource_response = self.bitmovin.manifests.HLS.VariantStream.CustomTag.delete(
            manifest_id=manifest_resource_response.resource.id,
            stream_id=variant_stream_resource_response.resource.id,
            custom_tag_id=custom_tag_resource_response.resource.id
        )

        self.assertIsNotNone(deleted_custom_tag_resource_response)
        self.assertIsNotNone(deleted_custom_tag_resource_response.resource)
        self.assertIsNotNone(deleted_custom_tag_resource_response.resource.id)
        self.assertEqual(custom_tag_resource_response.resource.id, deleted_custom_tag_resource_response.resource.id)

        with self.assertRaises(BitmovinApiError):
            self.bitmovin.manifests.HLS.VariantStream.CustomTag.retrieve(
                manifest_id=manifest_resource_response.resource.id,
                stream_id=variant_stream_resource_response.resource.id,
                custom_tag_id=custom_tag_resource_response.resource.id
            )
    def test_delete_custom_tag(self):
        sample_manifest = self._get_sample_manifest()
        manifest_resource_response = self.bitmovin.manifests.HLS.create(
            sample_manifest)
        self.assertIsNotNone(manifest_resource_response)
        self.assertIsNotNone(manifest_resource_response.resource)
        self.assertIsNotNone(manifest_resource_response.resource.id)
        self._compare_manifests(sample_manifest,
                                manifest_resource_response.resource)

        sample_audio_media = self._get_sample_audio_media()
        audio_media_resource_response = self.bitmovin.manifests.HLS.AudioMedia.create(
            object_=sample_audio_media,
            manifest_id=manifest_resource_response.resource.id)

        custom_tag = CustomTag(position_mode=PositionMode.SEGMENT,
                               segment=1,
                               data="#X-CUSTOM-TAG")

        custom_tag_resource_response = self.bitmovin.manifests.HLS.AudioMedia.CustomTag.create(
            object_=custom_tag,
            manifest_id=manifest_resource_response.resource.id,
            media_id=audio_media_resource_response.resource.id)

        delete_resource_response = self.bitmovin.manifests.HLS.AudioMedia.CustomTag.delete(
            manifest_id=manifest_resource_response.resource.id,
            media_id=audio_media_resource_response.resource.id,
            custom_tag_id=custom_tag_resource_response.resource.id)

        self.assertIsNotNone(delete_resource_response)
        self.assertEqual(delete_resource_response.resource.id,
                         custom_tag_resource_response.resource.id)

        with self.assertRaises(BitmovinApiError):
            self.bitmovin.manifests.HLS.AudioMedia.CustomTag.retrieve(
                manifest_id=manifest_resource_response.resource.id,
                media_id=audio_media_resource_response.resource.id,
                custom_tag_id=custom_tag_resource_response.resource.id)
예제 #5
0
    def test_list_custom_tags(self):
        sample_manifest = self._get_sample_manifest()
        manifest_resource_response = self.bitmovin.manifests.HLS.create(sample_manifest)
        self.assertIsNotNone(manifest_resource_response)
        self.assertIsNotNone(manifest_resource_response.resource)
        self.assertIsNotNone(manifest_resource_response.resource.id)
        self._compare_manifests(sample_manifest, manifest_resource_response.resource)

        sample_variant_stream = self._get_sample_variant_stream()
        variant_stream_resource_response = self.bitmovin.manifests.HLS.VariantStream.create(
            object_=sample_variant_stream, manifest_id=manifest_resource_response.resource.id)

        custom_tag = CustomTag(position_mode=PositionMode.SEGMENT, segment=1, data="#X-CUSTOM-TAG")

        custom_tag_resource_response = self.bitmovin.manifests.HLS.VariantStream.CustomTag.create(
            object_=custom_tag,
            manifest_id=manifest_resource_response.resource.id,
            stream_id=variant_stream_resource_response.resource.id
        )

        self.assertIsNotNone(custom_tag_resource_response)
        self.assertIsNotNone(custom_tag_resource_response.resource)
        self.assertIsNotNone(custom_tag_resource_response.resource.id)
        self._compare_custom_tags(custom_tag, custom_tag_resource_response.resource)

        retrieved_custom_tags_resource_response = self.bitmovin.manifests.HLS.VariantStream.CustomTag.list(
            manifest_id=manifest_resource_response.resource.id,
            stream_id=variant_stream_resource_response.resource.id,
        )

        self.assertIsNotNone(retrieved_custom_tags_resource_response)
        self.assertIsNotNone(retrieved_custom_tags_resource_response.resource)
        self.assertIsInstance(retrieved_custom_tags_resource_response.resource, list)
        self.assertEqual(len(retrieved_custom_tags_resource_response.resource), 1)
        self._compare_custom_tags(
            custom_tag_resource_response.resource,
            retrieved_custom_tags_resource_response.resource[0]
        )