RecordingHelper.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Globalization;
  3. using MediaBrowser.Controller.LiveTv;
  4. namespace Emby.Server.Implementations.LiveTv.EmbyTV
  5. {
  6. internal class RecordingHelper
  7. {
  8. public static DateTime GetStartTime(TimerInfo timer)
  9. {
  10. return timer.StartDate.AddSeconds(-timer.PrePaddingSeconds);
  11. }
  12. public static string GetRecordingName(TimerInfo info)
  13. {
  14. var name = info.Name;
  15. if (info.IsProgramSeries)
  16. {
  17. var addHyphen = true;
  18. if (info.SeasonNumber.HasValue && info.EpisodeNumber.HasValue)
  19. {
  20. name += string.Format(" S{0}E{1}", info.SeasonNumber.Value.ToString("00", CultureInfo.InvariantCulture), info.EpisodeNumber.Value.ToString("00", CultureInfo.InvariantCulture));
  21. addHyphen = false;
  22. }
  23. else if (info.OriginalAirDate.HasValue)
  24. {
  25. if (info.OriginalAirDate.Value.Date.Equals(info.StartDate.Date))
  26. {
  27. name += " " + GetDateString(info.StartDate);
  28. }
  29. else
  30. {
  31. name += " " + info.OriginalAirDate.Value.ToLocalTime().ToString("yyyy-MM-dd");
  32. }
  33. }
  34. else
  35. {
  36. name += " " + GetDateString(info.StartDate);
  37. }
  38. if (!string.IsNullOrWhiteSpace(info.EpisodeTitle))
  39. {
  40. if (addHyphen)
  41. {
  42. name += " -";
  43. }
  44. name += " " + info.EpisodeTitle;
  45. }
  46. }
  47. else if (info.IsMovie && info.ProductionYear != null)
  48. {
  49. name += " (" + info.ProductionYear + ")";
  50. }
  51. else
  52. {
  53. name += " " + GetDateString(info.StartDate);
  54. }
  55. return name;
  56. }
  57. private static string GetDateString(DateTime date)
  58. {
  59. date = date.ToLocalTime();
  60. return string.Format("{0}_{1}_{2}_{3}_{4}_{5}",
  61. date.Year.ToString("0000", CultureInfo.InvariantCulture),
  62. date.Month.ToString("00", CultureInfo.InvariantCulture),
  63. date.Day.ToString("00", CultureInfo.InvariantCulture),
  64. date.Hour.ToString("00", CultureInfo.InvariantCulture),
  65. date.Minute.ToString("00", CultureInfo.InvariantCulture),
  66. date.Second.ToString("00", CultureInfo.InvariantCulture)
  67. );
  68. }
  69. }
  70. }