From 70aebff444b30e98365d5d4ff477e88e77430a5c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 15 Nov 2016 12:55:26 -0500 Subject: [PATCH 1/2] add movie prefix feature --- MediaBrowser.Controller/Entities/BaseItem.cs | 7 +++- .../LiveTv/LiveTvProgram.cs | 37 +++++++++++++++++++ MediaBrowser.Model/LiveTv/LiveTvOptions.cs | 1 + 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 10cac79922..cd61d2cce4 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -2134,7 +2134,7 @@ namespace MediaBrowser.Controller.Entities { MetadataCountryCode = GetPreferredMetadataCountryCode(), MetadataLanguage = GetPreferredMetadataLanguage(), - Name = Name, + Name = GetNameForMetadataLookup(), ProviderIds = ProviderIds, IndexNumber = IndexNumber, ParentIndexNumber = ParentIndexNumber, @@ -2143,6 +2143,11 @@ namespace MediaBrowser.Controller.Entities }; } + protected virtual string GetNameForMetadataLookup() + { + return Name; + } + /// /// This is called before any metadata refresh and returns true or false indicating if changes were made /// diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs index fd9507afa0..08fcc00353 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs @@ -4,9 +4,12 @@ using MediaBrowser.Model.Configuration; using MediaBrowser.Model.LiveTv; using System; using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Common.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.LiveTv { @@ -236,6 +239,40 @@ namespace MediaBrowser.Controller.LiveTv } } + private LiveTvOptions GetConfiguration() + { + return ConfigurationManager.GetConfiguration("livetv"); + } + + private ListingsProviderInfo GetListingsProviderInfo() + { + if (string.Equals(ServiceName, "Emby", StringComparison.OrdinalIgnoreCase)) + { + var config = GetConfiguration(); + + return config.ListingProviders.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i.MoviePrefix)); + } + + return null; + } + + protected override string GetNameForMetadataLookup() + { + var name = base.GetNameForMetadataLookup(); + + var listings = GetListingsProviderInfo(); + + if (listings != null) + { + if (!string.IsNullOrWhiteSpace(listings.MoviePrefix)) + { + name = name.Replace(listings.MoviePrefix, string.Empty, StringComparison.OrdinalIgnoreCase).Trim(); + } + } + + return name; + } + public override List GetRelatedUrls() { var list = base.GetRelatedUrls(); diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index fbd61ea97b..cc5148ba95 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -83,6 +83,7 @@ namespace MediaBrowser.Model.LiveTv public string[] KidsCategories { get; set; } public string[] MovieCategories { get; set; } public NameValuePair[] ChannelMappings { get; set; } + public string MoviePrefix { get; set; } public ListingsProviderInfo() { From c0491fb56348c63d78b1f694f574e963f9526a9a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 15 Nov 2016 14:42:43 -0500 Subject: [PATCH 2/2] rework genre views --- Emby.Dlna/Main/DlnaEntryPoint.cs | 2 +- .../TV/SeriesPostScanTask.cs | 8 +- MediaBrowser.Providers/Omdb/OmdbProvider.cs | 78 +++++++++---------- .../TV/MissingEpisodeProvider.cs | 2 +- .../Native/RegisterServer.bat | 3 + 5 files changed, 46 insertions(+), 47 deletions(-) diff --git a/Emby.Dlna/Main/DlnaEntryPoint.cs b/Emby.Dlna/Main/DlnaEntryPoint.cs index 49bb9a74f2..170b4cee0e 100644 --- a/Emby.Dlna/Main/DlnaEntryPoint.cs +++ b/Emby.Dlna/Main/DlnaEntryPoint.cs @@ -285,7 +285,7 @@ namespace Emby.Dlna.Main { "urn:schemas-upnp-org:service:ContentDirectory:1", "urn:schemas-upnp-org:service:ConnectionManager:1", - "urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1" + //"urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1" }; foreach (var subDevice in embeddedDevices) diff --git a/Emby.Server.Implementations/TV/SeriesPostScanTask.cs b/Emby.Server.Implementations/TV/SeriesPostScanTask.cs index 2e04c883fa..3d93561f17 100644 --- a/Emby.Server.Implementations/TV/SeriesPostScanTask.cs +++ b/Emby.Server.Implementations/TV/SeriesPostScanTask.cs @@ -80,7 +80,7 @@ namespace Emby.Server.Implementations.TV var group = new SeriesGroup(); FindAllLinked(series, visited, links, group); - group.Key = group.Select(s => s.GetProviderId(MetadataProviders.Tvdb)).FirstOrDefault(id => !string.IsNullOrEmpty(id)); + group.Key = group.Select(s => s.PresentationUniqueKey).FirstOrDefault(id => !string.IsNullOrEmpty(id)); yield return group; } @@ -105,11 +105,7 @@ namespace Emby.Server.Implementations.TV private static bool ShareProviderId(Series a, Series b) { - return a.ProviderIds.Any(id => - { - string value; - return b.ProviderIds.TryGetValue(id.Key, out value) && id.Value == value; - }); + return string.Equals(a.PresentationUniqueKey, b.PresentationUniqueKey, StringComparison.Ordinal); } public int Order diff --git a/MediaBrowser.Providers/Omdb/OmdbProvider.cs b/MediaBrowser.Providers/Omdb/OmdbProvider.cs index d838de1395..721e31b07e 100644 --- a/MediaBrowser.Providers/Omdb/OmdbProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbProvider.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.Omdb } public async Task Fetch(MetadataResult itemResult, string imdbId, string language, string country, CancellationToken cancellationToken) - where T :BaseItem + where T : BaseItem { if (string.IsNullOrWhiteSpace(imdbId)) { @@ -48,25 +48,25 @@ namespace MediaBrowser.Providers.Omdb var result = await GetRootObject(imdbId, cancellationToken); - // Only take the name and rating if the user's language is set to english, since Omdb has no localization - if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase)) + // Only take the name and rating if the user's language is set to english, since Omdb has no localization + if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase)) + { + item.Name = result.Title; + + if (string.Equals(country, "us", StringComparison.OrdinalIgnoreCase)) { - item.Name = result.Title; - - if (string.Equals(country, "us", StringComparison.OrdinalIgnoreCase)) - { - item.OfficialRating = result.Rated; - } + item.OfficialRating = result.Rated; } + } - int year; + int year; - if (!string.IsNullOrEmpty(result.Year) && result.Year.Length >= 4 - && int.TryParse(result.Year.Substring(0, 4), NumberStyles.Number, _usCulture, out year) - && year >= 0) - { - item.ProductionYear = year; - } + if (!string.IsNullOrEmpty(result.Year) && result.Year.Length >= 4 + && int.TryParse(result.Year.Substring(0, 4), NumberStyles.Number, _usCulture, out year) + && year >= 0) + { + item.ProductionYear = year; + } // Seeing some bogus RT data on omdb for series, so filter it out here // RT doesn't even have tv series @@ -87,33 +87,33 @@ namespace MediaBrowser.Providers.Omdb int voteCount; - if (!string.IsNullOrEmpty(result.imdbVotes) - && int.TryParse(result.imdbVotes, NumberStyles.Number, _usCulture, out voteCount) - && voteCount >= 0) - { - item.VoteCount = voteCount; - } + if (!string.IsNullOrEmpty(result.imdbVotes) + && int.TryParse(result.imdbVotes, NumberStyles.Number, _usCulture, out voteCount) + && voteCount >= 0) + { + item.VoteCount = voteCount; + } - float imdbRating; + float imdbRating; - if (!string.IsNullOrEmpty(result.imdbRating) - && float.TryParse(result.imdbRating, NumberStyles.Any, _usCulture, out imdbRating) - && imdbRating >= 0) - { - item.CommunityRating = imdbRating; - } + if (!string.IsNullOrEmpty(result.imdbRating) + && float.TryParse(result.imdbRating, NumberStyles.Any, _usCulture, out imdbRating) + && imdbRating >= 0) + { + item.CommunityRating = imdbRating; + } - if (!string.IsNullOrEmpty(result.Website)) - { - item.HomePageUrl = result.Website; - } + if (!string.IsNullOrEmpty(result.Website)) + { + item.HomePageUrl = result.Website; + } - if (!string.IsNullOrWhiteSpace(result.imdbID)) - { - item.SetProviderId(MetadataProviders.Imdb, result.imdbID); - } + if (!string.IsNullOrWhiteSpace(result.imdbID)) + { + item.SetProviderId(MetadataProviders.Imdb, result.imdbID); + } - ParseAdditionalMetadata(itemResult, result); + ParseAdditionalMetadata(itemResult, result); } public async Task FetchEpisodeData(MetadataResult itemResult, int episodeNumber, int seasonNumber, string imdbId, string language, string country, CancellationToken cancellationToken) @@ -135,7 +135,7 @@ namespace MediaBrowser.Providers.Omdb RootObject result = null; - foreach (var episode in seasonResult.Episodes) + foreach (var episode in (seasonResult.Episodes ?? new RootObject[] { })) { if (episode.Episode == episodeNumber) { diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index 3c1bc21183..c93b6c2fd6 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -368,7 +368,7 @@ namespace MediaBrowser.Providers.TV var seasonNumber = i.Season.IndexNumber.Value + i.SeasonOffset; // If there's a physical season with the same number, delete it - if (physicalSeasons.Any(p => p.Season.IndexNumber.HasValue && (p.Season.IndexNumber.Value + p.SeasonOffset) == seasonNumber)) + if (physicalSeasons.Any(p => p.Season.IndexNumber.HasValue && (p.Season.IndexNumber.Value + p.SeasonOffset) == seasonNumber && string.Equals(p.Season.Series.PresentationUniqueKey, i.Season.Series.PresentationUniqueKey, StringComparison.Ordinal))) { return true; } diff --git a/MediaBrowser.ServerApplication/Native/RegisterServer.bat b/MediaBrowser.ServerApplication/Native/RegisterServer.bat index 85baa0d03a..504df21995 100644 --- a/MediaBrowser.ServerApplication/Native/RegisterServer.bat +++ b/MediaBrowser.ServerApplication/Native/RegisterServer.bat @@ -26,6 +26,9 @@ netsh advfirewall firewall delete rule name="Emby Server" netsh advfirewall firewall add rule name="Emby Server" dir=in action=allow protocol=TCP program=%4 enable=yes netsh advfirewall firewall add rule name="Emby Server" dir=in action=allow protocol=UDP program=%4 enable=yes +netsh advfirewall firewall add rule name="mediabrowser.serverapplication.exe" dir=in action=allow protocol=TCP program=%4 enable=yes +netsh advfirewall firewall add rule name="mediabrowser.serverapplication.exe" dir=in action=allow protocol=UDP program=%4 enable=yes + :DONE Exit \ No newline at end of file