From 4548e6598def249d4b0fe4f4f12e2fa16d4f1e3c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 8 Dec 2014 23:57:18 -0500 Subject: support dvd without video_ts folder --- MediaBrowser.Controller/Entities/BaseItem.cs | 14 +++++++++ MediaBrowser.Controller/Entities/Folder.cs | 14 +++++++++ MediaBrowser.Controller/Entities/IHasImages.cs | 6 ++++ MediaBrowser.Controller/Entities/Movies/Movie.cs | 16 ++++++++++ MediaBrowser.Controller/Entities/MusicVideo.cs | 36 ++++++++++++++++++++++ MediaBrowser.Controller/Entities/Video.cs | 20 +++++++++++- .../Providers/BaseItemXmlParser.cs | 6 ++++ 7 files changed, 111 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 072555986..29f13fad5 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -212,6 +212,20 @@ namespace MediaBrowser.Controller.Entities } } + [IgnoreDataMember] + public virtual string FileNameWithoutExtension + { + get + { + if (LocationType == LocationType.FileSystem) + { + return System.IO.Path.GetFileNameWithoutExtension(Path); + } + + return null; + } + } + /// /// This is just a helper for convenience /// diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 288972d7c..87ad9c380 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -58,6 +58,20 @@ namespace MediaBrowser.Controller.Entities } } + [IgnoreDataMember] + public override string FileNameWithoutExtension + { + get + { + if (LocationType == LocationType.FileSystem) + { + return System.IO.Path.GetFileName(Path); + } + + return null; + } + } + /// /// Gets or sets a value indicating whether this instance is physical root. /// diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs index 5c523d2e3..5aafc8eb3 100644 --- a/MediaBrowser.Controller/Entities/IHasImages.cs +++ b/MediaBrowser.Controller/Entities/IHasImages.cs @@ -21,6 +21,12 @@ namespace MediaBrowser.Controller.Entities /// The path. string Path { get; set; } + /// + /// Gets the file name without extension. + /// + /// The file name without extension. + string FileNameWithoutExtension { get; } + /// /// Gets the identifier. /// diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 4ac3ed77f..8ae024f37 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -158,6 +158,22 @@ namespace MediaBrowser.Controller.Entities.Movies ProductionYear = yearInName; hasChanges = true; } + else + { + // Try to get the year from the folder name + if (!IsInMixedFolder) + { + info = LibraryManager.ParseName(System.IO.Path.GetFileName(ContainingFolderPath)); + + yearInName = info.Year; + + if (yearInName.HasValue) + { + ProductionYear = yearInName; + hasChanges = true; + } + } + } } return hasChanges; diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs index 015e4b4ae..d7cd62aa6 100644 --- a/MediaBrowser.Controller/Entities/MusicVideo.cs +++ b/MediaBrowser.Controller/Entities/MusicVideo.cs @@ -89,5 +89,41 @@ namespace MediaBrowser.Controller.Entities { return GetItemLookupInfo(); } + + public override bool BeforeMetadataRefresh() + { + var hasChanges = base.BeforeMetadataRefresh(); + + if (!ProductionYear.HasValue) + { + var info = LibraryManager.ParseName(Name); + + var yearInName = info.Year; + + if (yearInName.HasValue) + { + ProductionYear = yearInName; + hasChanges = true; + } + else + { + // Try to get the year from the folder name + if (!IsInMixedFolder) + { + info = LibraryManager.ParseName(System.IO.Path.GetFileName(ContainingFolderPath)); + + yearInName = info.Year; + + if (yearInName.HasValue) + { + ProductionYear = yearInName; + hasChanges = true; + } + } + } + } + + return hasChanges; + } } } diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index d58ae7109..6b098cbd8 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -5,7 +5,6 @@ using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.MediaInfo; using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; @@ -236,6 +235,25 @@ namespace MediaBrowser.Controller.Entities } } + [IgnoreDataMember] + public override string FileNameWithoutExtension + { + get + { + if (LocationType == LocationType.FileSystem) + { + if (VideoType == VideoType.BluRay || VideoType == VideoType.Dvd || VideoType == VideoType.HdDvd) + { + return System.IO.Path.GetFileName(Path); + } + + return System.IO.Path.GetFileNameWithoutExtension(Path); + } + + return null; + } + } + internal override bool IsValidFromResolver(BaseItem newItem) { var current = this; diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 0a1c0938a..307ab3cb8 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -1340,6 +1340,12 @@ namespace MediaBrowser.Controller.Providers } } + // This is valid + if (!string.IsNullOrWhiteSpace(linkedItem.Path)) + { + return linkedItem; + } + return string.IsNullOrWhiteSpace(linkedItem.ItemName) || string.IsNullOrWhiteSpace(linkedItem.ItemType) ? null : linkedItem; } -- cgit v1.2.3