Created
March 3, 2017 12:51
-
-
Save pmedcraft/ce3cf744a00e05ccdb8275d244d668a2 to your computer and use it in GitHub Desktop.
C# methods for uploading a multimedia asset to SDL Media Manager
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private static Dictionary<string, object> UploadToMediaManager(IMediaManager2011 mediaManagerClient, | |
Dictionary<string, string> downloadInfo, long mediaManagerFolderId, long assetTypeId, | |
long outletId, long[] tags) | |
{ | |
// Upload to Media Manager | |
UploadInfoData uploadInfoData = new UploadInfoData | |
{ | |
Author = "Migration Upload Tool", | |
MakeAvailableForWebPublishing = true, | |
ProgramCreation = ProgramCreationOptions.OneProgramPerItem, | |
DistributionCreation = DistributionCreationOptions.OneDistribution | |
}; | |
string uploadUrl = mediaManagerClient.GetUploadUrl(mediaManagerFolderId, assetTypeId, tags, downloadInfo["title"], uploadInfoData); | |
using (WebClient client = new WebClient()) | |
{ | |
try | |
{ | |
client.UploadFile(uploadUrl, downloadInfo["file"]); | |
} | |
catch(Exception exception) | |
{ | |
log.Error(exception); | |
return null; | |
} | |
WebHeaderCollection webResponse = client.ResponseHeaders; | |
long assetId = 0; | |
long.TryParse(webResponse.GetValues("AssetId").First(), out assetId); | |
long programId = 0; | |
long.TryParse(webResponse.GetValues("ProgramId").First(), out programId); | |
long distributionId = 0; | |
long.TryParse(webResponse.GetValues("DistributionId").First(), out distributionId); | |
Dictionary<string, long> responseIdsUpload = new Dictionary<string, long> { { "assetId", assetId }, { "programId", programId }, { "distributionId", distributionId } }; | |
// Update the asset's properties | |
AssetData assetData = (AssetData)mediaManagerClient.GetItem(ItemTypes.Asset, responseIdsUpload["assetId"]); | |
assetData.Name = downloadInfo["title"]; | |
assetData.Description = !String.IsNullOrEmpty(downloadInfo["altText"]) ? downloadInfo["altText"] : downloadInfo["title"]; | |
mediaManagerClient.UpdateItem(assetData); | |
// Update the program's properties | |
ProgramData programData = (ProgramData)mediaManagerClient.GetItem(ItemTypes.Program, responseIdsUpload["programId"]); | |
programData.Name = downloadInfo["title"]; | |
programData.Description = !String.IsNullOrEmpty(downloadInfo["altText"]) ? downloadInfo["altText"] : downloadInfo["title"]; | |
mediaManagerClient.UpdateItem(programData); | |
return CreateDistribution(mediaManagerClient, responseIdsUpload, downloadInfo["title"], mediaManagerFolderId, outletId); | |
} | |
} | |
private static Dictionary<string, object> CreateDistribution(IMediaManager2011 mediaManagerClient, | |
Dictionary<string, long> responseIdsUpload, string assetDescription, | |
long mediaManagerFolderId, long outletId) | |
{ | |
// Create the Distribution | |
long programId = responseIdsUpload["programId"]; | |
var newDistribution = new DistributionData | |
{ | |
Name = assetDescription, | |
Description = assetDescription, | |
FolderId = mediaManagerFolderId, | |
IsLive = true, | |
OutletId = outletId, | |
ProgramIds = new[] { programId } | |
}; | |
DistributionData distributionData = null; | |
try | |
{ | |
distributionData = (DistributionData)mediaManagerClient.AddItem(newDistribution); | |
} | |
catch(Exception exception) | |
{ | |
log.Error("Error creating the distribution in Media Manager"); | |
log.Error(exception); | |
return null; | |
} | |
try | |
{ | |
mediaManagerClient.PutLiveAsync(ItemTypes.Distribution, new long[] { distributionData.Id }); | |
} | |
catch(Exception exception) | |
{ | |
log.Error("Failed to put live distribution: " + distributionData.GlobalId); | |
log.Error(exception); | |
} | |
Dictionary<string, object> uploadInfo = new Dictionary<string, object>(); | |
uploadInfo.Add("distributionId", distributionData.Id); | |
uploadInfo.Add("description", distributionData.Description); | |
uploadInfo.Add("globalId", distributionData.GlobalId); | |
return uploadInfo; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment