Browse Source

added new item by name filters

Luke Pulverenti 11 năm trước cách đây
mục cha
commit
f4b890f163
29 tập tin đã thay đổi với 155 bổ sung95 xóa
  1. 0 24
      MediaBrowser.Api/ItemUpdateService.cs
  2. 10 4
      MediaBrowser.Api/LiveTv/LiveTvService.cs
  3. 4 9
      MediaBrowser.Api/Playback/BaseStreamingService.cs
  4. 0 6
      MediaBrowser.Api/Playback/StreamRequest.cs
  5. 5 0
      MediaBrowser.Api/UserLibrary/ArtistsService.cs
  6. 35 0
      MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
  7. 6 0
      MediaBrowser.Api/UserLibrary/GameGenresService.cs
  8. 6 0
      MediaBrowser.Api/UserLibrary/GenresService.cs
  9. 5 0
      MediaBrowser.Api/UserLibrary/MusicGenresService.cs
  10. 5 0
      MediaBrowser.Api/UserLibrary/PersonsService.cs
  11. 5 0
      MediaBrowser.Api/UserLibrary/StudiosService.cs
  12. 14 0
      MediaBrowser.Api/UserLibrary/YearsService.cs
  13. 7 0
      MediaBrowser.Controller/Dto/IDtoService.cs
  14. 4 4
      MediaBrowser.Controller/Entities/BaseItem.cs
  15. 1 1
      MediaBrowser.Controller/Entities/Folder.cs
  16. 1 1
      MediaBrowser.Controller/Entities/IBaseItem.cs
  17. 1 1
      MediaBrowser.Controller/Entities/Movies/Movie.cs
  18. 1 1
      MediaBrowser.Controller/Entities/Video.cs
  19. 1 1
      MediaBrowser.Controller/MediaBrowser.Controller.csproj
  20. 2 2
      MediaBrowser.Model/ApiClient/ApiClientExtensions.cs
  21. 13 1
      MediaBrowser.Model/LiveTv/ChannelInfoDto.cs
  22. 21 0
      MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs
  23. 1 1
      MediaBrowser.Providers/RefreshIntrosTask.cs
  24. 2 3
      MediaBrowser.Server.Implementations/Dto/DtoService.cs
  25. 2 2
      MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
  26. 0 1
      MediaBrowser.WebDashboard/Api/DashboardService.cs
  27. 2 29
      MediaBrowser.WebDashboard/ApiClient.js
  28. 0 3
      MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
  29. 1 1
      MediaBrowser.WebDashboard/packages.config

+ 0 - 24
MediaBrowser.Api/ItemUpdateService.cs

@@ -14,14 +14,6 @@ using System.Threading.Tasks;
 
 namespace MediaBrowser.Api
 {
-    [Route("/LiveTv/Channels/{ChannelId}", "POST")]
-    [Api(("Updates an item"))]
-    public class UpdateChannel : BaseItemDto, IReturnVoid
-    {
-        [ApiMember(Name = "ChannelId", Description = "The id of the channel", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
-        public string ChannelId { get; set; }
-    }
-
     [Route("/Items/{ItemId}", "POST")]
     [Api(("Updates an item"))]
     public class UpdateItem : BaseItemDto, IReturnVoid
@@ -98,13 +90,6 @@ namespace MediaBrowser.Api
             Task.WaitAll(task);
         }
 
-        public void Post(UpdateChannel request)
-        {
-            var task = UpdateItem(request);
-
-            Task.WaitAll(task);
-        }
-
         private async Task UpdateItem(UpdateItem request)
         {
             var item = _dtoService.GetItemByDtoId(request.ItemId);
@@ -144,15 +129,6 @@ namespace MediaBrowser.Api
             await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
         }
 
-        private async Task UpdateItem(UpdateChannel request)
-        {
-            var item = _liveTv.GetInternalChannel(request.Id);
-
-            UpdateItem(request, item);
-
-            await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
-        }
-
         public void Post(UpdateArtist request)
         {
             var task = UpdateItem(request);

+ 10 - 4
MediaBrowser.Api/LiveTv/LiveTvService.cs

@@ -13,9 +13,9 @@ using System.Threading.Tasks;
 
 namespace MediaBrowser.Api.LiveTv
 {
-    [Route("/LiveTv/Services", "GET")]
+    [Route("/LiveTv/Info", "GET")]
     [Api(Description = "Gets available live tv services.")]
-    public class GetServices : IReturn<List<LiveTvServiceInfo>>
+    public class GetLiveTvInfo : IReturn<LiveTvInfo>
     {
     }
 
@@ -290,13 +290,19 @@ namespace MediaBrowser.Api.LiveTv
             }
         }
 
-        public object Get(GetServices request)
+        public object Get(GetLiveTvInfo request)
         {
             var services = _liveTvManager.Services
                 .Select(GetServiceInfo)
                 .ToList();
 
-            return ToOptimizedResult(services);
+            var info = new LiveTvInfo
+            {
+                Services = services,
+                ActiveServiceName = _liveTvManager.ActiveService == null ? null : _liveTvManager.ActiveService.Name
+            };
+
+            return ToOptimizedResult(info);
         }
 
         private LiveTvServiceInfo GetServiceInfo(ILiveTvService service)

+ 4 - 9
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1004,9 +1004,9 @@ namespace MediaBrowser.Api.Playback
                 RequestedUrl = url
             };
 
-            Guid itemId;
+            var item = DtoService.GetItemByDtoId(request.Id);
 
-            if (string.Equals(request.Type, "Recording", StringComparison.OrdinalIgnoreCase))
+            if (item is ILiveTvRecording)
             {
                 var recording = await LiveTvManager.GetInternalRecording(request.Id, cancellationToken).ConfigureAwait(false);
 
@@ -1042,11 +1042,10 @@ namespace MediaBrowser.Api.Playback
                     }
                 }
 
-                itemId = recording.Id;
                 //state.RunTimeTicks = recording.RunTimeTicks;
                 state.SendInputOverStandardInput = recording.RecordingInfo.Status == RecordingStatus.InProgress;
             }
-            else if (string.Equals(request.Type, "Channel", StringComparison.OrdinalIgnoreCase))
+            else if (item is LiveTvChannel)
             {
                 var channel = LiveTvManager.GetInternalChannel(request.Id);
 
@@ -1069,13 +1068,10 @@ namespace MediaBrowser.Api.Playback
                     state.IsRemote = true;
                 }
 
-                itemId = channel.Id;
                 state.SendInputOverStandardInput = true;
             }
             else
             {
-                var item = DtoService.GetItemByDtoId(request.Id);
-
                 state.MediaPath = item.Path;
                 state.IsRemote = item.LocationType == LocationType.Remote;
 
@@ -1093,14 +1089,13 @@ namespace MediaBrowser.Api.Playback
                 }
 
                 state.RunTimeTicks = item.RunTimeTicks;
-                itemId = item.Id;
             }
 
             var videoRequest = request as VideoStreamRequest;
 
             var mediaStreams = ItemRepository.GetMediaStreams(new MediaStreamQuery
             {
-                ItemId = itemId
+                ItemId = item.Id
 
             }).ToList();
 

+ 0 - 6
MediaBrowser.Api/Playback/StreamRequest.cs

@@ -65,12 +65,6 @@ namespace MediaBrowser.Api.Playback
         /// No need to put this in api docs since it's dlna only
         /// </summary>
         public bool AlbumArt { get; set; }
-
-        /// <summary>
-        /// Gets or sets the type.
-        /// </summary>
-        /// <value>The type.</value>
-        public string Type { get; set; }
     }
 
     public class VideoStreamRequest : StreamRequest

+ 5 - 0
MediaBrowser.Api/UserLibrary/ArtistsService.cs

@@ -114,5 +114,10 @@ namespace MediaBrowser.Api.UserLibrary
             return LibraryManager.GetAllArtists(items)
                 .Select(name => LibraryManager.GetArtist(name));
         }
+
+        protected override IEnumerable<BaseItem> GetLibraryItems(MusicArtist item, IEnumerable<BaseItem> libraryItems)
+        {
+            return libraryItems.OfType<IHasArtist>().Where(i => i.HasArtist(item.Name)).Cast<BaseItem>();
+        }
     }
 }

+ 35 - 0
MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs

@@ -93,6 +93,8 @@ namespace MediaBrowser.Api.UserLibrary
 
             var filteredItems = FilterItems(request, extractedItems, user);
 
+            filteredItems = FilterByLibraryItems(request, filteredItems, user);
+
             filteredItems = ItemsService.ApplySortOrder(request, filteredItems, user, LibraryManager).Cast<TItemType>();
 
             var ibnItemsArray = filteredItems.ToList();
@@ -127,6 +129,39 @@ namespace MediaBrowser.Api.UserLibrary
             return result;
         }
 
+        private IEnumerable<TItemType> FilterByLibraryItems(GetItemsByName request, IEnumerable<TItemType> items, User user)
+        {
+            var filters = request.GetFilters().ToList();
+
+            if (filters.Contains(ItemFilter.IsPlayed))
+            {
+                var libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList();
+
+                items = items.Where(i => GetLibraryItems(i, libraryItems).All(l =>
+                {
+                    var userdata = UserDataRepository.GetUserData(user.Id, l.GetUserDataKey());
+                        
+                    return userdata != null && userdata.Played;
+                }));
+            }
+
+            if (filters.Contains(ItemFilter.IsUnplayed))
+            {
+                var libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList();
+
+                items = items.Where(i => GetLibraryItems(i, libraryItems).All(l =>
+                {
+                    var userdata = UserDataRepository.GetUserData(user.Id, l.GetUserDataKey());
+
+                    return userdata == null || !userdata.Played;
+                }));
+            }
+
+            return items;
+        }
+
+        protected abstract IEnumerable<BaseItem> GetLibraryItems(TItemType item, IEnumerable<BaseItem> libraryItems);
+
         /// <summary>
         /// Filters the items.
         /// </summary>

+ 6 - 0
MediaBrowser.Api/UserLibrary/GameGenresService.cs

@@ -1,5 +1,6 @@
 using MediaBrowser.Controller.Dto;
 using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Model.Dto;
@@ -109,5 +110,10 @@ namespace MediaBrowser.Api.UserLibrary
                 .Distinct(StringComparer.OrdinalIgnoreCase)
                 .Select(name => LibraryManager.GetGameGenre(name));
         }
+
+        protected override IEnumerable<BaseItem> GetLibraryItems(GameGenre item, IEnumerable<BaseItem> libraryItems)
+        {
+            return libraryItems.Where(i => (i is Game) && i.Genres.Contains(item.Name, StringComparer.OrdinalIgnoreCase));
+        }
     }
 }

+ 6 - 0
MediaBrowser.Api/UserLibrary/GenresService.cs

@@ -1,5 +1,6 @@
 using MediaBrowser.Controller.Dto;
 using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Model.Dto;
@@ -113,5 +114,10 @@ namespace MediaBrowser.Api.UserLibrary
                 .Distinct(StringComparer.OrdinalIgnoreCase)
                 .Select(name => LibraryManager.GetGenre(name));
         }
+
+        protected override IEnumerable<BaseItem> GetLibraryItems(Genre item, IEnumerable<BaseItem> libraryItems)
+        {
+            return libraryItems.Where(i => !(i is Game) && !(i is IHasMusicGenres) && i.Genres.Contains(item.Name, StringComparer.OrdinalIgnoreCase));
+        }
     }
 }

+ 5 - 0
MediaBrowser.Api/UserLibrary/MusicGenresService.cs

@@ -109,5 +109,10 @@ namespace MediaBrowser.Api.UserLibrary
                 .Distinct(StringComparer.OrdinalIgnoreCase)
                 .Select(name => LibraryManager.GetMusicGenre(name));
         }
+
+        protected override IEnumerable<BaseItem> GetLibraryItems(MusicGenre item, IEnumerable<BaseItem> libraryItems)
+        {
+            return libraryItems.Where(i => (i is IHasMusicGenres) && i.Genres.Contains(item.Name, StringComparer.OrdinalIgnoreCase));
+        }
     }
 }

+ 5 - 0
MediaBrowser.Api/UserLibrary/PersonsService.cs

@@ -163,5 +163,10 @@ namespace MediaBrowser.Api.UserLibrary
 
                 people.Where(p => personTypes.Contains(p.Type ?? string.Empty, StringComparer.OrdinalIgnoreCase) || personTypes.Contains(p.Role ?? string.Empty, StringComparer.OrdinalIgnoreCase));
         }
+
+        protected override IEnumerable<BaseItem> GetLibraryItems(Person item, IEnumerable<BaseItem> libraryItems)
+        {
+            return libraryItems.Where(i => i.People.Any(p => string.Equals(p.Name, item.Name, StringComparison.OrdinalIgnoreCase)));
+        }
     }
 }

+ 5 - 0
MediaBrowser.Api/UserLibrary/StudiosService.cs

@@ -114,5 +114,10 @@ namespace MediaBrowser.Api.UserLibrary
                 .Distinct(StringComparer.OrdinalIgnoreCase)
                 .Select(name => LibraryManager.GetStudio(name));
         }
+
+        protected override IEnumerable<BaseItem> GetLibraryItems(Studio item, IEnumerable<BaseItem> libraryItems)
+        {
+            return libraryItems.Where(i => i.Studios.Contains(item.Name, StringComparer.OrdinalIgnoreCase));
+        }
     }
 }

+ 14 - 0
MediaBrowser.Api/UserLibrary/YearsService.cs

@@ -114,5 +114,19 @@ namespace MediaBrowser.Api.UserLibrary
                 .Distinct()
                 .Select(year => LibraryManager.GetYear(year));
         }
+
+        protected readonly CultureInfo UsCulture = new CultureInfo("en-US");
+        
+        protected override IEnumerable<BaseItem> GetLibraryItems(Year item, IEnumerable<BaseItem> libraryItems)
+        {
+            int year;
+
+            if (!int.TryParse(item.Name, NumberStyles.Integer, UsCulture, out year))
+            {
+                return libraryItems;
+            }
+
+            return libraryItems.Where(i => i.ProductionYear.HasValue && i.ProductionYear.Value == year);
+        }
     }
 }

+ 7 - 0
MediaBrowser.Controller/Dto/IDtoService.cs

@@ -57,6 +57,13 @@ namespace MediaBrowser.Controller.Dto
         /// <returns>BaseItem.</returns>
         BaseItem GetItemByDtoId(string id, Guid? userId = null);
 
+        /// <summary>
+        /// Attaches the primary image aspect ratio.
+        /// </summary>
+        /// <param name="dto">The dto.</param>
+        /// <param name="item">The item.</param>
+        void AttachPrimaryImageAspectRatio(IItemDto dto, IHasImages item);
+
         /// <summary>
         /// Gets the base item dto.
         /// </summary>

+ 4 - 4
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -23,7 +23,7 @@ namespace MediaBrowser.Controller.Entities
     /// <summary>
     /// Class BaseItem
     /// </summary>
-    public abstract class BaseItem : IHasProviderIds, ILibraryItem, IHasImages, IHasUserData
+    public abstract class BaseItem : IHasProviderIds, IBaseItem, IHasImages, IHasUserData
     {
         protected BaseItem()
         {
@@ -662,7 +662,7 @@ namespace MediaBrowser.Controller.Entities
             return LibraryManager.ResolvePaths<Trailer>(files, null).Select(video =>
             {
                 // Try to retrieve it from the db. If we don't find it, use the resolved version
-                var dbItem = LibraryManager.RetrieveItem(video.Id) as Trailer;
+                var dbItem = LibraryManager.GetItemById(video.Id) as Trailer;
 
                 if (dbItem != null)
                 {
@@ -723,7 +723,7 @@ namespace MediaBrowser.Controller.Entities
             return LibraryManager.ResolvePaths<Audio.Audio>(files, null).Select(audio =>
             {
                 // Try to retrieve it from the db. If we don't find it, use the resolved version
-                var dbItem = LibraryManager.RetrieveItem(audio.Id) as Audio.Audio;
+                var dbItem = LibraryManager.GetItemById(audio.Id) as Audio.Audio;
 
                 if (dbItem != null)
                 {
@@ -781,7 +781,7 @@ namespace MediaBrowser.Controller.Entities
             return LibraryManager.ResolvePaths<Video>(files, null).Select(item =>
             {
                 // Try to retrieve it from the db. If we don't find it, use the resolved version
-                var dbItem = LibraryManager.RetrieveItem(item.Id) as Video;
+                var dbItem = LibraryManager.GetItemById(item.Id) as Video;
 
                 if (dbItem != null)
                 {

+ 1 - 1
MediaBrowser.Controller/Entities/Folder.cs

@@ -884,7 +884,7 @@ namespace MediaBrowser.Controller.Entities
             // First get using the cached Id
             if (info.ItemId != Guid.Empty)
             {
-                item = LibraryManager.GetItemById(info.ItemId);
+                item = LibraryManager.GetItemById(info.ItemId) as BaseItem;
             }
 
             // If still null, search by path

+ 1 - 1
MediaBrowser.Controller/Entities/ILibraryItem.cs → MediaBrowser.Controller/Entities/IBaseItem.cs

@@ -5,7 +5,7 @@ namespace MediaBrowser.Controller.Entities
     /// <summary>
     /// Interface ILibraryItem
     /// </summary>
-    public interface ILibraryItem
+    public interface IBaseItem
     {
         /// <summary>
         /// Gets the name.

+ 1 - 1
MediaBrowser.Controller/Entities/Movies/Movie.cs

@@ -179,7 +179,7 @@ namespace MediaBrowser.Controller.Entities.Movies
             return LibraryManager.ResolvePaths<Video>(files, null).Select(video =>
             {
                 // Try to retrieve it from the db. If we don't find it, use the resolved version
-                var dbItem = LibraryManager.RetrieveItem(video.Id) as Video;
+                var dbItem = LibraryManager.GetItemById(video.Id) as Video;
 
                 if (dbItem != null)
                 {

+ 1 - 1
MediaBrowser.Controller/Entities/Video.cs

@@ -268,7 +268,7 @@ namespace MediaBrowser.Controller.Entities
             return LibraryManager.ResolvePaths<Video>(files, null).Select(video =>
             {
                 // Try to retrieve it from the db. If we don't find it, use the resolved version
-                var dbItem = LibraryManager.RetrieveItem(video.Id) as Video;
+                var dbItem = LibraryManager.GetItemById(video.Id) as Video;
 
                 if (dbItem != null)
                 {

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

@@ -99,7 +99,7 @@
     <Compile Include="Entities\IHasTrailers.cs" />
     <Compile Include="Entities\IHasUserData.cs" />
     <Compile Include="Entities\IItemByName.cs" />
-    <Compile Include="Entities\ILibraryItem.cs" />
+    <Compile Include="Entities\IBaseItem.cs" />
     <Compile Include="Entities\ImageSourceInfo.cs" />
     <Compile Include="Entities\LinkedChild.cs" />
     <Compile Include="Entities\MusicVideo.cs" />

+ 2 - 2
MediaBrowser.Model/ApiClient/ApiClientExtensions.cs

@@ -1,7 +1,7 @@
-using System.IO;
+using MediaBrowser.Model.Dto;
+using System.IO;
 using System.Threading;
 using System.Threading.Tasks;
-using MediaBrowser.Model.Dto;
 
 namespace MediaBrowser.Model.ApiClient
 {

+ 13 - 1
MediaBrowser.Model/LiveTv/ChannelInfoDto.cs

@@ -8,7 +8,7 @@ namespace MediaBrowser.Model.LiveTv
     /// <summary>
     /// Class ChannelInfoDto
     /// </summary>
-    public class ChannelInfoDto
+    public class ChannelInfoDto : IItemDto
     {
         /// <summary>
         /// Gets or sets the name.
@@ -76,6 +76,18 @@ namespace MediaBrowser.Model.LiveTv
         /// <value>The now playing program.</value>
         public ProgramInfoDto CurrentProgram { get; set; }
 
+        /// <summary>
+        /// Gets or sets the primary image aspect ratio, after image enhancements.
+        /// </summary>
+        /// <value>The primary image aspect ratio.</value>
+        public double? PrimaryImageAspectRatio { get; set; }
+
+        /// <summary>
+        /// Gets or sets the primary image aspect ratio, before image enhancements.
+        /// </summary>
+        /// <value>The original primary image aspect ratio.</value>
+        public double? OriginalPrimaryImageAspectRatio { get; set; }
+        
         public ChannelInfoDto()
         {
             ImageTags = new Dictionary<ImageType, Guid>();

+ 21 - 0
MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 
 namespace MediaBrowser.Model.LiveTv
 {
@@ -28,4 +29,24 @@ namespace MediaBrowser.Model.LiveTv
         /// <value>The end date.</value>
         public DateTime EndDate { get; set; }
     }
+
+    public class LiveTvInfo
+    {
+        /// <summary>
+        /// Gets or sets the services.
+        /// </summary>
+        /// <value>The services.</value>
+        public List<LiveTvServiceInfo> Services { get; set; }
+
+        /// <summary>
+        /// Gets or sets the name of the active service.
+        /// </summary>
+        /// <value>The name of the active service.</value>
+        public string ActiveServiceName { get; set; }
+
+        public LiveTvInfo()
+        {
+            Services = new List<LiveTvServiceInfo>();
+        }
+    }
 }

+ 1 - 1
MediaBrowser.Providers/RefreshIntrosTask.cs

@@ -89,7 +89,7 @@ namespace MediaBrowser.Providers
                 return;
             }
 
-            var dbItem = _libraryManager.RetrieveItem(item.Id);
+            var dbItem = _libraryManager.GetItemById(item.Id);
             var isNewItem = false;
 
             if (dbItem != null)

+ 2 - 3
MediaBrowser.Server.Implementations/Dto/DtoService.cs

@@ -131,11 +131,10 @@ namespace MediaBrowser.Server.Implementations.Dto
         {
             if (user == null)
             {
-                //counts = item.ItemCounts;
                 return;
             }
 
-            ItemByNameCounts counts = item.GetItemByNameCounts(user.Id) ?? new ItemByNameCounts();
+            var counts = item.GetItemByNameCounts(user.Id) ?? new ItemByNameCounts();
 
             dto.ChildCount = counts.TotalCount;
 
@@ -1244,7 +1243,7 @@ namespace MediaBrowser.Server.Implementations.Dto
         /// <param name="dto">The dto.</param>
         /// <param name="item">The item.</param>
         /// <returns>Task.</returns>
-        private void AttachPrimaryImageAspectRatio(IItemDto dto, BaseItem item)
+        public void AttachPrimaryImageAspectRatio(IItemDto dto, IHasImages item)
         {
             var path = item.PrimaryImagePath;
 

+ 2 - 2
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -1045,13 +1045,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             info.DayPattern = _tvDtoService.GetDayPattern(info.Days);
 
             info.Name = program.Name;
-            info.ChannelId = program.ChannelId;
+            info.ChannelId = programDto.ChannelId;
             info.ChannelName = programDto.ChannelName;
             info.EndDate = program.EndDate;
             info.StartDate = program.StartDate;
             info.Name = program.Name;
             info.Overview = program.Overview;
-            info.ProgramId = program.Id;
+            info.ProgramId = programDto.Id;
             info.ExternalProgramId = programDto.ExternalId;
 
             return info;

+ 0 - 1
MediaBrowser.WebDashboard/Api/DashboardService.cs

@@ -567,7 +567,6 @@ namespace MediaBrowser.WebDashboard.Api
             await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.0/jquery.mobile-1.4.0.min.js", newLineBytes).ConfigureAwait(false);
 
             //await AppendResource(memoryStream, "thirdparty/jquery.infinite-scroll-helper.min.js", newLineBytes).ConfigureAwait(false);
-            await AppendResource(memoryStream, "thirdparty/jquery.hoverIntent.minified.js", newLineBytes).ConfigureAwait(false);
 
             var versionString = string.Format("window.dashboardVersion='{0}';", _appHost.ApplicationVersion);
             var versionBytes = Encoding.UTF8.GetBytes(versionString);

+ 2 - 29
MediaBrowser.WebDashboard/ApiClient.js

@@ -378,20 +378,9 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
             });
         };
 
-        self.getAuthorizedFeatures = function (options) {
+        self.getLiveTvInfo = function (options) {
 
-            var url = self.getUrl("Users/AuthorizedFeatures", options || {});
-
-            return self.ajax({
-                type: "GET",
-                url: url,
-                dataType: "json"
-            });
-        };
-
-        self.getLiveTvServices = function (options) {
-
-            var url = self.getUrl("LiveTv/Services", options || {});
+            var url = self.getUrl("LiveTv/Info", options || {});
 
             return self.ajax({
                 type: "GET",
@@ -2714,22 +2703,6 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
             });
         };
 
-        self.updateLiveTvChannel = function (item) {
-
-            if (!item) {
-                throw new Error("null item");
-            }
-
-            var url = self.getUrl("LiveTv/Channels/" + item.Id);
-
-            return self.ajax({
-                type: "POST",
-                url: url,
-                data: JSON.stringify(item),
-                contentType: "application/json"
-            });
-        };
-
         self.updateArtist = function (item) {
 
             if (!item) {

+ 0 - 3
MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj

@@ -496,9 +496,6 @@
     <Content Include="dashboard-ui\thirdparty\jquery-2.0.3.min.js">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="dashboard-ui\thirdparty\jquery.hoverIntent.minified.js">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
     <Content Include="dashboard-ui\thirdparty\jquery.infinite-scroll-helper.min.js">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

+ 1 - 1
MediaBrowser.WebDashboard/packages.config

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="MediaBrowser.ApiClient.Javascript" version="3.0.228" targetFramework="net45" />
+  <package id="MediaBrowser.ApiClient.Javascript" version="3.0.230" targetFramework="net45" />
 </packages>