Reduce warnings in MediaBrowser.Controller (#6006)
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
This commit is contained in:
parent
a84e8c3884
commit
e3f55a0c54
|
@ -164,7 +164,7 @@ namespace Emby.Server.Implementations.Collections
|
||||||
|
|
||||||
parentFolder.AddChild(collection, CancellationToken.None);
|
parentFolder.AddChild(collection, CancellationToken.None);
|
||||||
|
|
||||||
if (options.ItemIdList.Length > 0)
|
if (options.ItemIdList.Count > 0)
|
||||||
{
|
{
|
||||||
await AddToCollectionAsync(
|
await AddToCollectionAsync(
|
||||||
collection.Id,
|
collection.Id,
|
||||||
|
@ -248,11 +248,7 @@ namespace Emby.Server.Implementations.Collections
|
||||||
|
|
||||||
if (fireEvent)
|
if (fireEvent)
|
||||||
{
|
{
|
||||||
ItemsAddedToCollection?.Invoke(this, new CollectionModifiedEventArgs
|
ItemsAddedToCollection?.Invoke(this, new CollectionModifiedEventArgs(collection, itemList));
|
||||||
{
|
|
||||||
Collection = collection,
|
|
||||||
ItemsChanged = itemList
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,11 +300,7 @@ namespace Emby.Server.Implementations.Collections
|
||||||
},
|
},
|
||||||
RefreshPriority.High);
|
RefreshPriority.High);
|
||||||
|
|
||||||
ItemsRemovedFromCollection?.Invoke(this, new CollectionModifiedEventArgs
|
ItemsRemovedFromCollection?.Invoke(this, new CollectionModifiedEventArgs(collection, itemList));
|
||||||
{
|
|
||||||
Collection = collection,
|
|
||||||
ItemsChanged = itemList
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|
|
@ -191,7 +191,7 @@ namespace Emby.Server.Implementations.Images
|
||||||
InputPaths = GetStripCollageImagePaths(primaryItem, items).ToArray()
|
InputPaths = GetStripCollageImagePaths(primaryItem, items).ToArray()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (options.InputPaths.Length == 0)
|
if (options.InputPaths.Count == 0)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace Jellyfin.Api.Controllers
|
namespace Jellyfin.Api.Controllers
|
||||||
|
@ -300,9 +301,8 @@ namespace Jellyfin.Api.Controllers
|
||||||
|
|
||||||
private IEnumerable<string> GetActors(IEnumerable<BaseItem> items)
|
private IEnumerable<string> GetActors(IEnumerable<BaseItem> items)
|
||||||
{
|
{
|
||||||
var people = _libraryManager.GetPeople(new InternalPeopleQuery
|
var people = _libraryManager.GetPeople(new InternalPeopleQuery(Array.Empty<string>(), new[] { PersonType.Director })
|
||||||
{
|
{
|
||||||
ExcludePersonTypes = new[] { PersonType.Director },
|
|
||||||
MaxListOrder = 3
|
MaxListOrder = 3
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -316,10 +316,9 @@ namespace Jellyfin.Api.Controllers
|
||||||
|
|
||||||
private IEnumerable<string> GetDirectors(IEnumerable<BaseItem> items)
|
private IEnumerable<string> GetDirectors(IEnumerable<BaseItem> items)
|
||||||
{
|
{
|
||||||
var people = _libraryManager.GetPeople(new InternalPeopleQuery
|
var people = _libraryManager.GetPeople(new InternalPeopleQuery(
|
||||||
{
|
new[] { PersonType.Director },
|
||||||
PersonTypes = new[] { PersonType.Director }
|
Array.Empty<string>()));
|
||||||
});
|
|
||||||
|
|
||||||
var itemIds = items.Select(i => i.Id).ToList();
|
var itemIds = items.Select(i => i.Id).ToList();
|
||||||
|
|
||||||
|
|
|
@ -94,10 +94,10 @@ namespace Jellyfin.Api.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
var isFavoriteInFilters = filters.Any(f => f == ItemFilter.IsFavorite);
|
var isFavoriteInFilters = filters.Any(f => f == ItemFilter.IsFavorite);
|
||||||
var peopleItems = _libraryManager.GetPeopleItems(new InternalPeopleQuery
|
var peopleItems = _libraryManager.GetPeopleItems(new InternalPeopleQuery(
|
||||||
|
personTypes,
|
||||||
|
excludePersonTypes)
|
||||||
{
|
{
|
||||||
PersonTypes = personTypes,
|
|
||||||
ExcludePersonTypes = excludePersonTypes,
|
|
||||||
NameContains = searchTerm,
|
NameContains = searchTerm,
|
||||||
User = user,
|
User = user,
|
||||||
IsFavorite = !isFavorite.HasValue && isFavoriteInFilters ? true : isFavorite,
|
IsFavorite = !isFavorite.HasValue && isFavoriteInFilters ? true : isFavorite,
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace Jellyfin.Drawing.Skia
|
||||||
/// <param name="outputPath">The path at which to place the resulting collage image.</param>
|
/// <param name="outputPath">The path at which to place the resulting collage image.</param>
|
||||||
/// <param name="width">The desired width of the collage.</param>
|
/// <param name="width">The desired width of the collage.</param>
|
||||||
/// <param name="height">The desired height of the collage.</param>
|
/// <param name="height">The desired height of the collage.</param>
|
||||||
public void BuildSquareCollage(string[] paths, string outputPath, int width, int height)
|
public void BuildSquareCollage(IReadOnlyList<string> paths, string outputPath, int width, int height)
|
||||||
{
|
{
|
||||||
using var bitmap = BuildSquareCollageBitmap(paths, width, height);
|
using var bitmap = BuildSquareCollageBitmap(paths, width, height);
|
||||||
using var outputStream = new SKFileWStream(outputPath);
|
using var outputStream = new SKFileWStream(outputPath);
|
||||||
|
@ -84,7 +84,7 @@ namespace Jellyfin.Drawing.Skia
|
||||||
/// <param name="width">The desired width of the collage.</param>
|
/// <param name="width">The desired width of the collage.</param>
|
||||||
/// <param name="height">The desired height of the collage.</param>
|
/// <param name="height">The desired height of the collage.</param>
|
||||||
/// <param name="libraryName">The name of the library to draw on the collage.</param>
|
/// <param name="libraryName">The name of the library to draw on the collage.</param>
|
||||||
public void BuildThumbCollage(string[] paths, string outputPath, int width, int height, string? libraryName)
|
public void BuildThumbCollage(IReadOnlyList<string> paths, string outputPath, int width, int height, string? libraryName)
|
||||||
{
|
{
|
||||||
using var bitmap = BuildThumbCollageBitmap(paths, width, height, libraryName);
|
using var bitmap = BuildThumbCollageBitmap(paths, width, height, libraryName);
|
||||||
using var outputStream = new SKFileWStream(outputPath);
|
using var outputStream = new SKFileWStream(outputPath);
|
||||||
|
@ -92,7 +92,7 @@ namespace Jellyfin.Drawing.Skia
|
||||||
pixmap.Encode(outputStream, GetEncodedFormat(outputPath), 90);
|
pixmap.Encode(outputStream, GetEncodedFormat(outputPath), 90);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SKBitmap BuildThumbCollageBitmap(string[] paths, int width, int height, string? libraryName)
|
private SKBitmap BuildThumbCollageBitmap(IReadOnlyList<string> paths, int width, int height, string? libraryName)
|
||||||
{
|
{
|
||||||
var bitmap = new SKBitmap(width, height);
|
var bitmap = new SKBitmap(width, height);
|
||||||
|
|
||||||
|
@ -152,14 +152,14 @@ namespace Jellyfin.Drawing.Skia
|
||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SKBitmap? GetNextValidImage(string[] paths, int currentIndex, out int newIndex)
|
private SKBitmap? GetNextValidImage(IReadOnlyList<string> paths, int currentIndex, out int newIndex)
|
||||||
{
|
{
|
||||||
var imagesTested = new Dictionary<int, int>();
|
var imagesTested = new Dictionary<int, int>();
|
||||||
SKBitmap? bitmap = null;
|
SKBitmap? bitmap = null;
|
||||||
|
|
||||||
while (imagesTested.Count < paths.Length)
|
while (imagesTested.Count < paths.Count)
|
||||||
{
|
{
|
||||||
if (currentIndex >= paths.Length)
|
if (currentIndex >= paths.Count)
|
||||||
{
|
{
|
||||||
currentIndex = 0;
|
currentIndex = 0;
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,7 @@ namespace Jellyfin.Drawing.Skia
|
||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SKBitmap BuildSquareCollageBitmap(string[] paths, int width, int height)
|
private SKBitmap BuildSquareCollageBitmap(IReadOnlyList<string> paths, int width, int height)
|
||||||
{
|
{
|
||||||
var bitmap = new SKBitmap(width, height);
|
var bitmap = new SKBitmap(width, height);
|
||||||
var imageIndex = 0;
|
var imageIndex = 0;
|
||||||
|
|
|
@ -13,6 +13,19 @@ namespace MediaBrowser.Controller.Channels
|
||||||
{
|
{
|
||||||
public class ChannelItemInfo : IHasProviderIds
|
public class ChannelItemInfo : IHasProviderIds
|
||||||
{
|
{
|
||||||
|
public ChannelItemInfo()
|
||||||
|
{
|
||||||
|
MediaSources = new List<MediaSourceInfo>();
|
||||||
|
TrailerTypes = new List<TrailerType>();
|
||||||
|
Genres = new List<string>();
|
||||||
|
Studios = new List<string>();
|
||||||
|
People = new List<PersonInfo>();
|
||||||
|
Tags = new List<string>();
|
||||||
|
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
Artists = new List<string>();
|
||||||
|
AlbumArtists = new List<string>();
|
||||||
|
}
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
public string SeriesName { get; set; }
|
public string SeriesName { get; set; }
|
||||||
|
@ -80,18 +93,5 @@ namespace MediaBrowser.Controller.Channels
|
||||||
public bool IsLiveStream { get; set; }
|
public bool IsLiveStream { get; set; }
|
||||||
|
|
||||||
public string Etag { get; set; }
|
public string Etag { get; set; }
|
||||||
|
|
||||||
public ChannelItemInfo()
|
|
||||||
{
|
|
||||||
MediaSources = new List<MediaSourceInfo>();
|
|
||||||
TrailerTypes = new List<TrailerType>();
|
|
||||||
Genres = new List<string>();
|
|
||||||
Studios = new List<string>();
|
|
||||||
People = new List<PersonInfo>();
|
|
||||||
Tags = new List<string>();
|
|
||||||
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
Artists = new List<string>();
|
|
||||||
AlbumArtists = new List<string>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,13 +8,13 @@ namespace MediaBrowser.Controller.Channels
|
||||||
{
|
{
|
||||||
public class ChannelItemResult
|
public class ChannelItemResult
|
||||||
{
|
{
|
||||||
public List<ChannelItemInfo> Items { get; set; }
|
|
||||||
|
|
||||||
public int? TotalRecordCount { get; set; }
|
|
||||||
|
|
||||||
public ChannelItemResult()
|
public ChannelItemResult()
|
||||||
{
|
{
|
||||||
Items = new List<ChannelItemInfo>();
|
Items = new List<ChannelItemInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ChannelItemInfo> Items { get; set; }
|
||||||
|
|
||||||
|
public int? TotalRecordCount { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
MediaBrowser.Controller/Channels/ChannelLatestMediaSearch.cs
Normal file
11
MediaBrowser.Controller/Channels/ChannelLatestMediaSearch.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
|
namespace MediaBrowser.Controller.Channels
|
||||||
|
{
|
||||||
|
public class ChannelLatestMediaSearch
|
||||||
|
{
|
||||||
|
public string UserId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,9 +10,4 @@ namespace MediaBrowser.Controller.Channels
|
||||||
|
|
||||||
public string UserId { get; set; }
|
public string UserId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ChannelLatestMediaSearch
|
|
||||||
{
|
|
||||||
public string UserId { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Controller.Collections
|
||||||
|
{
|
||||||
|
public class CollectionCreatedEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the collection.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The collection.</value>
|
||||||
|
public BoxSet Collection { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the options.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The options.</value>
|
||||||
|
public CollectionCreationOptions Options { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,8 +25,8 @@ namespace MediaBrowser.Controller.Collections
|
||||||
|
|
||||||
public Dictionary<string, string> ProviderIds { get; set; }
|
public Dictionary<string, string> ProviderIds { get; set; }
|
||||||
|
|
||||||
public string[] ItemIdList { get; set; }
|
public IReadOnlyList<string> ItemIdList { get; set; }
|
||||||
|
|
||||||
public Guid[] UserIds { get; set; }
|
public IReadOnlyList<Guid> UserIds { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,23 +9,14 @@ using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Collections
|
namespace MediaBrowser.Controller.Collections
|
||||||
{
|
{
|
||||||
public class CollectionCreatedEventArgs : EventArgs
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the collection.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The collection.</value>
|
|
||||||
public BoxSet Collection { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the options.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The options.</value>
|
|
||||||
public CollectionCreationOptions Options { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class CollectionModifiedEventArgs : EventArgs
|
public class CollectionModifiedEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
|
public CollectionModifiedEventArgs(BoxSet collection, IReadOnlyCollection<BaseItem> itemsChanged)
|
||||||
|
{
|
||||||
|
Collection = collection;
|
||||||
|
ItemsChanged = itemsChanged;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the collection.
|
/// Gets or sets the collection.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -36,6 +27,6 @@ namespace MediaBrowser.Controller.Collections
|
||||||
/// Gets or sets the items changed.
|
/// Gets or sets the items changed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The items changed.</value>
|
/// <value>The items changed.</value>
|
||||||
public List<BaseItem> ItemsChanged { get; set; }
|
public IReadOnlyCollection<BaseItem> ItemsChanged { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
#pragma warning disable CS1591
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Drawing
|
namespace MediaBrowser.Controller.Drawing
|
||||||
|
@ -10,7 +12,7 @@ namespace MediaBrowser.Controller.Drawing
|
||||||
/// Gets or sets the input paths.
|
/// Gets or sets the input paths.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The input paths.</value>
|
/// <value>The input paths.</value>
|
||||||
public string[] InputPaths { get; set; }
|
public IReadOnlyList<string> InputPaths { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the output path.
|
/// Gets or sets the output path.
|
||||||
|
|
|
@ -22,9 +22,15 @@ namespace MediaBrowser.Controller.Drawing
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (Stream != null)
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing)
|
||||||
{
|
{
|
||||||
Stream.Dispose();
|
Stream?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,28 @@ namespace MediaBrowser.Controller.Dto
|
||||||
ItemFields.RefreshState
|
ItemFields.RefreshState
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private static readonly ImageType[] AllImageTypes = Enum.GetValues<ImageType>();
|
||||||
|
|
||||||
|
private static readonly ItemFields[] AllItemFields = Enum.GetValues<ItemFields>()
|
||||||
|
.Except(DefaultExcludedFields)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
public DtoOptions()
|
||||||
|
: this(true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public DtoOptions(bool allFields)
|
||||||
|
{
|
||||||
|
ImageTypeLimit = int.MaxValue;
|
||||||
|
EnableImages = true;
|
||||||
|
EnableUserData = true;
|
||||||
|
AddCurrentProgram = true;
|
||||||
|
|
||||||
|
Fields = allFields ? AllItemFields : Array.Empty<ItemFields>();
|
||||||
|
ImageTypes = AllImageTypes;
|
||||||
|
}
|
||||||
|
|
||||||
public IReadOnlyList<ItemFields> Fields { get; set; }
|
public IReadOnlyList<ItemFields> Fields { get; set; }
|
||||||
|
|
||||||
public IReadOnlyList<ImageType> ImageTypes { get; set; }
|
public IReadOnlyList<ImageType> ImageTypes { get; set; }
|
||||||
|
@ -32,34 +54,9 @@ namespace MediaBrowser.Controller.Dto
|
||||||
|
|
||||||
public bool AddCurrentProgram { get; set; }
|
public bool AddCurrentProgram { get; set; }
|
||||||
|
|
||||||
public DtoOptions()
|
|
||||||
: this(true)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private static readonly ImageType[] AllImageTypes = Enum.GetNames(typeof(ImageType))
|
|
||||||
.Select(i => (ImageType)Enum.Parse(typeof(ImageType), i, true))
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
private static readonly ItemFields[] AllItemFields = Enum.GetNames(typeof(ItemFields))
|
|
||||||
.Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
|
|
||||||
.Except(DefaultExcludedFields)
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
public bool ContainsField(ItemFields field)
|
public bool ContainsField(ItemFields field)
|
||||||
=> Fields.Contains(field);
|
=> Fields.Contains(field);
|
||||||
|
|
||||||
public DtoOptions(bool allFields)
|
|
||||||
{
|
|
||||||
ImageTypeLimit = int.MaxValue;
|
|
||||||
EnableImages = true;
|
|
||||||
EnableUserData = true;
|
|
||||||
AddCurrentProgram = true;
|
|
||||||
|
|
||||||
Fields = allFields ? AllItemFields : Array.Empty<ItemFields>();
|
|
||||||
ImageTypes = AllImageTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetImageLimit(ImageType type)
|
public int GetImageLimit(ImageType type)
|
||||||
{
|
{
|
||||||
if (EnableImages && ImageTypes.Contains(type))
|
if (EnableImages && ImageTypes.Contains(type))
|
||||||
|
|
|
@ -86,6 +86,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _requiresRefresh;
|
private bool _requiresRefresh;
|
||||||
|
|
||||||
public override bool RequiresRefresh()
|
public override bool RequiresRefresh()
|
||||||
{
|
{
|
||||||
var changed = base.RequiresRefresh() || _requiresRefresh;
|
var changed = base.RequiresRefresh() || _requiresRefresh;
|
||||||
|
|
|
@ -114,7 +114,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the folder containing the item.
|
/// Gets the folder containing the item.
|
||||||
/// If the item is a folder, it returns the folder itself.
|
/// If the item is a folder, it returns the folder itself.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The containing folder path.</value>
|
/// <value>The containing folder path.</value>
|
||||||
|
|
|
@ -339,9 +339,9 @@ namespace MediaBrowser.Controller.Entities
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
// if (IsOffline)
|
// if (IsOffline)
|
||||||
//{
|
// {
|
||||||
// return LocationType.Offline;
|
// return LocationType.Offline;
|
||||||
//}
|
// }
|
||||||
|
|
||||||
var path = Path;
|
var path = Path;
|
||||||
if (string.IsNullOrEmpty(path))
|
if (string.IsNullOrEmpty(path))
|
||||||
|
@ -2769,11 +2769,11 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
// var parentId = Id;
|
// var parentId = Id;
|
||||||
// if (!video.IsOwnedItem || video.ParentId != parentId)
|
// if (!video.IsOwnedItem || video.ParentId != parentId)
|
||||||
//{
|
// {
|
||||||
// video.IsOwnedItem = true;
|
// video.IsOwnedItem = true;
|
||||||
// video.ParentId = parentId;
|
// video.ParentId = parentId;
|
||||||
// newOptions.ForceSave = true;
|
// newOptions.ForceSave = true;
|
||||||
//}
|
// }
|
||||||
|
|
||||||
if (video == null)
|
if (video == null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,6 +12,11 @@ namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class Book : BaseItem, IHasLookupInfo<BookInfo>, IHasSeries
|
public class Book : BaseItem, IHasLookupInfo<BookInfo>, IHasSeries
|
||||||
{
|
{
|
||||||
|
public Book()
|
||||||
|
{
|
||||||
|
this.RunTimeTicks = TimeSpan.TicksPerSecond;
|
||||||
|
}
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public override string MediaType => Model.Entities.MediaType.Book;
|
public override string MediaType => Model.Entities.MediaType.Book;
|
||||||
|
|
||||||
|
@ -28,11 +33,6 @@ namespace MediaBrowser.Controller.Entities
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public Guid SeriesId { get; set; }
|
public Guid SeriesId { get; set; }
|
||||||
|
|
||||||
public Book()
|
|
||||||
{
|
|
||||||
this.RunTimeTicks = TimeSpan.TicksPerSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string FindSeriesSortName()
|
public string FindSeriesSortName()
|
||||||
{
|
{
|
||||||
return SeriesName;
|
return SeriesName;
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the folder containing the item.
|
/// Gets the folder containing the item.
|
||||||
/// If the item is a folder, it returns the folder itself.
|
/// If the item is a folder, it returns the folder itself.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The containing folder path.</value>
|
/// <value>The containing folder path.</value>
|
||||||
|
|
|
@ -3,12 +3,24 @@
|
||||||
#pragma warning disable CS1591
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using Jellyfin.Data.Entities;
|
using Jellyfin.Data.Entities;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class InternalPeopleQuery
|
public class InternalPeopleQuery
|
||||||
{
|
{
|
||||||
|
public InternalPeopleQuery()
|
||||||
|
: this(Array.Empty<string>(), Array.Empty<string>())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public InternalPeopleQuery(IReadOnlyList<string> personTypes, IReadOnlyList<string> excludePersonTypes)
|
||||||
|
{
|
||||||
|
PersonTypes = personTypes;
|
||||||
|
ExcludePersonTypes = excludePersonTypes;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the maximum number of items the query should return.
|
/// Gets or sets the maximum number of items the query should return.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -16,9 +28,9 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public Guid ItemId { get; set; }
|
public Guid ItemId { get; set; }
|
||||||
|
|
||||||
public string[] PersonTypes { get; set; }
|
public IReadOnlyList<string> PersonTypes { get; }
|
||||||
|
|
||||||
public string[] ExcludePersonTypes { get; set; }
|
public IReadOnlyList<string> ExcludePersonTypes { get; }
|
||||||
|
|
||||||
public int? MaxListOrder { get; set; }
|
public int? MaxListOrder { get; set; }
|
||||||
|
|
||||||
|
@ -29,11 +41,5 @@ namespace MediaBrowser.Controller.Entities
|
||||||
public User User { get; set; }
|
public User User { get; set; }
|
||||||
|
|
||||||
public bool? IsFavorite { get; set; }
|
public bool? IsFavorite { get; set; }
|
||||||
|
|
||||||
public InternalPeopleQuery()
|
|
||||||
{
|
|
||||||
PersonTypes = Array.Empty<string>();
|
|
||||||
ExcludePersonTypes = Array.Empty<string>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,15 +3,18 @@
|
||||||
#pragma warning disable CS1591
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class LinkedChild
|
public class LinkedChild
|
||||||
{
|
{
|
||||||
|
public LinkedChild()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
|
||||||
|
}
|
||||||
|
|
||||||
public string Path { get; set; }
|
public string Path { get; set; }
|
||||||
|
|
||||||
public LinkedChildType Type { get; set; }
|
public LinkedChildType Type { get; set; }
|
||||||
|
@ -22,7 +25,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serves as a cache.
|
/// Gets or sets the linked item id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid? ItemId { get; set; }
|
public Guid? ItemId { get; set; }
|
||||||
|
|
||||||
|
@ -41,41 +44,5 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LinkedChild()
|
|
||||||
{
|
|
||||||
Id = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum LinkedChildType
|
|
||||||
{
|
|
||||||
Manual = 0,
|
|
||||||
Shortcut = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
public class LinkedChildComparer : IEqualityComparer<LinkedChild>
|
|
||||||
{
|
|
||||||
private readonly IFileSystem _fileSystem;
|
|
||||||
|
|
||||||
public LinkedChildComparer(IFileSystem fileSystem)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Equals(LinkedChild x, LinkedChild y)
|
|
||||||
{
|
|
||||||
if (x.Type == y.Type)
|
|
||||||
{
|
|
||||||
return _fileSystem.AreEqual(x.Path, y.Path);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetHashCode(LinkedChild obj)
|
|
||||||
{
|
|
||||||
return ((obj.Path ?? string.Empty) + (obj.LibraryItemId ?? string.Empty) + obj.Type).GetHashCode();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
34
MediaBrowser.Controller/Entities/LinkedChildComparer.cs
Normal file
34
MediaBrowser.Controller/Entities/LinkedChildComparer.cs
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
{
|
||||||
|
public class LinkedChildComparer : IEqualityComparer<LinkedChild>
|
||||||
|
{
|
||||||
|
private readonly IFileSystem _fileSystem;
|
||||||
|
|
||||||
|
public LinkedChildComparer(IFileSystem fileSystem)
|
||||||
|
{
|
||||||
|
_fileSystem = fileSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Equals(LinkedChild x, LinkedChild y)
|
||||||
|
{
|
||||||
|
if (x.Type == y.Type)
|
||||||
|
{
|
||||||
|
return _fileSystem.AreEqual(x.Path, y.Path);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetHashCode(LinkedChild obj)
|
||||||
|
{
|
||||||
|
return ((obj.Path ?? string.Empty) + (obj.LibraryItemId ?? string.Empty) + obj.Type).GetHashCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
MediaBrowser.Controller/Entities/LinkedChildType.cs
Normal file
18
MediaBrowser.Controller/Entities/LinkedChildType.cs
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The linked child type.
|
||||||
|
/// </summary>
|
||||||
|
public enum LinkedChildType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Manually linked child.
|
||||||
|
/// </summary>
|
||||||
|
Manual = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shortcut linked child.
|
||||||
|
/// </summary>
|
||||||
|
Shortcut = 1
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,15 +13,15 @@ namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasLookupInfo<MusicVideoInfo>
|
public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasLookupInfo<MusicVideoInfo>
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
[JsonIgnore]
|
|
||||||
public IReadOnlyList<string> Artists { get; set; }
|
|
||||||
|
|
||||||
public MusicVideo()
|
public MusicVideo()
|
||||||
{
|
{
|
||||||
Artists = Array.Empty<string>();
|
Artists = Array.Empty<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[JsonIgnore]
|
||||||
|
public IReadOnlyList<string> Artists { get; set; }
|
||||||
|
|
||||||
public override UnratedItem GetBlockUnratedType()
|
public override UnratedItem GetBlockUnratedType()
|
||||||
{
|
{
|
||||||
return UnratedItem.Music;
|
return UnratedItem.Music;
|
||||||
|
|
|
@ -4,13 +4,13 @@ namespace MediaBrowser.Controller.Library
|
||||||
{
|
{
|
||||||
public class DeleteOptions
|
public class DeleteOptions
|
||||||
{
|
{
|
||||||
public bool DeleteFileLocation { get; set; }
|
|
||||||
|
|
||||||
public bool DeleteFromExternalProvider { get; set; }
|
|
||||||
|
|
||||||
public DeleteOptions()
|
public DeleteOptions()
|
||||||
{
|
{
|
||||||
DeleteFromExternalProvider = true;
|
DeleteFromExternalProvider = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DeleteFileLocation { get; set; }
|
||||||
|
|
||||||
|
public bool DeleteFromExternalProvider { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,12 @@ namespace MediaBrowser.Controller.Library
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IIntroProvider
|
public interface IIntroProvider
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the name.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The name.</value>
|
||||||
|
string Name { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the intros.
|
/// Gets the intros.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -24,11 +30,5 @@ namespace MediaBrowser.Controller.Library
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>IEnumerable{System.String}.</returns>
|
/// <returns>IEnumerable{System.String}.</returns>
|
||||||
IEnumerable<string> GetAllIntroFiles();
|
IEnumerable<string> GetAllIntroFiles();
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the name.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The name.</value>
|
|
||||||
string Name { get; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,12 +15,12 @@ namespace MediaBrowser.Controller.Library
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The name.
|
/// The name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
readonly string _name;
|
private readonly string _name;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The stopwatch.
|
/// The stopwatch.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
readonly Stopwatch _stopwatch;
|
private readonly Stopwatch _stopwatch;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _logger.
|
/// The _logger.
|
||||||
|
|
19
MediaBrowser.Controller/LiveTv/ActiveRecordingInfo.cs
Normal file
19
MediaBrowser.Controller/LiveTv/ActiveRecordingInfo.cs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Controller.LiveTv
|
||||||
|
{
|
||||||
|
public class ActiveRecordingInfo
|
||||||
|
{
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
public string Path { get; set; }
|
||||||
|
|
||||||
|
public TimerInfo Timer { get; set; }
|
||||||
|
|
||||||
|
public CancellationTokenSource CancellationTokenSource { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,7 +24,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string Number { get; set; }
|
public string Number { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get or sets the Id.
|
/// Gets or sets the Id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The id of the channel.</value>
|
/// <value>The id of the channel.</value>
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
@ -54,13 +54,13 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string ChannelGroup { get; set; }
|
public string ChannelGroup { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Supply the image path if it can be accessed directly from the file system.
|
/// Gets or sets the the image path if it can be accessed directly from the file system.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The image path.</value>
|
/// <value>The image path.</value>
|
||||||
public string ImagePath { get; set; }
|
public string ImagePath { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Supply the image url if it can be downloaded.
|
/// Gets or sets the image url if it can be downloaded.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The image URL.</value>
|
/// <value>The image URL.</value>
|
||||||
public string ImageUrl { get; set; }
|
public string ImageUrl { get; set; }
|
||||||
|
|
|
@ -268,16 +268,21 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
void AddChannelInfo(IReadOnlyCollection<(BaseItemDto, LiveTvChannel)> items, DtoOptions options, User user);
|
void AddChannelInfo(IReadOnlyCollection<(BaseItemDto, LiveTvChannel)> items, DtoOptions options, User user);
|
||||||
|
|
||||||
Task<List<ChannelInfo>> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken);
|
Task<List<ChannelInfo>> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken);
|
||||||
|
|
||||||
Task<List<ChannelInfo>> GetChannelsFromListingsProviderData(string id, CancellationToken cancellationToken);
|
Task<List<ChannelInfo>> GetChannelsFromListingsProviderData(string id, CancellationToken cancellationToken);
|
||||||
|
|
||||||
IListingsProvider[] ListingProviders { get; }
|
IListingsProvider[] ListingProviders { get; }
|
||||||
|
|
||||||
List<NameIdPair> GetTunerHostTypes();
|
List<NameIdPair> GetTunerHostTypes();
|
||||||
|
|
||||||
Task<List<TunerHostInfo>> DiscoverTuners(bool newDevicesOnly, CancellationToken cancellationToken);
|
Task<List<TunerHostInfo>> DiscoverTuners(bool newDevicesOnly, CancellationToken cancellationToken);
|
||||||
|
|
||||||
event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCancelled;
|
event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCancelled;
|
||||||
|
|
||||||
event EventHandler<GenericEventArgs<TimerEventInfo>> TimerCancelled;
|
event EventHandler<GenericEventArgs<TimerEventInfo>> TimerCancelled;
|
||||||
|
|
||||||
event EventHandler<GenericEventArgs<TimerEventInfo>> TimerCreated;
|
event EventHandler<GenericEventArgs<TimerEventInfo>> TimerCreated;
|
||||||
|
|
||||||
event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCreated;
|
event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCreated;
|
||||||
|
|
||||||
string GetEmbyTvActiveRecordingPath(string id);
|
string GetEmbyTvActiveRecordingPath(string id);
|
||||||
|
@ -288,15 +293,4 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
|
|
||||||
List<BaseItem> GetRecordingFolders(User user);
|
List<BaseItem> GetRecordingFolders(User user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ActiveRecordingInfo
|
|
||||||
{
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
public string Path { get; set; }
|
|
||||||
|
|
||||||
public TimerInfo Timer { get; set; }
|
|
||||||
|
|
||||||
public CancellationTokenSource CancellationTokenSource { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public bool IsMovie { get; set; }
|
public bool IsMovie { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is sports.
|
/// Gets a value indicating whether this instance is sports.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is sports; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is sports; otherwise, <c>false</c>.</value>
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
@ -115,35 +115,35 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public bool IsSeries { get; set; }
|
public bool IsSeries { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is live.
|
/// Gets a value indicating whether this instance is live.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is live; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is live; otherwise, <c>false</c>.</value>
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool IsLive => Tags.Contains("Live", StringComparer.OrdinalIgnoreCase);
|
public bool IsLive => Tags.Contains("Live", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is news.
|
/// Gets a value indicating whether this instance is news.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is news; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is news; otherwise, <c>false</c>.</value>
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool IsNews => Tags.Contains("News", StringComparer.OrdinalIgnoreCase);
|
public bool IsNews => Tags.Contains("News", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is kids.
|
/// Gets a value indicating whether this instance is kids.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is kids; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is kids; otherwise, <c>false</c>.</value>
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool IsKids => Tags.Contains("Kids", StringComparer.OrdinalIgnoreCase);
|
public bool IsKids => Tags.Contains("Kids", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is premiere.
|
/// Gets a value indicating whether this instance is premiere.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value>
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool IsPremiere => Tags.Contains("Premiere", StringComparer.OrdinalIgnoreCase);
|
public bool IsPremiere => Tags.Contains("Premiere", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the folder containing the item.
|
/// Gets the folder containing the item.
|
||||||
/// If the item is a folder, it returns the folder itself.
|
/// If the item is a folder, it returns the folder itself.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The containing folder path.</value>
|
/// <value>The containing folder path.</value>
|
||||||
|
|
|
@ -10,8 +10,16 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
{
|
{
|
||||||
public class ProgramInfo
|
public class ProgramInfo
|
||||||
{
|
{
|
||||||
|
public ProgramInfo()
|
||||||
|
{
|
||||||
|
Genres = new List<string>();
|
||||||
|
|
||||||
|
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id of the program.
|
/// Gets or sets the id of the program.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
@ -22,7 +30,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string ChannelId { get; set; }
|
public string ChannelId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Name of the program.
|
/// Gets or sets the name of the program.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
@ -45,17 +53,17 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string ShortOverview { get; set; }
|
public string ShortOverview { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The start date of the program, in UTC.
|
/// Gets or sets the start date of the program, in UTC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime StartDate { get; set; }
|
public DateTime StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The end date of the program, in UTC.
|
/// Gets or sets the end date of the program, in UTC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime EndDate { get; set; }
|
public DateTime EndDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Genre of the program.
|
/// Gets or sets the genre of the program.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> Genres { get; set; }
|
public List<string> Genres { get; set; }
|
||||||
|
|
||||||
|
@ -71,6 +79,9 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// <value><c>true</c> if this instance is hd; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is hd; otherwise, <c>false</c>.</value>
|
||||||
public bool? IsHD { get; set; }
|
public bool? IsHD { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether this instance is 3d.
|
||||||
|
/// </summary>
|
||||||
public bool? Is3D { get; set; }
|
public bool? Is3D { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -100,13 +111,13 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string EpisodeTitle { get; set; }
|
public string EpisodeTitle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Supply the image path if it can be accessed directly from the file system.
|
/// Gets or sets the image path if it can be accessed directly from the file system.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The image path.</value>
|
/// <value>The image path.</value>
|
||||||
public string ImagePath { get; set; }
|
public string ImagePath { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Supply the image url if it can be downloaded.
|
/// Gets or sets the image url if it can be downloaded.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The image URL.</value>
|
/// <value>The image URL.</value>
|
||||||
public string ImageUrl { get; set; }
|
public string ImageUrl { get; set; }
|
||||||
|
@ -212,13 +223,5 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public Dictionary<string, string> ProviderIds { get; set; }
|
public Dictionary<string, string> ProviderIds { get; set; }
|
||||||
|
|
||||||
public Dictionary<string, string> SeriesProviderIds { get; set; }
|
public Dictionary<string, string> SeriesProviderIds { get; set; }
|
||||||
|
|
||||||
public ProgramInfo()
|
|
||||||
{
|
|
||||||
Genres = new List<string>();
|
|
||||||
|
|
||||||
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,13 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
{
|
{
|
||||||
public class RecordingInfo
|
public class RecordingInfo
|
||||||
{
|
{
|
||||||
|
public RecordingInfo()
|
||||||
|
{
|
||||||
|
Genres = new List<string>();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id of the recording.
|
/// Gets or sets the id of the recording.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
@ -28,7 +33,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string TimerId { get; set; }
|
public string TimerId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ChannelId of the recording.
|
/// Gets or sets the channelId of the recording.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ChannelId { get; set; }
|
public string ChannelId { get; set; }
|
||||||
|
|
||||||
|
@ -39,7 +44,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public ChannelType ChannelType { get; set; }
|
public ChannelType ChannelType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Name of the recording.
|
/// Gets or sets the name of the recording.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
@ -62,12 +67,12 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string Overview { get; set; }
|
public string Overview { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The start date of the recording, in UTC.
|
/// Gets or sets the start date of the recording, in UTC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime StartDate { get; set; }
|
public DateTime StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The end date of the recording, in UTC.
|
/// Gets or sets the end date of the recording, in UTC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime EndDate { get; set; }
|
public DateTime EndDate { get; set; }
|
||||||
|
|
||||||
|
@ -84,7 +89,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public RecordingStatus Status { get; set; }
|
public RecordingStatus Status { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Genre of the program.
|
/// Gets or sets the genre of the program.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> Genres { get; set; }
|
public List<string> Genres { get; set; }
|
||||||
|
|
||||||
|
@ -173,13 +178,13 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public float? CommunityRating { get; set; }
|
public float? CommunityRating { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Supply the image path if it can be accessed directly from the file system.
|
/// Gets or sets the image path if it can be accessed directly from the file system.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The image path.</value>
|
/// <value>The image path.</value>
|
||||||
public string ImagePath { get; set; }
|
public string ImagePath { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Supply the image url if it can be downloaded.
|
/// Gets or sets the image url if it can be downloaded.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The image URL.</value>
|
/// <value>The image URL.</value>
|
||||||
public string ImageUrl { get; set; }
|
public string ImageUrl { get; set; }
|
||||||
|
@ -201,10 +206,5 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The date last updated.</value>
|
/// <value>The date last updated.</value>
|
||||||
public DateTime DateLastUpdated { get; set; }
|
public DateTime DateLastUpdated { get; set; }
|
||||||
|
|
||||||
public RecordingInfo()
|
|
||||||
{
|
|
||||||
Genres = new List<string>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,20 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
{
|
{
|
||||||
public class SeriesTimerInfo
|
public class SeriesTimerInfo
|
||||||
{
|
{
|
||||||
|
public SeriesTimerInfo()
|
||||||
|
{
|
||||||
|
Days = new List<DayOfWeek>();
|
||||||
|
SkipEpisodesInLibrary = true;
|
||||||
|
KeepUntil = KeepUntil.UntilDeleted;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id of the recording.
|
/// Gets or sets the id of the recording.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ChannelId of the recording.
|
/// Gets or sets the channelId of the recording.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ChannelId { get; set; }
|
public string ChannelId { get; set; }
|
||||||
|
|
||||||
|
@ -27,24 +34,27 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
public string ProgramId { get; set; }
|
public string ProgramId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Name of the recording.
|
/// Gets or sets the name of the recording.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the service name.
|
||||||
|
/// </summary>
|
||||||
public string ServiceName { get; set; }
|
public string ServiceName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Description of the recording.
|
/// Gets or sets the description of the recording.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Overview { get; set; }
|
public string Overview { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The start date of the recording, in UTC.
|
/// Gets or sets the start date of the recording, in UTC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime StartDate { get; set; }
|
public DateTime StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The end date of the recording, in UTC.
|
/// Gets or sets the end date of the recording, in UTC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime EndDate { get; set; }
|
public DateTime EndDate { get; set; }
|
||||||
|
|
||||||
|
@ -113,12 +123,5 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The series identifier.</value>
|
/// <value>The series identifier.</value>
|
||||||
public string SeriesId { get; set; }
|
public string SeriesId { get; set; }
|
||||||
|
|
||||||
public SeriesTimerInfo()
|
|
||||||
{
|
|
||||||
Days = new List<DayOfWeek>();
|
|
||||||
SkipEpisodesInLibrary = true;
|
|
||||||
KeepUntil = KeepUntil.UntilDeleted;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
|
||||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All"/>
|
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
|
||||||
<PackageReference Include="System.Threading.Tasks.Dataflow" Version="5.0.0" />
|
<PackageReference Include="System.Threading.Tasks.Dataflow" Version="5.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace MediaBrowser.Controller.Net
|
||||||
DateTime LastKeepAliveDate { get; set; }
|
DateTime LastKeepAliveDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the query string.
|
/// Gets the query string.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The query string.</value>
|
/// <value>The query string.</value>
|
||||||
IQueryCollection QueryString { get; }
|
IQueryCollection QueryString { get; }
|
||||||
|
|
|
@ -7,6 +7,13 @@ namespace MediaBrowser.Controller.Providers
|
||||||
{
|
{
|
||||||
public class AlbumInfo : ItemLookupInfo
|
public class AlbumInfo : ItemLookupInfo
|
||||||
{
|
{
|
||||||
|
public AlbumInfo()
|
||||||
|
{
|
||||||
|
ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
SongInfos = new List<SongInfo>();
|
||||||
|
AlbumArtists = Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the album artist.
|
/// Gets or sets the album artist.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -20,12 +27,5 @@ namespace MediaBrowser.Controller.Providers
|
||||||
public Dictionary<string, string> ArtistProviderIds { get; set; }
|
public Dictionary<string, string> ArtistProviderIds { get; set; }
|
||||||
|
|
||||||
public List<SongInfo> SongInfos { get; set; }
|
public List<SongInfo> SongInfos { get; set; }
|
||||||
|
|
||||||
public AlbumInfo()
|
|
||||||
{
|
|
||||||
ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
SongInfos = new List<SongInfo>();
|
|
||||||
AlbumArtists = Array.Empty<string>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,11 @@ namespace MediaBrowser.Controller.Providers
|
||||||
{
|
{
|
||||||
public class ArtistInfo : ItemLookupInfo
|
public class ArtistInfo : ItemLookupInfo
|
||||||
{
|
{
|
||||||
public List<SongInfo> SongInfos { get; set; }
|
|
||||||
|
|
||||||
public ArtistInfo()
|
public ArtistInfo()
|
||||||
{
|
{
|
||||||
SongInfos = new List<SongInfo>();
|
SongInfos = new List<SongInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<SongInfo> SongInfos { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,11 @@ namespace MediaBrowser.Controller.Providers
|
||||||
{
|
{
|
||||||
public class EpisodeInfo : ItemLookupInfo
|
public class EpisodeInfo : ItemLookupInfo
|
||||||
{
|
{
|
||||||
|
public EpisodeInfo()
|
||||||
|
{
|
||||||
|
SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
public Dictionary<string, string> SeriesProviderIds { get; set; }
|
public Dictionary<string, string> SeriesProviderIds { get; set; }
|
||||||
|
|
||||||
public int? IndexNumberEnd { get; set; }
|
public int? IndexNumberEnd { get; set; }
|
||||||
|
@ -16,10 +21,5 @@ namespace MediaBrowser.Controller.Providers
|
||||||
public bool IsMissingEpisode { get; set; }
|
public bool IsMissingEpisode { get; set; }
|
||||||
|
|
||||||
public string SeriesDisplayOrder { get; set; }
|
public string SeriesDisplayOrder { get; set; }
|
||||||
|
|
||||||
public EpisodeInfo()
|
|
||||||
{
|
|
||||||
SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,12 @@ namespace MediaBrowser.Controller.Providers
|
||||||
{
|
{
|
||||||
public interface IMetadataService
|
public interface IMetadataService
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the order.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The order.</value>
|
||||||
|
int Order { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Determines whether this instance can refresh the specified item.
|
/// Determines whether this instance can refresh the specified item.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -27,11 +33,5 @@ namespace MediaBrowser.Controller.Providers
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
Task<ItemUpdateType> RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken);
|
Task<ItemUpdateType> RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the order.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The order.</value>
|
|
||||||
int Order { get; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,11 +191,4 @@ namespace MediaBrowser.Controller.Providers
|
||||||
|
|
||||||
double? GetRefreshProgress(Guid id);
|
double? GetRefreshProgress(Guid id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum RefreshPriority
|
|
||||||
{
|
|
||||||
High = 0,
|
|
||||||
Normal = 1,
|
|
||||||
Low = 2
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,12 @@ namespace MediaBrowser.Controller.Providers
|
||||||
{
|
{
|
||||||
public class ItemLookupInfo : IHasProviderIds
|
public class ItemLookupInfo : IHasProviderIds
|
||||||
{
|
{
|
||||||
|
public ItemLookupInfo()
|
||||||
|
{
|
||||||
|
IsAutomated = true;
|
||||||
|
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the name.
|
/// Gets or sets the name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -53,11 +59,5 @@ namespace MediaBrowser.Controller.Providers
|
||||||
public DateTime? PremiereDate { get; set; }
|
public DateTime? PremiereDate { get; set; }
|
||||||
|
|
||||||
public bool IsAutomated { get; set; }
|
public bool IsAutomated { get; set; }
|
||||||
|
|
||||||
public ItemLookupInfo()
|
|
||||||
{
|
|
||||||
IsAutomated = true;
|
|
||||||
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,21 +11,6 @@ namespace MediaBrowser.Controller.Providers
|
||||||
{
|
{
|
||||||
public class MetadataRefreshOptions : ImageRefreshOptions
|
public class MetadataRefreshOptions : ImageRefreshOptions
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// When paired with MetadataRefreshMode=FullRefresh, all existing data will be overwritten with new data from the providers.
|
|
||||||
/// </summary>
|
|
||||||
public bool ReplaceAllMetadata { get; set; }
|
|
||||||
|
|
||||||
public MetadataRefreshMode MetadataRefreshMode { get; set; }
|
|
||||||
|
|
||||||
public RemoteSearchResult SearchResult { get; set; }
|
|
||||||
|
|
||||||
public string[] RefreshPaths { get; set; }
|
|
||||||
|
|
||||||
public bool ForceSave { get; set; }
|
|
||||||
|
|
||||||
public bool EnableRemoteContentProbe { get; set; }
|
|
||||||
|
|
||||||
public MetadataRefreshOptions(IDirectoryService directoryService)
|
public MetadataRefreshOptions(IDirectoryService directoryService)
|
||||||
: base(directoryService)
|
: base(directoryService)
|
||||||
{
|
{
|
||||||
|
@ -53,6 +38,22 @@ namespace MediaBrowser.Controller.Providers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether all existing data should be overwritten with new data from providers
|
||||||
|
/// when paired with MetadataRefreshMode=FullRefresh
|
||||||
|
/// </summary>
|
||||||
|
public bool ReplaceAllMetadata { get; set; }
|
||||||
|
|
||||||
|
public MetadataRefreshMode MetadataRefreshMode { get; set; }
|
||||||
|
|
||||||
|
public RemoteSearchResult SearchResult { get; set; }
|
||||||
|
|
||||||
|
public string[] RefreshPaths { get; set; }
|
||||||
|
|
||||||
|
public bool ForceSave { get; set; }
|
||||||
|
|
||||||
|
public bool EnableRemoteContentProbe { get; set; }
|
||||||
|
|
||||||
public bool RefreshItem(BaseItem item)
|
public bool RefreshItem(BaseItem item)
|
||||||
{
|
{
|
||||||
if (RefreshPaths != null && RefreshPaths.Length > 0)
|
if (RefreshPaths != null && RefreshPaths.Length > 0)
|
||||||
|
|
23
MediaBrowser.Controller/Providers/RefreshPriority.cs
Normal file
23
MediaBrowser.Controller/Providers/RefreshPriority.cs
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
namespace MediaBrowser.Controller.Providers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Provider refresh priority.
|
||||||
|
/// </summary>
|
||||||
|
public enum RefreshPriority
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// High priority.
|
||||||
|
/// </summary>
|
||||||
|
High = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Normal priority.
|
||||||
|
/// </summary>
|
||||||
|
Normal = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Low priority.
|
||||||
|
/// </summary>
|
||||||
|
Low = 2
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Providers
|
||||||
public Guid ItemId { get; set; }
|
public Guid ItemId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Will only search within the given provider when set.
|
/// Gets or sets the provider name to search within if set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string SearchProviderName { get; set; }
|
public string SearchProviderName { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -7,11 +7,11 @@ namespace MediaBrowser.Controller.Providers
|
||||||
{
|
{
|
||||||
public class SeasonInfo : ItemLookupInfo
|
public class SeasonInfo : ItemLookupInfo
|
||||||
{
|
{
|
||||||
public Dictionary<string, string> SeriesProviderIds { get; set; }
|
|
||||||
|
|
||||||
public SeasonInfo()
|
public SeasonInfo()
|
||||||
{
|
{
|
||||||
SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, string> SeriesProviderIds { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ using MediaBrowser.Model.IO;
|
||||||
namespace MediaBrowser.Controller.Resolvers
|
namespace MediaBrowser.Controller.Resolvers
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides a base "rule" that anyone can use to have paths ignored by the resolver
|
/// Provides a base "rule" that anyone can use to have paths ignored by the resolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IResolverIgnoreRule
|
public interface IResolverIgnoreRule
|
||||||
{
|
{
|
||||||
|
|
|
@ -346,21 +346,19 @@ namespace MediaBrowser.Controller.Session
|
||||||
/// Logouts the specified access token.
|
/// Logouts the specified access token.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="accessToken">The access token.</param>
|
/// <param name="accessToken">The access token.</param>
|
||||||
/// <returns>Task.</returns>
|
|
||||||
void Logout(string accessToken);
|
void Logout(string accessToken);
|
||||||
|
|
||||||
void Logout(AuthenticationInfo accessToken);
|
void Logout(AuthenticationInfo accessToken);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Revokes the user tokens.
|
/// Revokes the user tokens.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Task.</returns>
|
|
||||||
void RevokeUserTokens(Guid userId, string currentAccessToken);
|
void RevokeUserTokens(Guid userId, string currentAccessToken);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Revokes the token.
|
/// Revokes the token.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">The identifier.</param>
|
/// <param name="id">The identifier.</param>
|
||||||
/// <returns>Task.</returns>
|
|
||||||
void RevokeToken(string id);
|
void RevokeToken(string id);
|
||||||
|
|
||||||
void CloseIfNeeded(SessionInfo session);
|
void CloseIfNeeded(SessionInfo session);
|
||||||
|
|
|
@ -54,7 +54,7 @@ namespace MediaBrowser.Controller.Session
|
||||||
public string RemoteEndPoint { get; set; }
|
public string RemoteEndPoint { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the playable media types.
|
/// Gets the playable media types.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The playable media types.</value>
|
/// <value>The playable media types.</value>
|
||||||
public IReadOnlyList<string> PlayableMediaTypes
|
public IReadOnlyList<string> PlayableMediaTypes
|
||||||
|
@ -230,7 +230,7 @@ namespace MediaBrowser.Controller.Session
|
||||||
public string UserPrimaryImageTag { get; set; }
|
public string UserPrimaryImageTag { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the supported commands.
|
/// Gets the supported commands.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The supported commands.</value>
|
/// <value>The supported commands.</value>
|
||||||
public IReadOnlyList<GeneralCommandType> SupportedCommands
|
public IReadOnlyList<GeneralCommandType> SupportedCommands
|
||||||
|
|
Loading…
Reference in New Issue
Block a user