def set_recorded_content_remote(self, upload_session, duration): token_id = upload_session.token_id recorded_id = upload_session.recorded_id entry_id = upload_session.entry_id partner_id = upload_session.partner_id resource = KalturaUploadedFileTokenResource(token_id) self.logger.info( "set_recorded_content_remote partner_id [%s] token [%s] duration [%s]", partner_id, token_id, duration) self.set_recorded_content(entry_id, resource, duration, partner_id, recorded_id)
def replaceFileOnRemote(self, client=None): resource = KalturaUploadedFileTokenResource() resource.setToken(self.uploadToken.getId()) try: client.media.updateContent(self.entryId, resource) except KalturaException as e: if e.code == u'ENTRY_REPLACEMENT_ALREADY_EXISTS': #auto-deny the half-cooked replacement and re-try client.media.cancelReplace(self.entryId) client.media.updateContent(self.entryId, resource) #XXX adjust workflow: #XXX if 'auto approve' is turned off in settings: newMediaEntry = client.media.approveReplace(self.entryId)
def modifyVideo(context, event): """Fired when the object is edited Any differences between plone object (context) and kaltura object are considered edits to the kaltura object, and are sent to kaltura """ newMediaEntry = IKalturaMediaEntryProvider(context).getEntry() entryId = context.KalturaObject.getId() file_changed = False if hasattr(event, 'descriptions') and event.descriptions: for d in event.descriptions: if d.interface is IKaltura_Video and 'video_file' in d.attributes: file_changed = True (client, session) = kconnect() mediaEntry = client.media.update(entryId, newMediaEntry) context.KalturaObject = mediaEntry if file_changed: logger.log('uploading new video for %s' % (context.getId(), ), level=logging.WARN) uploadTokenId = uploadVideo(context, client) resource = KalturaUploadedFileTokenResource() resource.setToken(uploadTokenId) try: client.media.updateContent(entryId, resource) except KalturaException as e: if e.code == 'ENTRY_REPLACEMENT_ALREADY_EXISTS': #auto-deny the half-cooked replacement and re-try client.media.cancelReplace(entryId) client.media.updateContent(entryId, resource) #XXX if 'auto approve' is turned off in settings: try: newMediaEntry = client.media.approveReplace(entryId) except KalturaException as e: if e.code == 'ENTRY_ID_NOT_REPLACED': logger.log( 'Kaltura Video not replaced on KMC for %s, entry id %s' % (context.getId(), entryId), level=logging.WARN) syncCategories(context, client)
def test_updateContent(self): mediaEntry = KalturaMediaEntry() mediaEntry.setName('pytest.MediaTests.test_updateContent') mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO)) ulFile = getTestFile('DemoVideo.flv') uploadTokenId = self.client.media.upload(ulFile) mediaEntry = self.client.media.addFromUploadedFile( mediaEntry, uploadTokenId) self.addCleanup(self.client.media.delete, mediaEntry.getId()) self.readyWait(mediaEntry.getId()) #now, change the content on the mediaEntry to another video file token = KalturaUploadToken() token = self.client.uploadToken.add(token) self.addCleanup(self.client.uploadToken.delete, token.getId()) ulFile = getTestFile('countdown.mp4') token = self.client.uploadToken.upload(token.getId(), ulFile) #create a resource resource = KalturaUploadedFileTokenResource() resource.setToken(token.getId()) #DO THE TEST newMediaEntry = self.client.media.updateContent( mediaEntry.getId(), resource) #must approve it... newMediaEntry = self.client.media.approveReplace(newMediaEntry.getId()) self.readyWait(newMediaEntry.getId()) #make sure everything but content is the same self.assertEqual(mediaEntry.getId(), newMediaEntry.getId()) self.assertEqual(mediaEntry.getName(), newMediaEntry.getName()) self.assertNotEqual(mediaEntry.getDuration(), newMediaEntry.getDuration())