def test_list(self): entriesTotalCount = 4 entriesPageSize = 3 metadataPageSize = 2 entries, metadataProfiles = self.createEntriesWithMetadataObjects(entriesTotalCount, metadataPageSize) entriesFilter = KalturaMediaEntryFilter() entriesFilter.tagsLike = self.uniqueTag entriesFilter.statusIn = KalturaEntryStatus.PENDING + ',' + KalturaEntryStatus.NO_CONTENT entriesPager = KalturaFilterPager() entriesPager.pageSize = entriesPageSize metadataFilter = KalturaMetadataFilter() metadataFilter.metadataObjectTypeEqual = KalturaMetadataObjectType.ENTRY metadataMapping = KalturaResponseProfileMapping() metadataMapping.filterProperty = 'objectIdEqual' metadataMapping.parentProperty = 'id' metadataPager = KalturaFilterPager() metadataPager.pageSize = metadataPageSize metadataResponseProfile = KalturaDetachedResponseProfile() metadataResponseProfile.name = self.uniqid('test_') metadataResponseProfile.type = KalturaResponseProfileType.INCLUDE_FIELDS metadataResponseProfile.fields = 'id,objectId,createdAt, xml' metadataResponseProfile.filter = metadataFilter metadataResponseProfile.pager = metadataPager metadataResponseProfile.mappings = [metadataMapping] responseProfile = KalturaResponseProfile() responseProfile.name = self.uniqid('test_') responseProfile.systemName = self.uniqid('test_') responseProfile.type = KalturaResponseProfileType.INCLUDE_FIELDS responseProfile.fields = 'id,name,createdAt' responseProfile.relatedProfiles = [metadataResponseProfile] responseProfile = self.client.responseProfile.add(responseProfile) nestedResponseProfile = KalturaResponseProfileHolder() nestedResponseProfile.id = responseProfile.id self.client.setResponseProfile(nestedResponseProfile) list = self.client.baseEntry.list(entriesFilter, entriesPager) self.assertIsInstance(list, KalturaBaseEntryListResponse) self.assertEqual(entriesTotalCount, list.totalCount) self.assertEqual(entriesPageSize, len(list.objects)) [self.assertIsInstance(entry, KalturaMediaEntry) for entry in list.objects] for entry in list.objects: self.assertNotEqual(entry.relatedObjects, NotImplemented) self.assertTrue(entry.relatedObjects.has_key(metadataResponseProfile.name)) metadataList = entry.relatedObjects[metadataResponseProfile.name] self.assertIsInstance(metadataList, KalturaMetadataListResponse) self.assertEqual(len(metadataProfiles), len(metadataList.objects)) [self.assertIsInstance(metadata, KalturaMetadata) for metadata in metadataList.objects] for metadata in metadataList.objects: self.assertEqual(entry.id, metadata.objectId)
def test_SampleMetadataOperations(self): from KalturaClient.Plugins.Metadata import KalturaMetadataProfile from KalturaClient.Plugins.Metadata import KalturaMetadataObjectType from KalturaClient.Plugins.Metadata import KalturaMetadataProfileFilter from KalturaClient.Plugins.Metadata import KalturaMetadataFilter # The metadata field we'll add/update metaDataFieldName = "SubtitleFormat" fieldValue = "VobSub" # The Schema file for the field # Currently, you must build the xsd yourself. There is no utility provided. xsdFile = "MetadataSchema.xsd" # Setup a pager and search to use pager = KalturaFilterPager() search = KalturaMediaEntryFilter() search.setOrderBy(KalturaMediaEntryOrderBy.CREATED_AT_ASC) search.setMediaTypeEqual(KalturaMediaType.VIDEO) # Video only pager.setPageSize(10) pager.setPageIndex(1) print "List videos, get the first one..." # Get 10 video entries, but we'll just use the first one returned entries = self.client.media.list(search, pager).objects # make sure we have a metadata profile profile = KalturaMetadataProfile() profile.setName('TestProfile %s' % (testString, )) MetadataObjectType = KalturaMetadataObjectType.ENTRY profile.setMetadataObjectType(MetadataObjectType) viewsData = "" xsdFh = getTestFile(xsdFile) newProfile = self.client.metadata.metadataProfile.add( profile, xsdFh.read(), viewsData) # Check if there are any custom fields defined in the KMC (Settings -> Custom Data) # for the first item returned by the previous listaction filter = KalturaMetadataProfileFilter() metadata = self.client.metadata.metadataProfile.list(filter, pager).objects name = entries[0].getName() id = entries[0].getId() if metadata[0].getXsd() != None: print "1. There are custom fields for video: " + name + ", entryid: " + id else: print "1. There are no custom fields for video: " + name + ", entryid: " + id # Add a custom data entry in the KMC (Settings -> Custom Data) profile = KalturaMetadataProfile() profile.setName('TestProfile %s' % (testString, )) profile.setMetadataObjectType(KalturaMetadataObjectType.ENTRY) viewsData = "" metadataResult = self.client.metadata.metadataProfile.update( newProfile.id, profile, xsdFh.read(), viewsData) assert (metadataResult.xsd != None) # Add the custom metadata value to the first video filter2 = KalturaMetadataFilter() filter2.setObjectIdEqual(entries[0].id) xmlData = "<metadata><SubtitleFormat>" + fieldValue + "</SubtitleFormat></metadata>" metadata2 = self.client.metadata.metadata.add( newProfile.id, profile.metadataObjectType, entries[0].id, xmlData) assert (metadata2.xml != None) print "3. Successfully added the custom data field for video: " + name + ", entryid: " + id xmlStr = metadata2.xml print "XML used: " + xmlStr # Now lets change the value (update) of the custom field # Get the metadata for the video filter3 = KalturaMetadataFilter() filter3.setObjectIdEqual(entries[0].id) filter3.setMetadataProfileIdEqual(newProfile.id) metadataList = self.client.metadata.metadata.list(filter3).objects assert (metadataList[0].xml != None) print "4. Current metadata for video: " + name + ", entryid: " + id xmlquoted = metadataList[0].xml print "XML: " + xmlquoted xml = metadataList[0].xml # Make sure we find the old value in the current metadata pos = xml.find("<" + metaDataFieldName + ">" + fieldValue + "</" + metaDataFieldName + ">") assert (pos >= 0) pattern = re.compile("<" + metaDataFieldName + ">([^<]+)</" + metaDataFieldName + ">") xml = pattern.sub( "<" + metaDataFieldName + ">Ogg Writ</" + metaDataFieldName + ">", xml) rc = self.client.metadata.metadata.update(metadataList[0].id, xml) print "5. Updated metadata for video: " + name + ", entryid: " + id xmlquoted = rc.xml print "XML: " + xmlquoted
def test_SampleMetadataOperations(self): from KalturaClient.Plugins.Metadata import KalturaMetadataProfile from KalturaClient.Plugins.Metadata import KalturaMetadataObjectType from KalturaClient.Plugins.Metadata import KalturaMetadataProfileFilter from KalturaClient.Plugins.Metadata import KalturaMetadataFilter # The metadata field we'll add/update metaDataFieldName = "SubtitleFormat" fieldValue = "VobSub" # The Schema file for the field # Currently, you must build the xsd yourself. There is no utility provided. xsdFile = "MetadataSchema.xsd" # Setup a pager and search to use pager = KalturaFilterPager() search = KalturaMediaEntryFilter() search.setOrderBy(KalturaMediaEntryOrderBy.CREATED_AT_ASC) search.setMediaTypeEqual(KalturaMediaType.VIDEO) # Video only pager.setPageSize(10) pager.setPageIndex(1) print "List videos, get the first one..." # Get 10 video entries, but we'll just use the first one returned entries = self.client.media.list(search, pager).objects # make sure we have a metadata profile profile = KalturaMetadataProfile() profile.setName('TestProfile %s' % (testString,)) MetadataObjectType = KalturaMetadataObjectType.ENTRY profile.setMetadataObjectType(MetadataObjectType) viewsData = "" xsdFh = getTestFile(xsdFile) newProfile = self.client.metadata.metadataProfile.add(profile, xsdFh.read(), viewsData) # Check if there are any custom fields defined in the KMC (Settings -> Custom Data) # for the first item returned by the previous listaction filter = KalturaMetadataProfileFilter() metadata = self.client.metadata.metadataProfile.list(filter, pager).objects name = entries[0].getName() id = entries[0].getId() if metadata[0].getXsd() != None: print "1. There are custom fields for video: " + name + ", entryid: " + id else: print "1. There are no custom fields for video: " + name + ", entryid: " + id # Add a custom data entry in the KMC (Settings -> Custom Data) profile = KalturaMetadataProfile() profile.setName('TestProfile %s' % (testString,)) profile.setMetadataObjectType(KalturaMetadataObjectType.ENTRY) viewsData = "" metadataResult = self.client.metadata.metadataProfile.update(newProfile.id, profile, xsdFh.read(), viewsData) assert(metadataResult.xsd != None) # Add the custom metadata value to the first video filter2 = KalturaMetadataFilter() filter2.setObjectIdEqual(entries[0].id) xmlData = "<metadata><SubtitleFormat>" + fieldValue + "</SubtitleFormat></metadata>" metadata2 = self.client.metadata.metadata.add(newProfile.id, profile.metadataObjectType, entries[0].id, xmlData) assert(metadata2.xml != None) print "3. Successfully added the custom data field for video: " + name + ", entryid: " + id xmlStr = metadata2.xml print "XML used: " + xmlStr # Now lets change the value (update) of the custom field # Get the metadata for the video filter3 = KalturaMetadataFilter() filter3.setObjectIdEqual(entries[0].id) filter3.setMetadataProfileIdEqual(newProfile.id) metadataList = self.client.metadata.metadata.list(filter3).objects assert(metadataList[0].xml != None) print "4. Current metadata for video: " + name + ", entryid: " + id xmlquoted = metadataList[0].xml print "XML: " + xmlquoted xml = metadataList[0].xml # Make sure we find the old value in the current metadata pos = xml.find("<" + metaDataFieldName + ">" + fieldValue + "</" + metaDataFieldName + ">") assert(pos >= 0) pattern = re.compile("<" + metaDataFieldName + ">([^<]+)</" + metaDataFieldName + ">") xml = pattern.sub("<" + metaDataFieldName + ">Ogg Writ</" + metaDataFieldName + ">", xml) rc = self.client.metadata.metadata.update(metadataList[0].id, xml) print "5. Updated metadata for video: " + name + ", entryid: " + id xmlquoted = rc.xml print "XML: " + xmlquoted
def test_list(self): entriesTotalCount = 4 entriesPageSize = 3 metadataPageSize = 2 entries, metadataProfiles = self.createEntriesWithMetadataObjects( entriesTotalCount, metadataPageSize) entriesFilter = KalturaMediaEntryFilter() entriesFilter.tagsLike = self.uniqueTag entriesFilter.statusIn = KalturaEntryStatus.PENDING + ',' + KalturaEntryStatus.NO_CONTENT entriesPager = KalturaFilterPager() entriesPager.pageSize = entriesPageSize metadataFilter = KalturaMetadataFilter() metadataFilter.metadataObjectTypeEqual = KalturaMetadataObjectType.ENTRY metadataMapping = KalturaResponseProfileMapping() metadataMapping.filterProperty = 'objectIdEqual' metadataMapping.parentProperty = 'id' metadataPager = KalturaFilterPager() metadataPager.pageSize = metadataPageSize metadataResponseProfile = KalturaDetachedResponseProfile() metadataResponseProfile.name = self.uniqid('test_') metadataResponseProfile.type = KalturaResponseProfileType.INCLUDE_FIELDS metadataResponseProfile.fields = 'id,objectId,createdAt, xml' metadataResponseProfile.filter = metadataFilter metadataResponseProfile.pager = metadataPager metadataResponseProfile.mappings = [metadataMapping] responseProfile = KalturaResponseProfile() responseProfile.name = self.uniqid('test_') responseProfile.systemName = self.uniqid('test_') responseProfile.type = KalturaResponseProfileType.INCLUDE_FIELDS responseProfile.fields = 'id,name,createdAt' responseProfile.relatedProfiles = [metadataResponseProfile] responseProfile = self.client.responseProfile.add(responseProfile) nestedResponseProfile = KalturaResponseProfileHolder() nestedResponseProfile.id = responseProfile.id self.client.setResponseProfile(nestedResponseProfile) list = self.client.baseEntry.list(entriesFilter, entriesPager) self.assertIsInstance(list, KalturaBaseEntryListResponse) self.assertEqual(entriesTotalCount, list.totalCount) self.assertEqual(entriesPageSize, len(list.objects)) [ self.assertIsInstance(entry, KalturaMediaEntry) for entry in list.objects ] for entry in list.objects: self.assertNotEqual(entry.relatedObjects, NotImplemented) self.assertTrue( entry.relatedObjects.has_key(metadataResponseProfile.name)) metadataList = entry.relatedObjects[metadataResponseProfile.name] self.assertIsInstance(metadataList, KalturaMetadataListResponse) self.assertEqual(len(metadataProfiles), len(metadataList.objects)) [ self.assertIsInstance(metadata, KalturaMetadata) for metadata in metadataList.objects ] for metadata in metadataList.objects: self.assertEqual(entry.id, metadata.objectId)