From 0951819f00d99e206cfc33dbde0eb2132cbbeaf1 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 13 Aug 2017 16:15:07 -0400 Subject: [PATCH] fixes #2798, fixes #2799 --- Emby.Server.Implementations/Dto/DtoService.cs | 3 ++- MediaBrowser.Api/ItemUpdateService.cs | 6 +++++ MediaBrowser.Controller/Entities/TV/Series.cs | 4 ++++ MediaBrowser.Controller/Library/TVUtils.cs | 8 +++---- .../MediaEncoding/EncodingHelper.cs | 4 ++++ MediaBrowser.Model/Dto/BaseItemDto.cs | 6 +++++ .../TV/SeriesMetadataService.cs | 10 +++++++++ .../TV/TheTVDB/TvdbSeriesProvider.cs | 22 +++++++++++++++++++ .../Parsers/SeriesNfoParser.cs | 16 ++++++++++++++ 9 files changed, 74 insertions(+), 5 deletions(-) diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs index 5ad3a7ef3e..e1d0a1858f 100644 --- a/Emby.Server.Implementations/Dto/DtoService.cs +++ b/Emby.Server.Implementations/Dto/DtoService.cs @@ -1331,7 +1331,8 @@ namespace Emby.Server.Implementations.Dto var series = item as Series; if (series != null) { - dto.AirDays = new DayOfWeek[] {}; + dto.AirDays = series.AirDays; + dto.AirTime = series.AirTime; dto.Status = series.Status.HasValue ? series.Status.Value.ToString() : null; } diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 13b5b64d97..313f7aab50 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -372,6 +372,12 @@ namespace MediaBrowser.Api if (series != null) { series.Status = GetSeriesStatus(request); + + if (request.AirDays != null) + { + series.AirDays = request.AirDays; + series.AirTime = request.AirTime; + } } } diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 854c1d4da2..3350a65799 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -25,8 +25,12 @@ namespace MediaBrowser.Controller.Entities.TV RemoteTrailers = EmptyMediaUrlArray; LocalTrailerIds = EmptyGuidArray; RemoteTrailerIds = EmptyGuidArray; + AirDays = new DayOfWeek[] { }; } + public DayOfWeek[] AirDays { get; set; } + public string AirTime { get; set; } + [IgnoreDataMember] public override bool SupportsAddingToPlaylist { diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs index 29421ebafc..7c82ec2938 100644 --- a/MediaBrowser.Controller/Library/TVUtils.cs +++ b/MediaBrowser.Controller/Library/TVUtils.cs @@ -22,13 +22,13 @@ namespace MediaBrowser.Controller.Library /// /// The day. /// List{DayOfWeek}. - public static List GetAirDays(string day) + public static DayOfWeek[] GetAirDays(string day) { if (!string.IsNullOrWhiteSpace(day)) { if (day.Equals("Daily", StringComparison.OrdinalIgnoreCase)) { - return new List + return new DayOfWeek[] { DayOfWeek.Sunday, DayOfWeek.Monday, @@ -44,13 +44,13 @@ namespace MediaBrowser.Controller.Library if (Enum.TryParse(day, true, out value)) { - return new List + return new DayOfWeek[] { value }; } - return new List(); + return new DayOfWeek[]{}; } return null; } diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 84cae884d3..823c893ea8 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -211,6 +211,10 @@ namespace MediaBrowser.Controller.MediaEncoding { return null; } + if (string.Equals(container, "rtp", StringComparison.OrdinalIgnoreCase)) + { + return null; + } // Seeing reported failures here, not sure yet if this is related to specfying input format if (string.Equals(container, "m4v", StringComparison.OrdinalIgnoreCase)) diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index 324570901d..e0e7e55aae 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -404,6 +404,12 @@ namespace MediaBrowser.Model.Dto /// The status. public string Status { get; set; } + /// + /// Gets or sets the air time. + /// + /// The air time. + public string AirTime { get; set; } + /// /// Gets or sets the air days. /// diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index 5ca36b4481..3977ba9d9a 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -64,10 +64,20 @@ namespace MediaBrowser.Providers.TV var sourceItem = source.Item; var targetItem = target.Item; + if (replaceData || string.IsNullOrEmpty(targetItem.AirTime)) + { + targetItem.AirTime = sourceItem.AirTime; + } + if (replaceData || !targetItem.Status.HasValue) { targetItem.Status = sourceItem.Status; } + + if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Length == 0) + { + targetItem.AirDays = sourceItem.AirDays; + } } } } diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs index 4a062f97ee..d447aff99c 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs @@ -1090,6 +1090,28 @@ namespace MediaBrowser.Providers.TV break; } + case "Airs_DayOfWeek": + { + var val = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(val)) + { + item.AirDays = TVUtils.GetAirDays(val); + } + break; + } + + case "Airs_Time": + { + var val = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(val)) + { + item.AirTime = val; + } + break; + } + case "ContentRating": { var val = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 795540e261..570a7fed80 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -61,6 +61,22 @@ namespace MediaBrowser.XbmcMetadata.Parsers } break; } + case "airs_dayofweek": + { + item.AirDays = TVUtils.GetAirDays(reader.ReadElementContentAsString()); + break; + } + + case "airs_time": + { + var val = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(val)) + { + item.AirTime = val; + } + break; + } case "status": {