/// <summary> /// The content in the 'duration' tag is frustratingly inconsistent. This handles the various formats I've seen and /// spits out a consistent output in hh:mm:ss format. /// </summary> /// <param name="durationStyle">Duration style</param> /// <param name="durationStr">Input string</param> /// <returns>Formatted output in hh:mm:ss</returns> private string FormatDuration(DurationStyle durationStyle, string durationStr) { switch (durationStyle) { case DurationStyle.hhmmss: break; case DurationStyle.hhmmssMixed: var splits = durationStr.Split(':'); var hhInt1 = 0; var mmInt1 = 0; var ssInt1 = 0; if (splits.Length == 2) { var mm = splits[0]; var ss = splits[1]; var mmIntSuccess = int.TryParse(mm, out mmInt1); var ssIntSuccess = int.TryParse(ss, out ssInt1); if (!mmIntSuccess || !ssIntSuccess) { return(""); } } else if (splits.Length == 3) { var hh = splits[0]; var mm = splits[1]; var ss = splits[2]; var hhIntSuccess = int.TryParse(hh, out hhInt1); var mmIntSuccess = int.TryParse(mm, out mmInt1); var ssIntSuccess = int.TryParse(ss, out ssInt1); if (!hhIntSuccess || !mmIntSuccess || !ssIntSuccess) { return(""); } } else { return(""); } var timetotal = hhInt1 * 60 * 60 + mmInt1 * 60 + ssInt1; var timess = TimeSpan.FromSeconds(timetotal); var strr = timess.ToString(@"hh\:mm\:ss"); return(strr); break; case DurationStyle.secondsDuration: { int durInt; var durSuccess = int.TryParse(durationStr, out durInt); if (durSuccess) { var times = TimeSpan.FromSeconds(durInt); var str = times.ToString(@"hh\:mm\:ss"); durationStr = str; } else { durationStr = ""; } break; } case DurationStyle.mmss: { var split = durationStr.Split(':'); if (split.Length != 2) { return(""); } var mm = split[0]; var ss = split[1]; var mmIntSuccess = int.TryParse(mm, out var mmInt); var ssIntSuccess = int.TryParse(ss, out var ssInt); if (!mmIntSuccess || !ssIntSuccess) { return(""); } var time = mmInt * 60 + ssInt; var times = TimeSpan.FromSeconds(time); var str = times.ToString(@"hh\:mm\:ss"); return(str); } default: throw new ArgumentOutOfRangeException(nameof(durationStyle), durationStyle, null); } return(durationStr); }
public PodcastStatInfo(string url, string podcastName, DurationStyle durationStyle) { PodcastName = podcastName; Url = url; DurationStyle = durationStyle; }