aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-02-14 22:36:07 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-02-14 22:36:07 -0500
commit18ff8aba74593f4ad47aba5f001c812b2c9393fe (patch)
tree7cb25d32e92e3c5aee8af4cff4cb25d44ccfa4f6
parent26fec4f990fab24a5aeec7c9ae938ec55856cf54 (diff)
fix language settings inheritance
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs26
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs7
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs7
-rw-r--r--MediaBrowser.Controller/Providers/BaseItemXmlParser.cs13
-rw-r--r--MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs23
-rw-r--r--MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs13
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs4
8 files changed, 84 insertions, 13 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 3ab02ea21..50a6dda30 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -976,14 +976,21 @@ namespace MediaBrowser.Controller.Entities
lang = hasLang.PreferredMetadataLanguage;
}
- if (string.IsNullOrEmpty(lang))
+ if (string.IsNullOrWhiteSpace(lang))
{
lang = Parents.OfType<IHasPreferredMetadataLanguage>()
.Select(i => i.PreferredMetadataLanguage)
- .FirstOrDefault(i => !string.IsNullOrEmpty(i));
+ .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
- if (string.IsNullOrEmpty(lang))
+ if (string.IsNullOrWhiteSpace(lang))
+ {
+ lang = LibraryManager.GetCollectionFolders(this)
+ .Select(i => i.PreferredMetadataLanguage)
+ .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
+ }
+
+ if (string.IsNullOrWhiteSpace(lang))
{
lang = ConfigurationManager.Configuration.PreferredMetadataLanguage;
}
@@ -1006,14 +1013,21 @@ namespace MediaBrowser.Controller.Entities
lang = hasLang.PreferredMetadataCountryCode;
}
- if (string.IsNullOrEmpty(lang))
+ if (string.IsNullOrWhiteSpace(lang))
{
lang = Parents.OfType<IHasPreferredMetadataLanguage>()
.Select(i => i.PreferredMetadataCountryCode)
- .FirstOrDefault(i => !string.IsNullOrEmpty(i));
+ .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
+ }
+
+ if (string.IsNullOrWhiteSpace(lang))
+ {
+ lang = LibraryManager.GetCollectionFolders(this)
+ .Select(i => i.PreferredMetadataCountryCode)
+ .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
- if (string.IsNullOrEmpty(lang))
+ if (string.IsNullOrWhiteSpace(lang))
{
lang = ConfigurationManager.Configuration.MetadataCountryCode;
}
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index 619617e9f..4c34460d7 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -1,7 +1,4 @@
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Localization;
-using MediaBrowser.Controller.Providers;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying;
@@ -10,6 +7,8 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
+using System.Threading;
+using System.Threading.Tasks;
namespace MediaBrowser.Controller.Entities.TV
{
diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs
index 9871ef3c5..9c8ed45a5 100644
--- a/MediaBrowser.Controller/Library/ILibraryManager.cs
+++ b/MediaBrowser.Controller/Library/ILibraryManager.cs
@@ -393,5 +393,12 @@ namespace MediaBrowser.Controller.Library
/// <returns>IEnumerable&lt;Video&gt;.</returns>
IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemInfo> fileSystemChildren,
IDirectoryService directoryService);
+
+ /// <summary>
+ /// Gets the collection folders.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <returns>IEnumerable&lt;Folder&gt;.</returns>
+ IEnumerable<Folder> GetCollectionFolders(BaseItem item);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index a37f7eb8a..a22e492f4 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -294,6 +294,19 @@ namespace MediaBrowser.Controller.Providers
break;
}
+ case "CountryCode":
+ {
+ var val = reader.ReadElementContentAsString();
+
+ var hasLanguage = item as IHasPreferredMetadataLanguage;
+ if (hasLanguage != null)
+ {
+ hasLanguage.PreferredMetadataCountryCode = val;
+ }
+
+ break;
+ }
+
case "PlaceOfBirth":
{
var val = reader.ReadElementContentAsString();
diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs
index b5b9278cc..194b3cd23 100644
--- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs
+++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs
@@ -421,6 +421,10 @@ namespace MediaBrowser.LocalMetadata.Savers
{
builder.Append("<Language>" + SecurityElement.Escape(hasLanguage.PreferredMetadataLanguage) + "</Language>");
}
+ if (!string.IsNullOrEmpty(hasLanguage.PreferredMetadataCountryCode))
+ {
+ builder.Append("<CountryCode>" + SecurityElement.Escape(hasLanguage.PreferredMetadataCountryCode) + "</CountryCode>");
+ }
}
// Use original runtime here, actual file runtime later in MediaInfo
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index aac4c87f5..e6e6b8c74 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -401,7 +401,7 @@ namespace MediaBrowser.Server.Implementations.Library
}
catch (DirectoryNotFoundException)
{
-
+
}
catch (Exception ex)
{
@@ -1489,6 +1489,23 @@ namespace MediaBrowser.Server.Implementations.Library
return ItemRepository.RetrieveItem(id);
}
+ public IEnumerable<Folder> GetCollectionFolders(BaseItem item)
+ {
+ while (!(item.Parent is AggregateFolder) && item.Parent != null)
+ {
+ item = item.Parent;
+ }
+
+ if (item == null)
+ {
+ return new List<Folder>();
+ }
+
+ return GetUserRootFolder().Children
+ .OfType<Folder>()
+ .Where(i => string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(item.Path));
+ }
+
public string GetContentType(BaseItem item)
{
string configuredContentType = GetConfiguredContentType(item, false);
@@ -1547,7 +1564,7 @@ namespace MediaBrowser.Server.Implementations.Library
}
return null;
}
-
+
private string GetTopFolderContentType(BaseItem item)
{
while (!(item.Parent is AggregateFolder) && item.Parent != null)
@@ -1840,7 +1857,7 @@ namespace MediaBrowser.Server.Implementations.Library
options.VideoFileExtensions.Remove(".rar");
options.VideoFileExtensions.Remove(".zip");
}
-
+
return options;
}
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
index 7b580dacd..66efd7c78 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
@@ -350,6 +350,19 @@ namespace MediaBrowser.XbmcMetadata.Parsers
break;
}
+ case "countrycode":
+ {
+ var val = reader.ReadElementContentAsString();
+
+ var hasLanguage = item as IHasPreferredMetadataLanguage;
+ if (hasLanguage != null)
+ {
+ hasLanguage.PreferredMetadataCountryCode = val;
+ }
+
+ break;
+ }
+
case "website":
{
var val = reader.ReadElementContentAsString();
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index aa19b0968..5455709e9 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -589,6 +589,10 @@ namespace MediaBrowser.XbmcMetadata.Savers
{
writer.WriteElementString("language", hasLanguage.PreferredMetadataLanguage);
}
+ if (!string.IsNullOrEmpty(hasLanguage.PreferredMetadataCountryCode))
+ {
+ writer.WriteElementString("countrycode", hasLanguage.PreferredMetadataCountryCode);
+ }
}
if (item.PremiereDate.HasValue && !(item is Episode))