public async Task Collect(int episodeId) { _logger.LogInformation($"Collecting SR episode {episodeId}"); var storedEpisode = await _storage.GetEpisode(episodeId); if (storedEpisode != null) { _logger.LogInformation($"SR episode {episodeId} was already collected"); return; } var episode = await GetSrEpisode(episodeId); var fileUrl = GetFileUrl(episode); if (fileUrl == null) { throw new Exception($"SR episode {episodeId} does not have any available broadcast file, can't collect"); } storedEpisode = await GetStoredEpisodeModel(fileUrl, episode); var audioStream = await GetOnlyAudioStream(storedEpisode.OriginalAudioUrl); if (audioStream == null) { var transferAudioBlockBlob = await _storageTransfer.TransferBlockBlobAndOverwrite(_cloudBlobContainerName, storedEpisode.AudioBlobIdentifier, storedEpisode.OriginalAudioUrl, GetContentType(storedEpisode.AudioBlobIdentifier)); storedEpisode.AudioUrl = transferAudioBlockBlob.ToString(); } else { var uploadedAudioBlockBlob = await _storageTransfer.UploadBlockBlobAndOverwrite(_cloudBlobContainerName, storedEpisode.AudioBlobIdentifier, audioStream, GetContentType(storedEpisode.AudioBlobIdentifier)); storedEpisode.AudioUrl = uploadedAudioBlockBlob.ToString(); } await _storageTransfer.TransferBlockBlobIfNotExists(_cloudBlobContainerName, storedEpisode.ImageBlobIdentifier, storedEpisode.Episode.ImageUrlTemplate, GetContentType(storedEpisode.ImageBlobIdentifier)); await _storage.StoreEpisode(episode.Id, storedEpisode); _logger.LogInformation($"Collected SR episode {episode.Id}"); }
private async Task <(string blobIdentifier, Uri blobUri)?> TransferResultForChannel(SrStoredEpisode storedEpisode, Azure.SpeechBatchClient.Transcription transcription, string channel) { if (!transcription.ResultsUrls.ContainsKey($"channel_{channel}")) { return(null); } var targetBlobPrefix = storedEpisode.AudioBlobIdentifier + "__Transcription_"; var targetBlobIdentifier = $"{targetBlobPrefix}{channel}.json"; var resultsUri = transcription.ResultsUrls[$"channel_{channel}"]; var targetBlobUrl = await _storageTransfer.TransferBlockBlobIfNotExists( _transcriptionsContainerName, targetBlobIdentifier, resultsUri ); return(targetBlobIdentifier, targetBlobUrl); }