Skip to content
This repository has been archived by the owner on Feb 15, 2024. It is now read-only.

Commit

Permalink
Update Program.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
Juliako authored Sep 18, 2019
1 parent 04fda4c commit e5d3183
Showing 1 changed file with 48 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -429,42 +429,69 @@ private static ContentKeyPolicy EnsureContentKeyPolicyExists(IAzureMediaServices

return policy;
}



private async static Task DownloadResults(IAzureMediaServicesClient client, string resourceGroupName, string accountName, string assetName, string resultsFolder)
/// <summary>
/// Downloads the results from the specified output asset, so you can see what you got.
/// </summary>
/// <param name="client">The Media Services client.</param>
/// <param name="resourceGroupName">The name of the resource group within the Azure subscription.</param>
/// <param name="accountName"> The Media Services account name.</param>
/// <param name="assetName">The output asset.</param>
/// <param name="outputFolderName">The name of the folder into which to download the results.</param>
private static async Task DownloadResults(
IAzureMediaServicesClient client,
string resourceGroup,
string accountName,
string assetName,
string outputFolderName)
{
ListContainerSasInput parameters = new ListContainerSasInput();
AssetContainerSas assetContainerSas = client.Assets.ListContainerSas(
resourceGroupName,
accountName,
assetName,
permissions: AssetContainerPermission.Read,
expiryTime: DateTime.UtcNow.AddHours(1).ToUniversalTime()
);
const int ListBlobsSegmentMaxResult = 5;

if (!Directory.Exists(outputFolderName))
{
Directory.CreateDirectory(outputFolderName);
}

AssetContainerSas assetContainerSas = await client.Assets.ListContainerSasAsync(
resourceGroup,
accountName,
assetName,
permissions: AssetContainerPermission.Read,
expiryTime: DateTime.UtcNow.AddHours(1).ToUniversalTime());

Uri containerSasUrl = new Uri(assetContainerSas.AssetContainerSasUrls.FirstOrDefault());
CloudBlobContainer container = new CloudBlobContainer(containerSasUrl);

string directory = Path.Combine(resultsFolder, assetName);
string directory = Path.Combine(outputFolderName, assetName);
Directory.CreateDirectory(directory);

Console.WriteLine("Downloading results to {0}.", directory);

var blobs = container.ListBlobsSegmentedAsync(null,true, BlobListingDetails.None,200,null,null,null).Result;

foreach (var blobItem in blobs.Results)
Console.WriteLine($"Downloading output results to '{directory}'...");

BlobContinuationToken continuationToken = null;
IList<Task> downloadTasks = new List<Task>();

do
{
if (blobItem is CloudBlockBlob)
BlobResultSegment segment = await container.ListBlobsSegmentedAsync(null, true, BlobListingDetails.None, ListBlobsSegmentMaxResult, continuationToken, null, null);

foreach (IListBlobItem blobItem in segment.Results)
{
CloudBlockBlob blob = blobItem as CloudBlockBlob;
string filename = Path.Combine(directory, blob.Name);
if (blobItem is CloudBlockBlob blob)
{
string path = Path.Combine(directory, blob.Name);

await blob.DownloadToFileAsync(filename, FileMode.Create);
downloadTasks.Add(blob.DownloadToFileAsync(path, FileMode.Create));
}
}

continuationToken = segment.ContinuationToken;
}
while (continuationToken != null);

await Task.WhenAll(downloadTasks);

Console.WriteLine("Download complete.");

}

}
Expand Down

0 comments on commit e5d3183

Please sign in to comment.