From 674b40af03ba2e524c6b813f3d728047e2ba29b0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 7 Jul 2016 23:21:35 -0400 Subject: move call to create index --- .../Persistence/SqliteItemRepository.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 93f58b399..a3217e3ed 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -156,8 +156,6 @@ namespace MediaBrowser.Server.Implementations.Persistence string[] queries = { "create table if not exists TypedBaseItems (guid GUID primary key, type TEXT, data BLOB, ParentId GUID, Path TEXT)", - "create index if not exists idx_PathTypedBaseItems on TypedBaseItems(Path)", - "create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)", "create table if not exists AncestorIds (ItemId GUID, AncestorId GUID, AncestorIdText TEXT, PRIMARY KEY (ItemId, AncestorId))", "create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)", @@ -303,6 +301,9 @@ namespace MediaBrowser.Server.Implementations.Persistence "drop index if exists idx_ItemValues4", "drop index if exists idx_ItemValues5", + "create index if not exists idx_PathTypedBaseItems on TypedBaseItems(Path)", + "create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)", + "create index if not exists idx_PresentationUniqueKey on TypedBaseItems(PresentationUniqueKey)", "create index if not exists idx_GuidTypeIsFolderIsVirtualItem on TypedBaseItems(Guid,Type,IsFolder,IsVirtualItem)", //"create index if not exists idx_GuidMediaTypeIsFolderIsVirtualItem on TypedBaseItems(Guid,MediaType,IsFolder,IsVirtualItem)", -- cgit v1.2.3 From f952ac0f1f84f43f68cd28173b7c3ff9369a2040 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 7 Jul 2016 23:22:02 -0400 Subject: fix season ids --- MediaBrowser.Controller/Entities/Book.cs | 1 + MediaBrowser.Controller/Entities/TV/Episode.cs | 1 + MediaBrowser.Controller/Entities/TV/Season.cs | 1 + .../Dto/DtoService.cs | 26 +++++------- .../Persistence/CleanDatabaseScheduledTask.cs | 49 ++++++++++++++++------ 5 files changed, 51 insertions(+), 27 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs index 34368d61f..9d35c86d2 100644 --- a/MediaBrowser.Controller/Entities/Book.cs +++ b/MediaBrowser.Controller/Entities/Book.cs @@ -20,6 +20,7 @@ namespace MediaBrowser.Controller.Entities [IgnoreDataMember] public string SeriesName { get; set; } + [IgnoreDataMember] public Guid? SeriesId { get; set; } public string FindSeriesName() diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index b13c291d1..78c35ad48 100644 --- a/MediaBrowser.Controller/Entities/TV/Episode.cs +++ b/MediaBrowser.Controller/Entities/TV/Episode.cs @@ -249,6 +249,7 @@ namespace MediaBrowser.Controller.Entities.TV [IgnoreDataMember] public Guid? SeasonId { get; set; } + [IgnoreDataMember] public Guid? SeriesId { get; set; } public Guid? FindSeriesId() diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index 218d0fef8..865cadeb9 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -237,6 +237,7 @@ namespace MediaBrowser.Controller.Entities.TV [IgnoreDataMember] public string SeriesName { get; set; } + [IgnoreDataMember] public Guid? SeriesId { get; set; } public string FindSeriesName() diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 3e009d210..de6c23cac 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -671,17 +671,6 @@ namespace MediaBrowser.Server.Implementations.Dto .ToList(); } - private IEnumerable GetCacheTags(BaseItem item, ImageType type, int limit) - { - return item.GetImages(type) - // Convert to a list now in case GetImageCacheTag is slow - .ToList() - .Select(p => GetImageCacheTag(item, p)) - .Where(i => i != null) - .Take(limit) - .ToList(); - } - private string GetImageCacheTag(BaseItem item, ImageType type) { try @@ -1458,9 +1447,16 @@ namespace MediaBrowser.Server.Implementations.Dto while (((!dto.HasLogo && logoLimit > 0) || (!dto.HasArtImage && artLimit > 0) || (!dto.HasThumb && thumbLimit > 0) || parent is Series) && (parent = parent ?? (isFirst ? item.GetParent() ?? owner : parent)) != null) { + if (parent == null) + { + break; + } + + var allImages = parent.ImageInfos; + if (logoLimit > 0 && !dto.HasLogo && dto.ParentLogoItemId == null) { - var image = parent.GetImageInfo(ImageType.Logo, 0); + var image = allImages.FirstOrDefault(i => i.Type == ImageType.Logo); if (image != null) { @@ -1470,7 +1466,7 @@ namespace MediaBrowser.Server.Implementations.Dto } if (artLimit > 0 && !dto.HasArtImage && dto.ParentArtItemId == null) { - var image = parent.GetImageInfo(ImageType.Art, 0); + var image = allImages.FirstOrDefault(i => i.Type == ImageType.Art); if (image != null) { @@ -1480,7 +1476,7 @@ namespace MediaBrowser.Server.Implementations.Dto } if (thumbLimit > 0 && !dto.HasThumb && (dto.ParentThumbItemId == null || parent is Series)) { - var image = parent.GetImageInfo(ImageType.Thumb, 0); + var image = allImages.FirstOrDefault(i => i.Type == ImageType.Thumb); if (image != null) { @@ -1490,7 +1486,7 @@ namespace MediaBrowser.Server.Implementations.Dto } if (backdropLimit > 0 && !dto.HasBackdrop) { - var images = parent.GetImages(ImageType.Backdrop).Take(backdropLimit).ToList(); + var images = allImages.Where(i => i.Type == ImageType.Backdrop).Take(backdropLimit).ToList(); if (images.Count > 0) { diff --git a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs index b11a3e496..bf2afb5ac 100644 --- a/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs @@ -155,6 +155,8 @@ namespace MediaBrowser.Server.Implementations.Persistence _logger.Debug("Upgrading schema for {0} items", numItems); + var list = new List(); + foreach (var itemId in itemIds) { cancellationToken.ThrowIfCancellationRequested(); @@ -166,19 +168,26 @@ namespace MediaBrowser.Server.Implementations.Persistence if (item != null) { - try - { - await _itemRepo.SaveItem(item, cancellationToken).ConfigureAwait(false); - } - catch (OperationCanceledException) - { - throw; - } - catch (Exception ex) - { - _logger.ErrorException("Error saving item", ex); - } + list.Add(item); + } + } + + if (list.Count >= 1000) + { + try + { + await _itemRepo.SaveItems(list, cancellationToken).ConfigureAwait(false); } + catch (OperationCanceledException) + { + throw; + } + catch (Exception ex) + { + _logger.ErrorException("Error saving item", ex); + } + + list.Clear(); } numComplete++; @@ -187,6 +196,22 @@ namespace MediaBrowser.Server.Implementations.Persistence progress.Report(percent * 100); } + if (list.Count > 0) + { + try + { + await _itemRepo.SaveItems(list, cancellationToken).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + throw; + } + catch (Exception ex) + { + _logger.ErrorException("Error saving item", ex); + } + } + progress.Report(100); } -- cgit v1.2.3 From 9fdc9faba24aeb7f62769cb54b348d29d5fc67cd Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 7 Jul 2016 23:22:16 -0400 Subject: handle HDHR's with older firmware --- .../LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs | 59 ++++++++++++++++------ 1 file changed, 43 insertions(+), 16 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs index a3e5589e8..69b6fb5a9 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs @@ -17,6 +17,7 @@ using System.Threading.Tasks; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Net; namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun { @@ -106,18 +107,31 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun private async Task GetModelInfo(TunerHostInfo info, CancellationToken cancellationToken) { - using (var stream = await _httpClient.Get(new HttpRequestOptions() + try { - Url = string.Format("{0}/discover.json", GetApiUrl(info, false)), - CancellationToken = cancellationToken, - CacheLength = TimeSpan.FromDays(1), - CacheMode = CacheMode.Unconditional, - TimeoutMs = Convert.ToInt32(TimeSpan.FromSeconds(5).TotalMilliseconds) - })) + using (var stream = await _httpClient.Get(new HttpRequestOptions() + { + Url = string.Format("{0}/discover.json", GetApiUrl(info, false)), + CancellationToken = cancellationToken, + CacheLength = TimeSpan.FromDays(1), + CacheMode = CacheMode.Unconditional, + TimeoutMs = Convert.ToInt32(TimeSpan.FromSeconds(5).TotalMilliseconds) + })) + { + var response = JsonSerializer.DeserializeFromStream(stream); + + return response.ModelNumber; + } + } + catch (HttpException ex) { - var response = JsonSerializer.DeserializeFromStream(stream); + if (ex.StatusCode.HasValue && ex.StatusCode.Value == System.Net.HttpStatusCode.NotFound) + { + // HDHR4 doesn't have this api + return "HDHR"; + } - return response.ModelNumber; + throw; } } @@ -455,16 +469,29 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun return; } - // Test it by pulling down the lineup - using (var stream = await _httpClient.Get(new HttpRequestOptions + try { - Url = string.Format("{0}/discover.json", GetApiUrl(info, false)), - CancellationToken = CancellationToken.None - })) + // Test it by pulling down the lineup + using (var stream = await _httpClient.Get(new HttpRequestOptions + { + Url = string.Format("{0}/discover.json", GetApiUrl(info, false)), + CancellationToken = CancellationToken.None + })) + { + var response = JsonSerializer.DeserializeFromStream(stream); + + info.DeviceId = response.DeviceID; + } + } + catch (HttpException ex) { - var response = JsonSerializer.DeserializeFromStream(stream); + if (ex.StatusCode.HasValue && ex.StatusCode.Value == System.Net.HttpStatusCode.NotFound) + { + // HDHR4 doesn't have this api + return; + } - info.DeviceId = response.DeviceID; + throw; } } -- cgit v1.2.3