/// <summary> /// Simple multi request example showing how to start session and list media in a single HTTP request /// </summary> static void MultiRequestExample() { KalturaClient client = new KalturaClient(GetConfig()); client.StartMultiRequest(); client.SessionService.Start(ADMIN_SECRET, "", KalturaSessionType.ADMIN, PARTNER_ID, 86400, ""); client.KS = "{1:result}"; // for the current multi request, the result of the first call will be used as the ks for next calls KalturaMediaEntryFilter filter = new KalturaMediaEntryFilter(); filter.OrderBy = KalturaMediaEntryOrderBy.CREATED_AT_DESC; client.MediaService.List(filter, new KalturaFilterPager()); KalturaMultiResponse response = client.DoMultiRequest(); // in multi request, when there is an error, an exception is NOT thrown, so we should check manually if (response[1].GetType() == typeof(KalturaAPIException)) { Console.WriteLine("Error listing media " + ((KalturaAPIException)response[1]).Message); // we can throw the exception if we want //throw (KalturaAPIException)response[1]; } else { KalturaMediaListResponse mediaList = (KalturaMediaListResponse)response[1]; Console.WriteLine("Total media entries: " + mediaList.TotalCount); foreach (KalturaMediaEntry mediaEntry in mediaList.Objects) { Console.WriteLine("Media Name: " + mediaEntry.Name); } } }
static void SampleMetadataOperations() { // The Schema file for the field // Currently, you must build the xsd yourself. There is no utility provided. string xsdFile = "MetadataSchema.xsd"; StreamReader fileStream = File.OpenText(xsdFile); string xsd = fileStream.ReadToEnd(); string fieldValue = "VobSub"; string xmlData = "<metadata><SubtitleFormat>" + fieldValue + "</SubtitleFormat></metadata>"; KalturaClient client = new KalturaClient(GetConfig()); // start new session (client session is enough when we do operations in a users scope) client.KS = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.ADMIN, PARTNER_ID); // Setup a pager and search to use KalturaMediaEntryFilter mediaEntryFilter = new KalturaMediaEntryFilter(); mediaEntryFilter.OrderBy = KalturaMediaEntryOrderBy.CREATED_AT_ASC; mediaEntryFilter.MediaTypeEqual = KalturaMediaType.VIDEO; KalturaFilterPager pager = new KalturaFilterPager(); pager.PageSize = 1; pager.PageIndex = 1; KalturaMetadataProfile newMetadataProfile = new KalturaMetadataProfile(); newMetadataProfile.MetadataObjectType = KalturaMetadataObjectType.ENTRY; newMetadataProfile.Name = "Test"; Console.WriteLine("List videos, get the first one..."); IList <KalturaMediaEntry> entries = client.MediaService.List(mediaEntryFilter, pager).Objects; KalturaMediaEntry entry = entries[0]; KalturaMetadataProfile metadataProfile = client.MetadataProfileService.Add(newMetadataProfile, xsd); Console.WriteLine("1. Successfully created the custom metadata profile " + metadataProfile.Name + "."); KalturaMetadata metadata = client.MetadataService.Add(metadataProfile.Id, metadataProfile.MetadataObjectType, entry.Id, xmlData); Console.WriteLine("2. Successfully added the custom data field for entryid: " + entry.Id); KalturaMetadataFilter metadataFilter = new KalturaMetadataFilter(); metadataFilter.ObjectIdEqual = entry.Id; metadataFilter.MetadataProfileIdEqual = metadataProfile.Id; IList <KalturaMetadata> metadataList = client.MetadataService.List(metadataFilter).Objects; if (metadataList.Count == 0) { throw new Exception("Failed to find metadata for entryid: " + entry.Id); } }
public int Count(KalturaMediaEntryFilter filter) { KalturaParams kparams = new KalturaParams(); if (filter != null) { kparams.Add("filter", filter.ToParams()); } _Client.QueueServiceCall("media", "count", kparams); if (this._Client.IsMultiRequest) { return(0); } XmlElement result = _Client.DoQueue(); return(int.Parse(result.InnerText)); }
public KalturaMediaListResponse List(KalturaMediaEntryFilter filter, KalturaFilterPager pager) { KalturaParams kparams = new KalturaParams(); if (filter != null) { kparams.Add("filter", filter.ToParams()); } if (pager != null) { kparams.Add("pager", pager.ToParams()); } _Client.QueueServiceCall("media", "list", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaMediaListResponse)KalturaObjectFactory.Create(result)); }
public KalturaMediaListResponse List(KalturaMediaEntryFilter filter) { return(this.List(filter, null)); }
static void SampleMetadataOperations() { // The metadata field we'll add/update string metaDataFieldName = "SubtitleFormat"; string fieldValue = "VobSub"; // The Schema file for the field // Currently, you must build the xsd yourself. There is no utility provided. string xsdFile = "MetadataSchema.xsd"; KalturaClient client = new KalturaClient(GetConfig()); // start new session (client session is enough when we do operations in a users scope) string ks = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.ADMIN, PARTNER_ID, 86400, ""); client.KS = ks; // Setup a pager and search to use KalturaFilterPager pager = new KalturaFilterPager(); KalturaMediaEntryFilter search = new KalturaMediaEntryFilter(); search.OrderBy = KalturaMediaEntryOrderBy.CREATED_AT_ASC; search.MediaTypeEqual = KalturaMediaType.VIDEO; // Video only pager.PageSize = 10; pager.PageIndex = 1; Console.WriteLine("List videos, get the first one..."); // Get 10 video entries, but we'll just use the first one returned IList <KalturaMediaEntry> entries = client.MediaService.List(search, pager).Objects; // Check if there are any custom fields defined in the KMC (Settings -> Custom Data) // for the first item returned by the previous listaction KalturaMetadataProfileFilter filter = new KalturaMetadataProfileFilter(); IList <KalturaMetadataProfile> metadata = client.MetadataProfileService.List(filter, pager).Objects; int profileId = 0; string name = ""; string id = ""; if (metadata.Count > 0) { profileId = metadata[0].Id; name = entries[0].Name; id = entries[0].Id; Console.WriteLine("1. There are custom fields for video: " + name + ", entryid: " + id); } else { Console.WriteLine("1. This publisher account doesn't have any custom metadata profiles enabled."); Console.WriteLine("Exiting the metadata test (enable customer metadata in Admin Console and create a profile in KMC first)."); return; } // Add a custom data entry in the KMC (Settings -> Custom Data) KalturaMetadataProfile profile = new KalturaMetadataProfile(); profile.MetadataObjectType = KalturaMetadataObjectType.ENTRY; profile.Name = metadata[0].Name; string viewsData = ""; StreamReader fileStream = File.OpenText(xsdFile); string xsd = fileStream.ReadToEnd(); KalturaMetadataProfile metadataResult = client.MetadataProfileService.Update(profileId, profile, xsd, viewsData); if (metadataResult.Xsd != null) { Console.WriteLine("2. Successfully created the custom data field " + metaDataFieldName + "."); } else { Console.WriteLine("2. Failed to create the custom data field."); } // Add the custom metadata value to the first video KalturaMetadataFilter filter2 = new KalturaMetadataFilter(); filter2.ObjectIdEqual = entries[0].Id; string xmlData = "<metadata><SubtitleFormat>" + fieldValue + "</SubtitleFormat></metadata>"; KalturaMetadata metadata2 = client.MetadataService.Add(profileId, profile.MetadataObjectType, entries[0].Id, xmlData); if (metadata2.Xml != null) { Console.WriteLine("3. Successfully added the custom data field for video: " + name + ", entryid: " + id); string xmlStr = metadata2.Xml; Console.WriteLine("XML used: " + xmlStr); } else { Console.WriteLine("3. Failed to add the custom data field."); } // Now lets change the value (update) of the custom field // Get the metadata for the video KalturaMetadataFilter filter3 = new KalturaMetadataFilter(); filter3.ObjectIdEqual = entries[0].Id; IList <KalturaMetadata> metadataList = client.MetadataService.List(filter3).Objects; if (metadataList[0].Xml != null) { Console.WriteLine("4. Current metadata for video: " + name + ", entryid: " + id); string xmlquoted = metadataList[0].Xml; Console.WriteLine("XML: " + xmlquoted); string xml = metadataList[0].Xml; // Make sure we find the old value in the current metadata int pos = xml.IndexOf("<" + metaDataFieldName + ">" + fieldValue + "</" + metaDataFieldName + ">"); if (pos == -1) { Console.WriteLine("4. Failed to find metadata STRING for video: " + name + ", entryid: " + id); } else { System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex("@<" + metaDataFieldName + ">(.+)</" + metaDataFieldName + ">@"); xml = pattern.Replace(xml, "<" + metaDataFieldName + ">Ogg Writ</" + metaDataFieldName + ">"); KalturaMetadata rc = client.MetadataService.Update(metadataList[0].Id, xml); Console.WriteLine("5. Updated metadata for video: " + name + ", entryid: " + id); xmlquoted = rc.Xml; Console.WriteLine("XML: " + xmlquoted); } } else { Console.WriteLine("4. Failed to find metadata for video: " + name + ", entryid: " + id); } }
// Show how to use response-profile private static void ResponseProfileExample() { KalturaClient client = new KalturaClient(GetConfig()); client.KS = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.ADMIN, PARTNER_ID, 86400, ""); int entriesTotalCount = 4; int metadataProfileTotalCount = 2; int metadataPageSize = 2; IList <KalturaMediaEntry> entries = createEntriesWithMetadataObjects(entriesTotalCount, metadataProfileTotalCount); KalturaMediaEntryFilter entriesFilter = new KalturaMediaEntryFilter(); entriesFilter.StatusIn = KalturaEntryStatus.PENDING.ToString() + "," + KalturaEntryStatus.NO_CONTENT.ToString(); entriesFilter.TagsLike = uniqueTag; KalturaFilterPager entriesPager = new KalturaFilterPager(); entriesPager.PageSize = entriesTotalCount; KalturaMetadataFilter metadataFilter = new KalturaMetadataFilter(); metadataFilter.MetadataObjectTypeEqual = KalturaMetadataObjectType.ENTRY; KalturaResponseProfileMapping metadataMapping = new KalturaResponseProfileMapping(); metadataMapping.FilterProperty = "objectIdEqual"; metadataMapping.ParentProperty = "id"; IList <KalturaResponseProfileMapping> metadataMappings = new List <KalturaResponseProfileMapping>(); metadataMappings.Add(metadataMapping); KalturaFilterPager metadataPager = new KalturaFilterPager(); metadataPager.PageSize = metadataPageSize; KalturaDetachedResponseProfile metadataResponseProfile = new KalturaDetachedResponseProfile(); metadataResponseProfile.Name = "metadata_" + uniqueTag; metadataResponseProfile.Type = KalturaResponseProfileType.INCLUDE_FIELDS; metadataResponseProfile.Fields = "id,objectId,createdAt, xml"; metadataResponseProfile.Filter = metadataFilter; metadataResponseProfile.Pager = metadataPager; metadataResponseProfile.Mappings = metadataMappings; IList <KalturaDetachedResponseProfile> metadataResponseProfiles = new List <KalturaDetachedResponseProfile>(); metadataResponseProfiles.Add(metadataResponseProfile); KalturaResponseProfile responseProfile = new KalturaResponseProfile(); responseProfile.Name = "test_" + uniqueTag; responseProfile.SystemName = "test_" + uniqueTag; responseProfile.Type = KalturaResponseProfileType.INCLUDE_FIELDS; responseProfile.Fields = "id,name,createdAt"; responseProfile.RelatedProfiles = metadataResponseProfiles; responseProfile = client.ResponseProfileService.Add(responseProfile); KalturaResponseProfileHolder nestedResponseProfile = new KalturaResponseProfileHolder(); nestedResponseProfile.Id = responseProfile.Id; client.ResponseProfile = nestedResponseProfile; IList <KalturaBaseEntry> list = client.BaseEntryService.List(entriesFilter, entriesPager).Objects; if (entriesTotalCount != list.Count) { throw new Exception("entriesTotalCount[" + entriesTotalCount + "] != list.Count[" + list.Count + "]"); } foreach (KalturaBaseEntry entry in list) { if (entry.RelatedObjects == null) { throw new Exception("Related objects are missing"); } if (!entry.RelatedObjects.ContainsKey(metadataResponseProfile.Name)) { throw new Exception("Related object [" + metadataResponseProfile.Name + "] is missing"); } if (!(entry.RelatedObjects[metadataResponseProfile.Name] is KalturaMetadataListResponse)) { throw new Exception("Related object [" + metadataResponseProfile.Name + "] has wrong type [" + entry.RelatedObjects[metadataResponseProfile.Name].GetType() + "]"); } KalturaMetadataListResponse metadataListResponse = (KalturaMetadataListResponse)entry.RelatedObjects[metadataResponseProfile.Name]; if (metadataListResponse.Objects.Count != metadataProfileTotalCount) { throw new Exception("Related object [" + metadataResponseProfile.Name + "] has wrong number of objects"); } foreach (KalturaMetadata metadata in metadataListResponse.Objects) { if (metadata.ObjectId != entry.Id) { throw new Exception("Related object [" + metadataResponseProfile.Name + "] metadata [" + metadata.Id + "] related to wrong object [" + metadata.ObjectId + "]"); } } } }