public async Task ProcessFile(PodcastMetadata podcastMetadata)
        {
            await SaveToDisk().ConfigureAwait(false);

            var tagLibFile = TagLib.File.Create(TempLocalFilePath);

            Duration = tagLibFile.Properties.Duration;
            await ReduceFileBitRate().ConfigureAwait(false);

            CreateUploadBlobReference();
            AnnotateFileWithMetadata(podcastMetadata);
            await UploadFileToCloud().ConfigureAwait(false);
        }
        private void AnnotateFileWithMetadata(PodcastMetadata podcastMetadata)
        {
            var masechtaMetadata = StaticData.Gemaras.First(masechta => masechta.Title.Equals(AudioFileName.Masechta, StringComparison.OrdinalIgnoreCase));
            var tagLibFile       = TagLib.File.Create(TempLocalFilePath);

            tagLibFile.Tag.Album        = $"{podcastMetadata.Title} - {AudioFileName.Masechta}";
            tagLibFile.Tag.AlbumArtists = new[] { podcastMetadata.Author };
            tagLibFile.Tag.Track        = uint.Parse(AudioFileName.Daf) - 1;
            tagLibFile.Tag.TrackCount   = Convert.ToUInt32(masechtaMetadata.DafimInMasechta);
            tagLibFile.Tag.Title        = $"Masechta {AudioFileName.Masechta}, Daf {AudioFileName.Daf}";
            tagLibFile.Tag.Year         = Convert.ToUInt32(AudioFileName.RecordedOn.Year);
            tagLibFile.Tag.Disc         = Convert.ToUInt32(Array.FindIndex(StaticData.Gemaras, m => m == masechtaMetadata));
            tagLibFile.Tag.DiscCount    = Convert.ToUInt32(StaticData.Gemaras.Length);
            tagLibFile.Tag.Genres       = new[] { "Daf Yomi" };
            tagLibFile.Tag.Comment      = AudioFileName.Subtitle;
            tagLibFile.Tag.Copyright    = $"{AudioFileName.RecordedOn.Year} © {podcastMetadata.Author}";

            tagLibFile.Save();
        }