RecordingHelper.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Globalization;
  4. using MediaBrowser.Controller.LiveTv;
  5. using System.Text;
  6. namespace Emby.Server.Implementations.LiveTv.EmbyTV
  7. {
  8. internal static class RecordingHelper
  9. {
  10. public static DateTime GetStartTime(TimerInfo timer)
  11. {
  12. return timer.StartDate.AddSeconds(-timer.PrePaddingSeconds);
  13. }
  14. public static string GetRecordingName(TimerInfo info)
  15. {
  16. var name = info.Name;
  17. if (info.IsProgramSeries)
  18. {
  19. var addHyphen = true;
  20. if (info.SeasonNumber.HasValue && info.EpisodeNumber.HasValue)
  21. {
  22. name += string.Format(
  23. CultureInfo.InvariantCulture,
  24. " S{0}E{1}",
  25. info.SeasonNumber.Value.ToString("00", CultureInfo.InvariantCulture),
  26. info.EpisodeNumber.Value.ToString("00", CultureInfo.InvariantCulture));
  27. addHyphen = false;
  28. }
  29. else if (info.OriginalAirDate.HasValue)
  30. {
  31. if (info.OriginalAirDate.Value.Date.Equals(info.StartDate.Date))
  32. {
  33. name += " " + GetDateString(info.StartDate);
  34. }
  35. else
  36. {
  37. name += " " + info.OriginalAirDate.Value.ToLocalTime().ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
  38. }
  39. }
  40. else
  41. {
  42. name += " " + GetDateString(info.StartDate);
  43. }
  44. if (!string.IsNullOrWhiteSpace(info.EpisodeTitle))
  45. {
  46. var tmpName = name;
  47. if (addHyphen)
  48. {
  49. tmpName += " -";
  50. }
  51. tmpName += " " + info.EpisodeTitle;
  52. // Since the filename will be used with file ext. (.mp4, .ts, etc)
  53. if (Encoding.UTF8.GetByteCount(tmpName) < 250)
  54. {
  55. name = tmpName;
  56. }
  57. }
  58. }
  59. else if (info.IsMovie && info.ProductionYear != null)
  60. {
  61. name += " (" + info.ProductionYear + ")";
  62. }
  63. else
  64. {
  65. name += " " + GetDateString(info.StartDate);
  66. }
  67. return name;
  68. }
  69. private static string GetDateString(DateTime date)
  70. {
  71. return date.ToLocalTime().ToString("yyyy_MM_dd_HH_mm_ss", CultureInfo.InvariantCulture);
  72. }
  73. }
  74. }