aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs63
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs3
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/SearchEngine.cs39
-rw-r--r--Emby.Server.Implementations/Localization/LocalizationManager.cs13
5 files changed, 76 insertions, 44 deletions
diff --git a/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs b/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs
index 4d9bf0624..e73a69892 100644
--- a/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs
+++ b/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs
@@ -195,52 +195,49 @@ namespace Emby.Server.Implementations.Configuration
}
}
- public void DisableMetadataService(string service)
+ public bool SetOptimalValues()
{
- DisableMetadataService(typeof(Movie), Configuration, service);
- DisableMetadataService(typeof(Episode), Configuration, service);
- DisableMetadataService(typeof(Series), Configuration, service);
- DisableMetadataService(typeof(Season), Configuration, service);
- DisableMetadataService(typeof(MusicArtist), Configuration, service);
- DisableMetadataService(typeof(MusicAlbum), Configuration, service);
- DisableMetadataService(typeof(MusicVideo), Configuration, service);
- DisableMetadataService(typeof(Video), Configuration, service);
- }
+ var config = Configuration;
- private void DisableMetadataService(Type type, ServerConfiguration config, string service)
- {
- var options = GetMetadataOptions(type, config);
+ var changed = false;
- if (!options.DisabledMetadataSavers.Contains(service, StringComparer.OrdinalIgnoreCase))
+ if (!config.EnableCaseSensitiveItemIds)
{
- var list = options.DisabledMetadataSavers.ToList();
-
- list.Add(service);
-
- options.DisabledMetadataSavers = list.ToArray(list.Count);
+ config.EnableCaseSensitiveItemIds = true;
+ changed = true;
}
- }
- private MetadataOptions GetMetadataOptions(Type type, ServerConfiguration config)
- {
- var options = config.MetadataOptions
- .FirstOrDefault(i => string.Equals(i.ItemType, type.Name, StringComparison.OrdinalIgnoreCase));
+ if (!config.SkipDeserializationForBasicTypes)
+ {
+ config.SkipDeserializationForBasicTypes = true;
+ changed = true;
+ }
- if (options == null)
+ if (!config.EnableSimpleArtistDetection)
{
- var list = config.MetadataOptions.ToList();
+ config.EnableSimpleArtistDetection = true;
+ changed = true;
+ }
- options = new MetadataOptions
- {
- ItemType = type.Name
- };
+ if (!config.EnableNormalizedItemByNameIds)
+ {
+ config.EnableNormalizedItemByNameIds = true;
+ changed = true;
+ }
- list.Add(options);
+ if (!config.DisableLiveTvChannelUserDataName)
+ {
+ config.DisableLiveTvChannelUserDataName = true;
+ changed = true;
+ }
- config.MetadataOptions = list.ToArray(list.Count);
+ if (!config.EnableNewOmdbSupport)
+ {
+ config.EnableNewOmdbSupport = true;
+ changed = true;
}
- return options;
+ return changed;
}
}
}
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 01416a307..eb0f5150f 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -5298,7 +5298,8 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
OfficialRatings = query.OfficialRatings,
GenreIds = query.GenreIds,
Genres = query.Genres,
- Years = query.Years
+ Years = query.Years,
+ NameContains = query.NameContains
};
var outerWhereClauses = GetWhereClauses(outerQuery, null);
diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index 94cafa3e2..d69a2b240 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -160,7 +160,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
ProductionYear = video.Year,
Name = parseName ?
video.Name :
- Path.GetFileName(video.Files[0].Path),
+ Path.GetFileNameWithoutExtension(video.Files[0].Path),
AdditionalParts = video.Files.Skip(1).Select(i => i.Path).ToArray(),
LocalAlternateVersions = video.AlternateVersions.Select(i => i.Path).ToArray()
};
diff --git a/Emby.Server.Implementations/Library/SearchEngine.cs b/Emby.Server.Implementations/Library/SearchEngine.cs
index b1ed034ca..df21c1409 100644
--- a/Emby.Server.Implementations/Library/SearchEngine.cs
+++ b/Emby.Server.Implementations/Library/SearchEngine.cs
@@ -99,8 +99,6 @@ namespace Emby.Server.Implementations.Library
var terms = GetWords(searchTerm);
- var hints = new List<Tuple<BaseItem, string, int>>();
-
var excludeItemTypes = query.ExcludeItemTypes.ToList();
var includeItemTypes = (query.IncludeItemTypes ?? new string[] { }).ToList();
@@ -161,8 +159,15 @@ namespace Emby.Server.Implementations.Library
AddIfMissing(excludeItemTypes, typeof(CollectionFolder).Name);
AddIfMissing(excludeItemTypes, typeof(Folder).Name);
+ var mediaTypes = query.MediaTypes.ToList();
+
+ if (includeItemTypes.Count > 0)
+ {
+ excludeItemTypes.Clear();
+ mediaTypes.Clear();
+ }
- var mediaItems = _libraryManager.GetItemList(new InternalItemsQuery(user)
+ var searchQuery = new InternalItemsQuery(user)
{
NameContains = searchTerm,
ExcludeItemTypes = excludeItemTypes.ToArray(excludeItemTypes.Count),
@@ -178,7 +183,7 @@ namespace Emby.Server.Implementations.Library
IsNews = query.IsNews,
IsSeries = query.IsSeries,
IsSports = query.IsSports,
- MediaTypes = query.MediaTypes,
+ MediaTypes = mediaTypes.ToArray(),
DtoOptions = new DtoOptions
{
@@ -189,17 +194,33 @@ namespace Emby.Server.Implementations.Library
ItemFields.ChannelInfo
}
}
- });
+ };
+
+ List<BaseItem> mediaItems;
+
+ if (searchQuery.IncludeItemTypes.Length == 1 && string.Equals(searchQuery.IncludeItemTypes[0], "MusicArtist", StringComparison.OrdinalIgnoreCase))
+ {
+ if (searchQuery.ParentId.HasValue)
+ {
+ searchQuery.AncestorIds = new string[] { searchQuery.ParentId.Value.ToString("N") };
+ }
+ searchQuery.ParentId = null;
+ searchQuery.IncludeItemsByName = true;
+ searchQuery.IncludeItemTypes = new string[] { };
+ mediaItems = _libraryManager.GetArtists(searchQuery).Items.Select(i => i.Item1).ToList();
+ }
+ else
+ {
+ mediaItems = _libraryManager.GetItemList(searchQuery);
+ }
- // Add search hints based on item name
- hints.AddRange(mediaItems.Select(item =>
+ var returnValue = mediaItems.Select(item =>
{
var index = GetIndex(item.Name, searchTerm, terms);
return new Tuple<BaseItem, string, int>(item, index.Item1, index.Item2);
- }));
- var returnValue = hints.Where(i => i.Item3 >= 0).OrderBy(i => i.Item3).ThenBy(i => i.Item1.SortName).Select(i => new SearchHintInfo
+ }).OrderBy(i => i.Item3).ThenBy(i => i.Item1.SortName).Select(i => new SearchHintInfo
{
Item = i.Item1,
MatchedTerm = i.Item2
diff --git a/Emby.Server.Implementations/Localization/LocalizationManager.cs b/Emby.Server.Implementations/Localization/LocalizationManager.cs
index 650f388a1..2eb4743cd 100644
--- a/Emby.Server.Implementations/Localization/LocalizationManager.cs
+++ b/Emby.Server.Implementations/Localization/LocalizationManager.cs
@@ -308,6 +308,19 @@ namespace Emby.Server.Implementations.Localization
return value == null ? (int?)null : value.Value;
}
+ public bool HasUnicodeCategory(string value, UnicodeCategory category)
+ {
+ foreach (var chr in value)
+ {
+ if (char.GetUnicodeCategory(chr) == category)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
public string GetLocalizedString(string phrase)
{
return GetLocalizedString(phrase, _configurationManager.Configuration.UICulture);