aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Core/Data/SqliteItemRepository.cs87
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs35
-rw-r--r--MediaBrowser.Api/ItemLookupService.cs3
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvProgram.cs4
-rw-r--r--MediaBrowser.Controller/Providers/ImageRefreshOptions.cs1
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs16
6 files changed, 49 insertions, 97 deletions
diff --git a/Emby.Server.Core/Data/SqliteItemRepository.cs b/Emby.Server.Core/Data/SqliteItemRepository.cs
index 91c46222b..ed03c0f67 100644
--- a/Emby.Server.Core/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Core/Data/SqliteItemRepository.cs
@@ -87,9 +87,6 @@ namespace Emby.Server.Core.Data
private IDbCommand _deleteItemValuesCommand;
private IDbCommand _saveItemValuesCommand;
- private IDbCommand _deleteImagesCommand;
- private IDbCommand _saveImagesCommand;
-
private IDbCommand _updateInheritedTagsCommand;
public const int LatestSchemaVersion = 109;
@@ -162,9 +159,6 @@ namespace Emby.Server.Core.Data
"create table if not exists ItemValues (ItemId GUID, Type INT, Value TEXT, CleanValue TEXT)",
- "create table if not exists Images (ItemId GUID NOT NULL, Path TEXT NOT NULL, ImageType INT NOT NULL, DateModified DATETIME, IsPlaceHolder BIT NOT NULL, SortOrder INT)",
- "create index if not exists idx_Images on Images(ItemId)",
-
"create table if not exists People (ItemId GUID, Name TEXT NOT NULL, Role TEXT, PersonType TEXT, SortOrder int, ListOrder int)",
"drop index if exists idxPeopleItemId",
@@ -309,6 +303,8 @@ namespace Emby.Server.Core.Data
"drop table if exists UserDataKeys",
"drop table if exists ProviderIds",
"drop index if exists Idx_ProviderIds1",
+ "drop table if exists Images",
+ "drop index if exists idx_Images",
"create index if not exists idx_PathTypedBaseItems on TypedBaseItems(Path)",
"create index if not exists idx_ParentIdTypedBaseItems on TypedBaseItems(ParentId)",
@@ -664,20 +660,6 @@ namespace Emby.Server.Core.Data
_saveItemValuesCommand.Parameters.Add(_saveItemValuesCommand, "@Type");
_saveItemValuesCommand.Parameters.Add(_saveItemValuesCommand, "@Value");
_saveItemValuesCommand.Parameters.Add(_saveItemValuesCommand, "@CleanValue");
-
- // images
- _deleteImagesCommand = _connection.CreateCommand();
- _deleteImagesCommand.CommandText = "delete from Images where ItemId=@Id";
- _deleteImagesCommand.Parameters.Add(_deleteImagesCommand, "@Id");
-
- _saveImagesCommand = _connection.CreateCommand();
- _saveImagesCommand.CommandText = "insert into Images (ItemId, ImageType, Path, DateModified, IsPlaceHolder, SortOrder) values (@ItemId, @ImageType, @Path, @DateModified, @IsPlaceHolder, @SortOrder)";
- _saveImagesCommand.Parameters.Add(_saveImagesCommand, "@ItemId");
- _saveImagesCommand.Parameters.Add(_saveImagesCommand, "@ImageType");
- _saveImagesCommand.Parameters.Add(_saveImagesCommand, "@Path");
- _saveImagesCommand.Parameters.Add(_saveImagesCommand, "@DateModified");
- _saveImagesCommand.Parameters.Add(_saveImagesCommand, "@IsPlaceHolder");
- _saveImagesCommand.Parameters.Add(_saveImagesCommand, "@SortOrder");
}
/// <summary>
@@ -1101,7 +1083,6 @@ namespace Emby.Server.Core.Data
UpdateAncestors(item.Id, item.GetAncestorIds().Distinct().ToList(), transaction);
}
- UpdateImages(item.Id, item.ImageInfos, transaction);
UpdateItemValues(item.Id, GetItemValuesToSave(item), transaction);
}
@@ -3475,14 +3456,9 @@ namespace Emby.Server.Core.Data
if (query.ImageTypes.Length > 0 && _config.Configuration.SchemaVersion >= 87)
{
- var requiredImageIndex = 0;
-
foreach (var requiredImage in query.ImageTypes)
{
- var paramName = "@RequiredImageType" + requiredImageIndex;
- whereClauses.Add("(select path from images where ItemId=Guid and ImageType=" + paramName + " limit 1) not null");
- cmd.Parameters.Add(cmd, paramName, DbType.Int32).Value = (int)requiredImage;
- requiredImageIndex++;
+ whereClauses.Add("Images like '%" + requiredImage + "%'");
}
}
@@ -4255,11 +4231,6 @@ namespace Emby.Server.Core.Data
_deleteItemValuesCommand.Transaction = transaction;
_deleteItemValuesCommand.ExecuteNonQuery();
- // Delete images
- _deleteImagesCommand.GetParameter(0).Value = id;
- _deleteImagesCommand.Transaction = transaction;
- _deleteImagesCommand.ExecuteNonQuery();
-
// Delete the item
_deleteItemCommand.GetParameter(0).Value = id;
_deleteItemCommand.Transaction = transaction;
@@ -4875,58 +4846,6 @@ namespace Emby.Server.Core.Data
return list;
}
- private void UpdateImages(Guid itemId, List<ItemImageInfo> images, IDbTransaction transaction)
- {
- if (itemId == Guid.Empty)
- {
- throw new ArgumentNullException("itemId");
- }
-
- if (images == null)
- {
- throw new ArgumentNullException("images");
- }
-
- CheckDisposed();
-
- // First delete
- _deleteImagesCommand.GetParameter(0).Value = itemId;
- _deleteImagesCommand.Transaction = transaction;
-
- _deleteImagesCommand.ExecuteNonQuery();
-
- var index = 0;
- foreach (var image in images)
- {
- if (string.IsNullOrWhiteSpace(image.Path))
- {
- // Invalid
- continue;
- }
-
- _saveImagesCommand.GetParameter(0).Value = itemId;
- _saveImagesCommand.GetParameter(1).Value = image.Type;
- _saveImagesCommand.GetParameter(2).Value = image.Path;
-
- if (image.DateModified == default(DateTime))
- {
- _saveImagesCommand.GetParameter(3).Value = null;
- }
- else
- {
- _saveImagesCommand.GetParameter(3).Value = image.DateModified;
- }
-
- _saveImagesCommand.GetParameter(4).Value = image.IsPlaceholder;
- _saveImagesCommand.GetParameter(5).Value = index;
-
- _saveImagesCommand.Transaction = transaction;
-
- _saveImagesCommand.ExecuteNonQuery();
- index++;
- }
- }
-
private void UpdateItemValues(Guid itemId, List<Tuple<int, string>> values, IDbTransaction transaction)
{
if (itemId == Guid.Empty)
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
index d3e30a46b..5fa3995e6 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -13,6 +13,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Entities.TV;
namespace Emby.Server.Implementations.LiveTv
{
@@ -130,6 +131,38 @@ namespace Emby.Server.Implementations.LiveTv
dto.DayPattern = info.Days == null ? null : GetDayPattern(info.Days);
+ FillImages(dto, info);
+
+ return dto;
+ }
+
+ private void FillImages(SeriesTimerInfoDto dto, SeriesTimerInfo info)
+ {
+ var librarySeries = _libraryManager.GetItemList(new InternalItemsQuery
+ {
+ IncludeItemTypes = new string[] { typeof(Series).Name },
+ Name = info.Name,
+ Limit = 1,
+ ImageTypes = new ImageType[] { ImageType.Thumb }
+
+ }).FirstOrDefault();
+
+ if (librarySeries != null)
+ {
+ var image = librarySeries.GetImageInfo(ImageType.Thumb, 0);
+ if (image != null)
+ {
+ try
+ {
+ dto.ParentThumbImageTag = _imageProcessor.GetImageCacheTag(librarySeries, image);
+ dto.ParentThumbItemId = librarySeries.Id.ToString("N");
+ }
+ catch (Exception ex)
+ {
+ }
+ }
+ }
+
if (!string.IsNullOrWhiteSpace(info.SeriesId))
{
var program = _libraryManager.GetItemList(new InternalItemsQuery
@@ -157,8 +190,6 @@ namespace Emby.Server.Implementations.LiveTv
}
}
}
-
- return dto;
}
public DayPattern? GetDayPattern(List<DayOfWeek> days)
diff --git a/MediaBrowser.Api/ItemLookupService.cs b/MediaBrowser.Api/ItemLookupService.cs
index 1700a10cd..0ae1fbff4 100644
--- a/MediaBrowser.Api/ItemLookupService.cs
+++ b/MediaBrowser.Api/ItemLookupService.cs
@@ -227,7 +227,8 @@ namespace MediaBrowser.Api
ImageRefreshMode = ImageRefreshMode.FullRefresh,
ReplaceAllMetadata = true,
ReplaceAllImages = request.ReplaceAllImages,
- SearchResult = request
+ SearchResult = request,
+ ForceEnableInternetMetadata = true
}, CancellationToken.None);
Task.WaitAll(task);
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
index 08fcc0035..ffb6a7555 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
@@ -264,9 +264,9 @@ namespace MediaBrowser.Controller.LiveTv
if (listings != null)
{
- if (!string.IsNullOrWhiteSpace(listings.MoviePrefix))
+ if (!string.IsNullOrWhiteSpace(listings.MoviePrefix) && name.StartsWith(listings.MoviePrefix, StringComparison.OrdinalIgnoreCase))
{
- name = name.Replace(listings.MoviePrefix, string.Empty, StringComparison.OrdinalIgnoreCase).Trim();
+ name = name.Substring(listings.MoviePrefix.Length).Trim();
}
}
diff --git a/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs b/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs
index 9b21a2972..691ce1ab0 100644
--- a/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs
+++ b/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs
@@ -12,6 +12,7 @@ namespace MediaBrowser.Controller.Providers
public List<ImageType> ReplaceImages { get; set; }
public bool IsAutomated { get; set; }
+ public bool ForceEnableInternetMetadata { get; set; }
public ImageRefreshOptions(IDirectoryService directoryService)
{
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 5e00b356a..a2f3d0459 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -272,17 +272,17 @@ namespace MediaBrowser.Providers.Manager
{
var options = GetMetadataOptions(item);
- return GetMetadataProvidersInternal<T>(item, options, false, true);
+ return GetMetadataProvidersInternal<T>(item, options, false, false, true);
}
- private IEnumerable<IMetadataProvider<T>> GetMetadataProvidersInternal<T>(IHasMetadata item, MetadataOptions options, bool includeDisabled, bool checkIsOwnedItem)
+ private IEnumerable<IMetadataProvider<T>> GetMetadataProvidersInternal<T>(IHasMetadata item, MetadataOptions options, bool includeDisabled, bool forceEnableInternetMetadata, bool checkIsOwnedItem)
where T : IHasMetadata
{
// Avoid implicitly captured closure
var currentOptions = options;
return _metadataProviders.OfType<IMetadataProvider<T>>()
- .Where(i => CanRefresh(i, item, currentOptions, includeDisabled, checkIsOwnedItem))
+ .Where(i => CanRefresh(i, item, currentOptions, includeDisabled, forceEnableInternetMetadata, checkIsOwnedItem))
.OrderBy(i => GetConfiguredOrder(i, options))
.ThenBy(GetDefaultOrder);
}
@@ -294,7 +294,7 @@ namespace MediaBrowser.Providers.Manager
return GetImageProviders(item, options, new ImageRefreshOptions(new DirectoryService(_logger, _fileSystem)), includeDisabled).OfType<IRemoteImageProvider>();
}
- private bool CanRefresh(IMetadataProvider provider, IHasMetadata item, MetadataOptions options, bool includeDisabled, bool checkIsOwnedItem)
+ private bool CanRefresh(IMetadataProvider provider, IHasMetadata item, MetadataOptions options, bool includeDisabled, bool forceEnableInternetMetadata, bool checkIsOwnedItem)
{
if (!includeDisabled)
{
@@ -306,7 +306,7 @@ namespace MediaBrowser.Providers.Manager
if (provider is IRemoteMetadataProvider)
{
- if (!item.IsInternetMetadataEnabled())
+ if (!forceEnableInternetMetadata && !item.IsInternetMetadataEnabled())
{
return false;
}
@@ -357,7 +357,7 @@ namespace MediaBrowser.Providers.Manager
if (provider is IRemoteImageProvider)
{
- if (!item.IsInternetMetadataEnabled())
+ if (!refreshOptions.ForceEnableInternetMetadata && !item.IsInternetMetadataEnabled())
{
return false;
}
@@ -501,7 +501,7 @@ namespace MediaBrowser.Providers.Manager
private void AddMetadataPlugins<T>(List<MetadataPlugin> list, T item, MetadataOptions options)
where T : IHasMetadata
{
- var providers = GetMetadataProvidersInternal<T>(item, options, true, false).ToList();
+ var providers = GetMetadataProvidersInternal<T>(item, options, true, false, false).ToList();
// Locals
list.AddRange(providers.Where(i => (i is ILocalMetadataProvider)).Select(i => new MetadataPlugin
@@ -715,7 +715,7 @@ namespace MediaBrowser.Providers.Manager
var options = GetMetadataOptions(dummy);
- var providers = GetMetadataProvidersInternal<TItemType>(dummy, options, searchInfo.IncludeDisabledProviders, false)
+ var providers = GetMetadataProvidersInternal<TItemType>(dummy, options, searchInfo.IncludeDisabledProviders, false, false)
.OfType<IRemoteSearchProvider<TLookupType>>();
if (!string.IsNullOrEmpty(searchInfo.SearchProviderName))