Merge pull request #1928 from MediaBrowser/dev

Dev
pull/702/head
Luke 9 years ago committed by GitHub
commit 802d2ecfef

@ -20,6 +20,7 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember] [IgnoreDataMember]
public string SeriesName { get; set; } public string SeriesName { get; set; }
[IgnoreDataMember]
public Guid? SeriesId { get; set; } public Guid? SeriesId { get; set; }
public string FindSeriesName() public string FindSeriesName()

@ -249,6 +249,7 @@ namespace MediaBrowser.Controller.Entities.TV
[IgnoreDataMember] [IgnoreDataMember]
public Guid? SeasonId { get; set; } public Guid? SeasonId { get; set; }
[IgnoreDataMember]
public Guid? SeriesId { get; set; } public Guid? SeriesId { get; set; }
public Guid? FindSeriesId() public Guid? FindSeriesId()

@ -237,6 +237,7 @@ namespace MediaBrowser.Controller.Entities.TV
[IgnoreDataMember] [IgnoreDataMember]
public string SeriesName { get; set; } public string SeriesName { get; set; }
[IgnoreDataMember]
public Guid? SeriesId { get; set; } public Guid? SeriesId { get; set; }
public string FindSeriesName() public string FindSeriesName()

@ -86,20 +86,28 @@ namespace MediaBrowser.MediaEncoding.Encoder
"libvorbis", "libvorbis",
"srt", "srt",
"h264_nvenc", "h264_nvenc",
"h264_qsv" "h264_qsv",
"ac3"
}; };
output = output ?? string.Empty; output = output ?? string.Empty;
var index = 0;
foreach (var codec in required) foreach (var codec in required)
{ {
var srch = " " + codec + " "; var srch = " " + codec + " ";
if (output.IndexOf(srch, StringComparison.OrdinalIgnoreCase) != -1) if (output.IndexOf(srch, StringComparison.OrdinalIgnoreCase) != -1)
{
if (index < required.Length - 1)
{ {
_logger.Info("Encoder available: " + codec); _logger.Info("Encoder available: " + codec);
}
found.Add(codec); found.Add(codec);
} }
index++;
} }
return found; return found;

@ -671,17 +671,6 @@ namespace MediaBrowser.Server.Implementations.Dto
.ToList(); .ToList();
} }
private IEnumerable<string> 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) private string GetImageCacheTag(BaseItem item, ImageType type)
{ {
try 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) && while (((!dto.HasLogo && logoLimit > 0) || (!dto.HasArtImage && artLimit > 0) || (!dto.HasThumb && thumbLimit > 0) || parent is Series) &&
(parent = parent ?? (isFirst ? item.GetParent() ?? owner : parent)) != null) (parent = parent ?? (isFirst ? item.GetParent() ?? owner : parent)) != null)
{ {
if (parent == null)
{
break;
}
var allImages = parent.ImageInfos;
if (logoLimit > 0 && !dto.HasLogo && dto.ParentLogoItemId == null) 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) if (image != null)
{ {
@ -1470,7 +1466,7 @@ namespace MediaBrowser.Server.Implementations.Dto
} }
if (artLimit > 0 && !dto.HasArtImage && dto.ParentArtItemId == null) 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) if (image != null)
{ {
@ -1480,7 +1476,7 @@ namespace MediaBrowser.Server.Implementations.Dto
} }
if (thumbLimit > 0 && !dto.HasThumb && (dto.ParentThumbItemId == null || parent is Series)) 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) if (image != null)
{ {
@ -1490,7 +1486,7 @@ namespace MediaBrowser.Server.Implementations.Dto
} }
if (backdropLimit > 0 && !dto.HasBackdrop) 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) if (images.Count > 0)
{ {

@ -17,6 +17,7 @@ using System.Threading.Tasks;
using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Net;
namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{ {
@ -105,6 +106,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
} }
private async Task<string> GetModelInfo(TunerHostInfo info, CancellationToken cancellationToken) private async Task<string> GetModelInfo(TunerHostInfo info, CancellationToken cancellationToken)
{
try
{ {
using (var stream = await _httpClient.Get(new HttpRequestOptions() using (var stream = await _httpClient.Get(new HttpRequestOptions()
{ {
@ -120,6 +123,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
return response.ModelNumber; return response.ModelNumber;
} }
} }
catch (HttpException ex)
{
if (ex.StatusCode.HasValue && ex.StatusCode.Value == System.Net.HttpStatusCode.NotFound)
{
// HDHR4 doesn't have this api
return "HDHR";
}
throw;
}
}
public async Task<List<LiveTvTunerInfo>> GetTunerInfos(TunerHostInfo info, CancellationToken cancellationToken) public async Task<List<LiveTvTunerInfo>> GetTunerInfos(TunerHostInfo info, CancellationToken cancellationToken)
{ {
@ -455,6 +469,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
return; return;
} }
try
{
// Test it by pulling down the lineup // Test it by pulling down the lineup
using (var stream = await _httpClient.Get(new HttpRequestOptions using (var stream = await _httpClient.Get(new HttpRequestOptions
{ {
@ -467,6 +483,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
info.DeviceId = response.DeviceID; info.DeviceId = response.DeviceID;
} }
} }
catch (HttpException ex)
{
if (ex.StatusCode.HasValue && ex.StatusCode.Value == System.Net.HttpStatusCode.NotFound)
{
// HDHR4 doesn't have this api
return;
}
throw;
}
}
protected override async Task<bool> IsAvailableInternal(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken) protected override async Task<bool> IsAvailableInternal(TunerHostInfo tuner, string channelId, CancellationToken cancellationToken)
{ {

@ -155,6 +155,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
_logger.Debug("Upgrading schema for {0} items", numItems); _logger.Debug("Upgrading schema for {0} items", numItems);
var list = new List<BaseItem>();
foreach (var itemId in itemIds) foreach (var itemId in itemIds)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
@ -165,10 +167,16 @@ namespace MediaBrowser.Server.Implementations.Persistence
var item = _libraryManager.GetItemById(itemId); var item = _libraryManager.GetItemById(itemId);
if (item != null) if (item != null)
{
list.Add(item);
}
}
if (list.Count >= 1000)
{ {
try try
{ {
await _itemRepo.SaveItem(item, cancellationToken).ConfigureAwait(false); await _itemRepo.SaveItems(list, cancellationToken).ConfigureAwait(false);
} }
catch (OperationCanceledException) catch (OperationCanceledException)
{ {
@ -178,7 +186,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
{ {
_logger.ErrorException("Error saving item", ex); _logger.ErrorException("Error saving item", ex);
} }
}
list.Clear();
} }
numComplete++; numComplete++;
@ -187,6 +196,22 @@ namespace MediaBrowser.Server.Implementations.Persistence
progress.Report(percent * 100); 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); progress.Report(100);
} }

@ -156,8 +156,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
string[] queries = { string[] queries = {
"create table if not exists TypedBaseItems (guid GUID primary key, type TEXT, data BLOB, ParentId GUID, Path TEXT)", "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 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)", "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_ItemValues4",
"drop index if exists idx_ItemValues5", "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_PresentationUniqueKey on TypedBaseItems(PresentationUniqueKey)",
"create index if not exists idx_GuidTypeIsFolderIsVirtualItem on TypedBaseItems(Guid,Type,IsFolder,IsVirtualItem)", "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)", //"create index if not exists idx_GuidMediaTypeIsFolderIsVirtualItem on TypedBaseItems(Guid,MediaType,IsFolder,IsVirtualItem)",

Loading…
Cancel
Save