using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.LiveTv; using System; using System.Globalization; namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV { internal class RecordingHelper { public static DateTime GetStartTime(TimerInfo timer) { return timer.StartDate.AddSeconds(-timer.PrePaddingSeconds); } public static TimerInfo CreateTimer(ProgramInfo parent, SeriesTimerInfo series) { var timer = new TimerInfo(); timer.ChannelId = parent.ChannelId; timer.Id = (series.Id + parent.Id).GetMD5().ToString("N"); timer.StartDate = parent.StartDate; timer.EndDate = parent.EndDate; timer.ProgramId = parent.Id; timer.PrePaddingSeconds = series.PrePaddingSeconds; timer.PostPaddingSeconds = series.PostPaddingSeconds; timer.IsPostPaddingRequired = series.IsPostPaddingRequired; timer.IsPrePaddingRequired = series.IsPrePaddingRequired; timer.Priority = series.Priority; timer.Name = parent.Name; timer.Overview = parent.Overview; timer.SeriesTimerId = series.Id; return timer; } public static string GetRecordingName(TimerInfo timer, ProgramInfo info) { if (info == null) { return timer.ProgramId; } var name = info.Name; if (info.IsSeries) { var addHyphen = true; if (info.SeasonNumber.HasValue && info.EpisodeNumber.HasValue) { name += string.Format(" S{0}E{1}", info.SeasonNumber.Value.ToString("00", CultureInfo.InvariantCulture), info.EpisodeNumber.Value.ToString("00", CultureInfo.InvariantCulture)); addHyphen = false; } else if (info.OriginalAirDate.HasValue) { name += " " + info.OriginalAirDate.Value.ToString("yyyy-MM-dd"); } if (!string.IsNullOrWhiteSpace(info.EpisodeTitle)) { if (addHyphen) { name += " -"; } name += " " + info.EpisodeTitle; } } else if (info.IsMovie && info.ProductionYear != null) { name += " (" + info.ProductionYear + ")"; } else { name += " " + info.StartDate.ToString("yyyy-MM-dd") + " " + info.Id; } return name; } } }