瀏覽代碼

ensure custom css is loaded last

Luke Pulverenti 7 年之前
父節點
當前提交
dc7a59c73a

+ 35 - 35
Emby.Server.Core/ApplicationHost.cs

@@ -434,41 +434,41 @@ namespace Emby.Server.Core
 
 
             var result = new JsonSerializer(FileSystemManager, LogManager.GetLogger("JsonSerializer"));
             var result = new JsonSerializer(FileSystemManager, LogManager.GetLogger("JsonSerializer"));
 
 
-            ServiceStack.Text.JsConfig<LiveTvProgram>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<LiveTvChannel>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<LiveTvVideoRecording>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<LiveTvAudioRecording>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Series>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Audio>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<MusicAlbum>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<MusicArtist>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<MusicGenre>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<MusicVideo>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Movie>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Playlist>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<AudioPodcast>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<AudioBook>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Trailer>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<BoxSet>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Episode>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Season>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Book>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<CollectionFolder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Folder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Game>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<GameGenre>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<GameSystem>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Genre>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Person>.ExcludePropertyNames = new[] { "PlaceOfBirth", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Photo>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<PhotoAlbum>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Studio>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<UserRootFolder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<UserView>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Video>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Year>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<Channel>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
-            ServiceStack.Text.JsConfig<AggregateFolder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "Keywords", "ExtraType" };
+            ServiceStack.Text.JsConfig<LiveTvProgram>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<LiveTvChannel>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<LiveTvVideoRecording>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<LiveTvAudioRecording>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Series>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Audio>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<MusicAlbum>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<MusicArtist>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<MusicGenre>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<MusicVideo>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Movie>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Playlist>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<AudioPodcast>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<AudioBook>.ExcludePropertyNames = new[] { "Artists", "AlbumArtists", "ChannelMediaSources", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Trailer>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<BoxSet>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Episode>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Season>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Book>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<CollectionFolder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Folder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Game>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<GameGenre>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<GameSystem>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Genre>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Person>.ExcludePropertyNames = new[] { "PlaceOfBirth", "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Photo>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<PhotoAlbum>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Studio>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<UserRootFolder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<UserView>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Video>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Year>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<Channel>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
+            ServiceStack.Text.JsConfig<AggregateFolder>.ExcludePropertyNames = new[] { "ProviderIds", "ImageInfos", "ProductionLocations", "ThemeSongIds", "ThemeVideoIds", "TotalBitrate", "Taglines", "ExtraType" };
 
 
             return result;
             return result;
         }
         }

+ 0 - 40
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -251,7 +251,6 @@ namespace Emby.Server.Implementations.Data
                     AddColumn(db, "TypedBaseItems", "SeriesId", "GUID", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "SeriesId", "GUID", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "ExternalSeriesId", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "ExternalSeriesId", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "Tagline", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "Tagline", "Text", existingColumnNames);
-                    AddColumn(db, "TypedBaseItems", "Keywords", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "ProviderIds", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "ProviderIds", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "Images", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "Images", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "ProductionLocations", "Text", existingColumnNames);
                     AddColumn(db, "TypedBaseItems", "ProductionLocations", "Text", existingColumnNames);
@@ -454,7 +453,6 @@ namespace Emby.Server.Implementations.Data
             "InheritedTags",
             "InheritedTags",
             "ExternalSeriesId",
             "ExternalSeriesId",
             "Tagline",
             "Tagline",
-            "Keywords",
             "ProviderIds",
             "ProviderIds",
             "Images",
             "Images",
             "ProductionLocations",
             "ProductionLocations",
@@ -578,7 +576,6 @@ namespace Emby.Server.Implementations.Data
                 "SeriesId",
                 "SeriesId",
                 "ExternalSeriesId",
                 "ExternalSeriesId",
                 "Tagline",
                 "Tagline",
-                "Keywords",
                 "ProviderIds",
                 "ProviderIds",
                 "Images",
                 "Images",
                 "ProductionLocations",
                 "ProductionLocations",
@@ -1011,15 +1008,6 @@ namespace Emby.Server.Implementations.Data
             saveItemStatement.TryBind("@ExternalSeriesId", item.ExternalSeriesId);
             saveItemStatement.TryBind("@ExternalSeriesId", item.ExternalSeriesId);
             saveItemStatement.TryBind("@Tagline", item.Tagline);
             saveItemStatement.TryBind("@Tagline", item.Tagline);
 
 
-            if (item.Keywords.Count > 0)
-            {
-                saveItemStatement.TryBind("@Keywords", string.Join("|", item.Keywords.ToArray()));
-            }
-            else
-            {
-                saveItemStatement.TryBindNull("@Keywords");
-            }
-
             saveItemStatement.TryBind("@ProviderIds", SerializeProviderIds(item));
             saveItemStatement.TryBind("@ProviderIds", SerializeProviderIds(item));
             saveItemStatement.TryBind("@Images", SerializeImages(item));
             saveItemStatement.TryBind("@Images", SerializeImages(item));
 
 
@@ -1874,15 +1862,6 @@ namespace Emby.Server.Implementations.Data
                 index++;
                 index++;
             }
             }
 
 
-            if (HasField(query, ItemFields.Keywords))
-            {
-                if (!reader.IsDBNull(index))
-                {
-                    item.Keywords = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList();
-                }
-                index++;
-            }
-
             if (!reader.IsDBNull(index))
             if (!reader.IsDBNull(index))
             {
             {
                 DeserializeProviderIds(reader.GetString(index), item);
                 DeserializeProviderIds(reader.GetString(index), item);
@@ -2287,7 +2266,6 @@ namespace Emby.Server.Implementations.Data
             switch (name)
             switch (name)
             {
             {
                 case ItemFields.HomePageUrl:
                 case ItemFields.HomePageUrl:
-                case ItemFields.Keywords:
                 case ItemFields.DisplayMediaType:
                 case ItemFields.DisplayMediaType:
                 case ItemFields.CustomRating:
                 case ItemFields.CustomRating:
                 case ItemFields.ProductionLocations:
                 case ItemFields.ProductionLocations:
@@ -4221,23 +4199,6 @@ namespace Emby.Server.Implementations.Data
                 whereClauses.Add(clause);
                 whereClauses.Add(clause);
             }
             }
 
 
-            if (query.Keywords.Length > 0)
-            {
-                var clauses = new List<string>();
-                var index = 0;
-                foreach (var item in query.Keywords)
-                {
-                    clauses.Add("@Keyword" + index + " in (select CleanValue from itemvalues where ItemId=Guid and Type=5)");
-                    if (statement != null)
-                    {
-                        statement.TryBind("@Keyword" + index, GetCleanValue(item));
-                    }
-                    index++;
-                }
-                var clause = "(" + string.Join(" OR ", clauses.ToArray()) + ")";
-                whereClauses.Add(clause);
-            }
-
             if (query.OfficialRatings.Length > 0)
             if (query.OfficialRatings.Length > 0)
             {
             {
                 var clauses = new List<string>();
                 var clauses = new List<string>();
@@ -5435,7 +5396,6 @@ namespace Emby.Server.Implementations.Data
             list.AddRange(item.Genres.Select(i => new Tuple<int, string>(2, i)));
             list.AddRange(item.Genres.Select(i => new Tuple<int, string>(2, i)));
             list.AddRange(item.Studios.Select(i => new Tuple<int, string>(3, i)));
             list.AddRange(item.Studios.Select(i => new Tuple<int, string>(3, i)));
             list.AddRange(item.Tags.Select(i => new Tuple<int, string>(4, i)));
             list.AddRange(item.Tags.Select(i => new Tuple<int, string>(4, i)));
-            list.AddRange(item.Keywords.Select(i => new Tuple<int, string>(5, i)));
 
 
             return list;
             return list;
         }
         }

+ 0 - 5
Emby.Server.Implementations/Dto/DtoService.cs

@@ -894,11 +894,6 @@ namespace Emby.Server.Implementations.Dto
                 dto.Tags = item.Tags;
                 dto.Tags = item.Tags;
             }
             }
 
 
-            if (fields.Contains(ItemFields.Keywords))
-            {
-                dto.Keywords = item.Keywords;
-            }
-
             var hasAspectRatio = item as IHasAspectRatio;
             var hasAspectRatio = item as IHasAspectRatio;
             if (hasAspectRatio != null)
             if (hasAspectRatio != null)
             {
             {

+ 0 - 1
Emby.Server.Implementations/Session/SessionManager.cs

@@ -1675,7 +1675,6 @@ namespace Emby.Server.Implementations.Session
                 dtoOptions.Fields.Remove(ItemFields.ExternalEtag);
                 dtoOptions.Fields.Remove(ItemFields.ExternalEtag);
                 dtoOptions.Fields.Remove(ItemFields.InheritedParentalRatingValue);
                 dtoOptions.Fields.Remove(ItemFields.InheritedParentalRatingValue);
                 dtoOptions.Fields.Remove(ItemFields.ItemCounts);
                 dtoOptions.Fields.Remove(ItemFields.ItemCounts);
-                dtoOptions.Fields.Remove(ItemFields.Keywords);
                 dtoOptions.Fields.Remove(ItemFields.MediaSourceCount);
                 dtoOptions.Fields.Remove(ItemFields.MediaSourceCount);
                 dtoOptions.Fields.Remove(ItemFields.MediaStreams);
                 dtoOptions.Fields.Remove(ItemFields.MediaStreams);
                 dtoOptions.Fields.Remove(ItemFields.MediaSources);
                 dtoOptions.Fields.Remove(ItemFields.MediaSources);

+ 0 - 2
MediaBrowser.Api/ItemUpdateService.cs

@@ -268,8 +268,6 @@ namespace MediaBrowser.Api
                 item.Tagline = request.Taglines.FirstOrDefault();
                 item.Tagline = request.Taglines.FirstOrDefault();
             }
             }
 
 
-            item.Keywords = request.Keywords;
-
             if (request.Studios != null)
             if (request.Studios != null)
             {
             {
                 item.Studios = request.Studios.Select(x => x.Name).ToList();
                 item.Studios = request.Studios.Select(x => x.Name).ToList();

+ 0 - 8
MediaBrowser.Api/SimilarItemsHelper.cs

@@ -142,11 +142,6 @@ namespace MediaBrowser.Api
             return item.Tags;
             return item.Tags;
         }
         }
 
 
-        private static IEnumerable<string> GetKeywords(BaseItem item)
-        {
-            return item.Keywords;
-        }
-
         /// <summary>
         /// <summary>
         /// Gets the similiarity score.
         /// Gets the similiarity score.
         /// </summary>
         /// </summary>
@@ -170,9 +165,6 @@ namespace MediaBrowser.Api
             // Find common tags
             // Find common tags
             points += GetTags(item1).Where(i => GetTags(item2).Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 10);
             points += GetTags(item1).Where(i => GetTags(item2).Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 10);
 
 
-            // Find common keywords
-            points += GetKeywords(item1).Where(i => GetKeywords(item2).Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 10);
-
             // Find common studios
             // Find common studios
             points += item1.Studios.Where(i => item2.Studios.Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 3);
             points += item1.Studios.Where(i => item2.Studios.Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 3);
 
 

+ 0 - 7
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -45,7 +45,6 @@ namespace MediaBrowser.Controller.Entities
         {
         {
             ThemeSongIds = new List<Guid>();
             ThemeSongIds = new List<Guid>();
             ThemeVideoIds = new List<Guid>();
             ThemeVideoIds = new List<Guid>();
-            Keywords = new List<string>();
             Tags = new List<string>();
             Tags = new List<string>();
             Genres = new List<string>();
             Genres = new List<string>();
             Studios = new List<string>();
             Studios = new List<string>();
@@ -881,7 +880,6 @@ namespace MediaBrowser.Controller.Entities
         [IgnoreDataMember]
         [IgnoreDataMember]
         public List<string> Tags { get; set; }
         public List<string> Tags { get; set; }
 
 
-        public List<string> Keywords { get; set; }
         public List<string> ProductionLocations { get; set; }
         public List<string> ProductionLocations { get; set; }
 
 
         /// <summary>
         /// <summary>
@@ -2279,11 +2277,6 @@ namespace MediaBrowser.Controller.Entities
                     newOptions.ForceSave = true;
                     newOptions.ForceSave = true;
                     ownedItem.ProductionLocations = item.ProductionLocations.ToList();
                     ownedItem.ProductionLocations = item.ProductionLocations.ToList();
                 }
                 }
-                if (!item.Keywords.SequenceEqual(ownedItem.Keywords, StringComparer.Ordinal))
-                {
-                    newOptions.ForceSave = true;
-                    ownedItem.Keywords = item.Keywords.ToList();
-                }
                 if (item.CommunityRating != ownedItem.CommunityRating)
                 if (item.CommunityRating != ownedItem.CommunityRating)
                 {
                 {
                     ownedItem.CommunityRating = item.CommunityRating;
                     ownedItem.CommunityRating = item.CommunityRating;

+ 0 - 2
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -38,7 +38,6 @@ namespace MediaBrowser.Controller.Entities
         public string[] ExcludeTags { get; set; }
         public string[] ExcludeTags { get; set; }
         public string[] ExcludeInheritedTags { get; set; }
         public string[] ExcludeInheritedTags { get; set; }
         public string[] Genres { get; set; }
         public string[] Genres { get; set; }
-        public string[] Keywords { get; set; }
 
 
         public bool? IsSpecialSeason { get; set; }
         public bool? IsSpecialSeason { get; set; }
         public bool? IsMissing { get; set; }
         public bool? IsMissing { get; set; }
@@ -194,7 +193,6 @@ namespace MediaBrowser.Controller.Entities
             OfficialRatings = new string[] { };
             OfficialRatings = new string[] { };
             SortBy = new string[] { };
             SortBy = new string[] { };
             MediaTypes = new string[] { };
             MediaTypes = new string[] { };
-            Keywords = new string[] { };
             IncludeItemTypes = new string[] { };
             IncludeItemTypes = new string[] { };
             ExcludeItemTypes = new string[] { };
             ExcludeItemTypes = new string[] { };
             Genres = new string[] { };
             Genres = new string[] { };

+ 0 - 21
MediaBrowser.Controller/Entities/KeywordExtensions.cs

@@ -1,21 +0,0 @@
-using System;
-using System.Linq;
-
-namespace MediaBrowser.Controller.Entities
-{
-    public static class KeywordExtensions
-    {
-        public static void AddKeyword(this BaseItem item, string name)
-        {
-            if (string.IsNullOrWhiteSpace(name))
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            if (!item.Keywords.Contains(name, StringComparer.OrdinalIgnoreCase))
-            {
-                item.Keywords.Add(name);
-            }
-        }
-    }
-}

+ 0 - 1
MediaBrowser.Controller/Entities/Trailer.cs

@@ -15,7 +15,6 @@ namespace MediaBrowser.Controller.Entities
         public Trailer()
         public Trailer()
         {
         {
             RemoteTrailers = new List<MediaUrl>();
             RemoteTrailers = new List<MediaUrl>();
-            Keywords = new List<string>();
             TrailerTypes = new List<TrailerType> { TrailerType.LocalTrailer };
             TrailerTypes = new List<TrailerType> { TrailerType.LocalTrailer };
         }
         }
 
 

+ 0 - 1
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -101,7 +101,6 @@
     <Compile Include="Entities\IHasDisplayOrder.cs" />
     <Compile Include="Entities\IHasDisplayOrder.cs" />
     <Compile Include="Entities\IHasId.cs" />
     <Compile Include="Entities\IHasId.cs" />
     <Compile Include="Entities\IHasImages.cs" />
     <Compile Include="Entities\IHasImages.cs" />
-    <Compile Include="Entities\KeywordExtensions.cs" />
     <Compile Include="Entities\IHasMediaSources.cs" />
     <Compile Include="Entities\IHasMediaSources.cs" />
     <Compile Include="Entities\IHasProgramAttributes.cs" />
     <Compile Include="Entities\IHasProgramAttributes.cs" />
     <Compile Include="Entities\IHasScreenshots.cs" />
     <Compile Include="Entities\IHasScreenshots.cs" />

+ 0 - 51
MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs

@@ -638,22 +638,6 @@ namespace MediaBrowser.LocalMetadata.Parsers
                         break;
                         break;
                     }
                     }
 
 
-                case "PlotKeywords":
-                    {
-                        if (!reader.IsEmptyElement)
-                        {
-                            using (var subtree = reader.ReadSubtree())
-                            {
-                                FetchFromKeywordsNode(subtree, item);
-                            }
-                        }
-                        else
-                        {
-                            reader.Read();
-                        }
-                        break;
-                    }
-
                 case "Persons":
                 case "Persons":
                     {
                     {
                         if (!reader.IsEmptyElement)
                         if (!reader.IsEmptyElement)
@@ -991,41 +975,6 @@ namespace MediaBrowser.LocalMetadata.Parsers
             }
             }
         }
         }
 
 
-        private void FetchFromKeywordsNode(XmlReader reader, BaseItem item)
-        {
-            reader.MoveToContent();
-            reader.Read();
-
-            // Loop through each element
-            while (!reader.EOF && reader.ReadState == ReadState.Interactive)
-            {
-                if (reader.NodeType == XmlNodeType.Element)
-                {
-                    switch (reader.Name)
-                    {
-                        case "PlotKeyword":
-                            {
-                                var tag = reader.ReadElementContentAsString();
-
-                                if (!string.IsNullOrWhiteSpace(tag))
-                                {
-                                    item.AddKeyword(tag);
-                                }
-                                break;
-                            }
-
-                        default:
-                            reader.Skip();
-                            break;
-                    }
-                }
-                else
-                {
-                    reader.Read();
-                }
-            }
-        }
-
         /// <summary>
         /// <summary>
         /// Fetches the data from persons node.
         /// Fetches the data from persons node.
         /// </summary>
         /// </summary>

+ 0 - 13
MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs

@@ -80,7 +80,6 @@ namespace MediaBrowser.LocalMetadata.Savers
 
 
                     "Overview",
                     "Overview",
                     "Persons",
                     "Persons",
-                    "PlotKeywords",
                     "PremiereDate",
                     "PremiereDate",
                     "ProductionYear",
                     "ProductionYear",
                     "Rating",
                     "Rating",
@@ -500,18 +499,6 @@ namespace MediaBrowser.LocalMetadata.Savers
                 writer.WriteEndElement();
                 writer.WriteEndElement();
             }
             }
 
 
-            if (item.Keywords.Count > 0)
-            {
-                writer.WriteStartElement("PlotKeywords");
-
-                foreach (var tag in item.Keywords)
-                {
-                    writer.WriteElementString("PlotKeyword", tag);
-                }
-
-                writer.WriteEndElement();
-            }
-
             var people = libraryManager.GetPeople(item);
             var people = libraryManager.GetPeople(item);
 
 
             if (people.Count > 0)
             if (people.Count > 0)

+ 0 - 6
MediaBrowser.Model/Dto/BaseItemDto.cs

@@ -440,12 +440,6 @@ namespace MediaBrowser.Model.Dto
         /// <value>The tags.</value>
         /// <value>The tags.</value>
         public List<string> Tags { get; set; }
         public List<string> Tags { get; set; }
 
 
-        /// <summary>
-        /// Gets or sets the keywords.
-        /// </summary>
-        /// <value>The keywords.</value>
-        public List<string> Keywords { get; set; }
-
         /// <summary>
         /// <summary>
         /// Gets or sets the primary image aspect ratio, after image enhancements.
         /// Gets or sets the primary image aspect ratio, after image enhancements.
         /// </summary>
         /// </summary>

+ 0 - 4
MediaBrowser.Model/Entities/MetadataFields.cs

@@ -15,10 +15,6 @@ namespace MediaBrowser.Model.Entities
         /// </summary>
         /// </summary>
         Genres,
         Genres,
         /// <summary>
         /// <summary>
-        /// The keywords
-        /// </summary>
-        Keywords,
-        /// <summary>
         /// The production locations
         /// The production locations
         /// </summary>
         /// </summary>
         ProductionLocations,
         ProductionLocations,

+ 0 - 5
MediaBrowser.Model/Querying/ItemFields.cs

@@ -92,11 +92,6 @@
         /// </summary>
         /// </summary>
         ItemCounts,
         ItemCounts,
 
 
-        /// <summary>
-        /// The keywords
-        /// </summary>
-        Keywords,
-
         /// <summary>
         /// <summary>
         /// The media source count
         /// The media source count
         /// </summary>
         /// </summary>

+ 0 - 8
MediaBrowser.Providers/Manager/ProviderUtils.cs

@@ -164,14 +164,6 @@ namespace MediaBrowser.Providers.Manager
                 }
                 }
             }
             }
 
 
-            if (!lockedFields.Contains(MetadataFields.Keywords))
-            {
-                if (replaceData || target.Keywords.Count == 0)
-                {
-                    target.Keywords = source.Keywords;
-                }
-            }
-
             if (!lockedFields.Contains(MetadataFields.ProductionLocations))
             if (!lockedFields.Contains(MetadataFields.ProductionLocations))
             {
             {
                 if (replaceData || target.ProductionLocations.Count == 0)
                 if (replaceData || target.ProductionLocations.Count == 0)

+ 4 - 4
MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs

@@ -307,10 +307,10 @@ namespace MediaBrowser.Providers.Movies
                 }
                 }
             }
             }
 
 
-            if (movieData.keywords != null && movieData.keywords.keywords != null)
-            {
-                movie.Keywords = movieData.keywords.keywords.Select(i => i.name).ToList();
-            }
+            //if (movieData.keywords != null && movieData.keywords.keywords != null)
+            //{
+            //    movie.Keywords = movieData.keywords.keywords.Select(i => i.name).ToList();
+            //}
 
 
             if (movieData.trailers != null && movieData.trailers.youtube != null &&
             if (movieData.trailers != null && movieData.trailers.youtube != null &&
                 movieData.trailers.youtube.Count > 0)
                 movieData.trailers.youtube.Count > 0)

+ 0 - 11
MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs

@@ -733,17 +733,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
                         break;
                         break;
                     }
                     }
 
 
-                case "plotkeyword":
-                    {
-                        var val = reader.ReadElementContentAsString();
-
-                        if (!string.IsNullOrWhiteSpace(val))
-                        {
-                            item.AddKeyword(val);
-                        }
-                        break;
-                    }
-
                 case "fileinfo":
                 case "fileinfo":
                     {
                     {
                         if (!reader.IsEmptyElement)
                         if (!reader.IsEmptyElement)

+ 0 - 6
MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs

@@ -77,7 +77,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
                     "style",
                     "style",
                     "imdbid",
                     "imdbid",
                     "imdb_id",
                     "imdb_id",
-                    "plotkeyword",
                     "country",
                     "country",
                     "audiodbalbumid",
                     "audiodbalbumid",
                     "audiodbartistid",
                     "audiodbartistid",
@@ -715,11 +714,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
                 }
                 }
             }
             }
 
 
-            foreach (var tag in item.Keywords)
-            {
-                writer.WriteElementString("plotkeyword", tag);
-            }
-
             var externalId = item.GetProviderId(MetadataProviders.AudioDbArtist);
             var externalId = item.GetProviderId(MetadataProviders.AudioDbArtist);
 
 
             if (!string.IsNullOrEmpty(externalId))
             if (!string.IsNullOrEmpty(externalId))