Merge pull request #1898 from Bond-009/jsonfix
Fix Json serialization error
This commit is contained in:
commit
91600b1c81
|
@ -1,9 +1,9 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Playlists;
|
using MediaBrowser.Controller.Playlists;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Playlists
|
namespace Emby.Server.Implementations.Playlists
|
||||||
{
|
{
|
||||||
|
@ -24,13 +24,13 @@ namespace Emby.Server.Implementations.Playlists
|
||||||
return base.GetEligibleChildrenForRecursiveChildren(user).OfType<Playlist>();
|
return base.GetEligibleChildrenForRecursiveChildren(user).OfType<Playlist>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsHidden => true;
|
public override bool IsHidden => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string CollectionType => MediaBrowser.Model.Entities.CollectionType.Playlists;
|
public override string CollectionType => MediaBrowser.Model.Entities.CollectionType.Playlists;
|
||||||
|
|
||||||
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
|
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Services
|
namespace Emby.Server.Implementations.Services
|
||||||
{
|
{
|
||||||
|
@ -28,6 +29,13 @@ namespace Emby.Server.Implementations.Services
|
||||||
private readonly bool[] isWildcard;
|
private readonly bool[] isWildcard;
|
||||||
private readonly int wildcardCount = 0;
|
private readonly int wildcardCount = 0;
|
||||||
|
|
||||||
|
internal static string[] IgnoreAttributesNamed = new[]
|
||||||
|
{
|
||||||
|
nameof(JsonIgnoreAttribute)
|
||||||
|
};
|
||||||
|
|
||||||
|
private static Type _excludeType = typeof(Stream);
|
||||||
|
|
||||||
public int VariableArgsCount { get; set; }
|
public int VariableArgsCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -190,21 +198,12 @@ namespace Emby.Server.Implementations.Services
|
||||||
StringComparer.OrdinalIgnoreCase);
|
StringComparer.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static string[] IgnoreAttributesNamed = new[]
|
|
||||||
{
|
|
||||||
"IgnoreDataMemberAttribute",
|
|
||||||
"JsonIgnoreAttribute"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
private static Type excludeType = typeof(Stream);
|
|
||||||
|
|
||||||
internal static IEnumerable<PropertyInfo> GetSerializableProperties(Type type)
|
internal static IEnumerable<PropertyInfo> GetSerializableProperties(Type type)
|
||||||
{
|
{
|
||||||
foreach (var prop in GetPublicProperties(type))
|
foreach (var prop in GetPublicProperties(type))
|
||||||
{
|
{
|
||||||
if (prop.GetMethod == null
|
if (prop.GetMethod == null
|
||||||
|| excludeType == prop.PropertyType)
|
|| _excludeType == prop.PropertyType)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.Net.Http.Headers" Version="2.2.0" />
|
<PackageReference Include="Microsoft.Net.Http.Headers" Version="2.2.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="4.6.0" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using MediaBrowser.Common.Progress;
|
using MediaBrowser.Common.Progress;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Channels
|
namespace MediaBrowser.Controller.Channels
|
||||||
{
|
{
|
||||||
|
@ -31,10 +31,10 @@ namespace MediaBrowser.Controller.Channels
|
||||||
return base.IsVisible(user);
|
return base.IsVisible(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override SourceType SourceType => SourceType.Channel;
|
public override SourceType SourceType => SourceType.Channel;
|
||||||
|
|
||||||
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
|
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
|
||||||
|
|
|
@ -2,13 +2,13 @@ using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.IO;
|
using MediaBrowser.Controller.IO;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
PhysicalLocationsList = Array.Empty<string>();
|
PhysicalLocationsList = Array.Empty<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsPhysicalRoot => true;
|
public override bool IsPhysicalRoot => true;
|
||||||
|
|
||||||
public override bool CanDelete()
|
public override bool CanDelete()
|
||||||
|
@ -31,7 +31,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => false;
|
public override bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -45,7 +45,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// <value>The virtual children.</value>
|
/// <value>The virtual children.</value>
|
||||||
public ConcurrentBag<BaseItem> VirtualChildren => _virtualChildren;
|
public ConcurrentBag<BaseItem> VirtualChildren => _virtualChildren;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string[] PhysicalLocations => PhysicalLocationsList;
|
public override string[] PhysicalLocations => PhysicalLocationsList;
|
||||||
|
|
||||||
public string[] PhysicalLocationsList { get; set; }
|
public string[] PhysicalLocationsList { get; set; }
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Audio
|
namespace MediaBrowser.Controller.Entities.Audio
|
||||||
{
|
{
|
||||||
|
@ -21,11 +21,11 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
IHasMediaSources
|
IHasMediaSources
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public IReadOnlyList<string> Artists { get; set; }
|
public IReadOnlyList<string> Artists { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public IReadOnlyList<string> AlbumArtists { get; set; }
|
public IReadOnlyList<string> AlbumArtists { get; set; }
|
||||||
|
|
||||||
public Audio()
|
public Audio()
|
||||||
|
@ -39,22 +39,22 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => true;
|
public override bool SupportsPlayedStatus => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAddingToPlaylist => true;
|
public override bool SupportsAddingToPlaylist => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => true;
|
public override bool SupportsInheritedParentImages => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected override bool SupportsOwnedItems => false;
|
protected override bool SupportsOwnedItems => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override Folder LatestItemsIndexContainer => AlbumEntity;
|
public override Folder LatestItemsIndexContainer => AlbumEntity;
|
||||||
|
|
||||||
public override bool CanDownload()
|
public override bool CanDownload()
|
||||||
|
@ -62,14 +62,14 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return IsFileProtocol;
|
return IsFileProtocol;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public MusicAlbum AlbumEntity => FindParent<MusicAlbum>();
|
public MusicAlbum AlbumEntity => FindParent<MusicAlbum>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the type of the media.
|
/// Gets the type of the media.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The type of the media.</value>
|
/// <value>The type of the media.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string MediaType => Model.Entities.MediaType.Audio;
|
public override string MediaType => Model.Entities.MediaType.Audio;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
|
@ -8,7 +9,6 @@ using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Users;
|
using MediaBrowser.Model.Users;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Audio
|
namespace MediaBrowser.Controller.Entities.Audio
|
||||||
|
@ -30,13 +30,13 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
AlbumArtists = Array.Empty<string>();
|
AlbumArtists = Array.Empty<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAddingToPlaylist => true;
|
public override bool SupportsAddingToPlaylist => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => true;
|
public override bool SupportsInheritedParentImages => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public MusicArtist MusicArtist => GetMusicArtist(new DtoOptions(true));
|
public MusicArtist MusicArtist => GetMusicArtist(new DtoOptions(true));
|
||||||
|
|
||||||
public MusicArtist GetMusicArtist(DtoOptions options)
|
public MusicArtist GetMusicArtist(DtoOptions options)
|
||||||
|
@ -58,23 +58,23 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => false;
|
public override bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsCumulativeRunTimeTicks => true;
|
public override bool SupportsCumulativeRunTimeTicks => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string AlbumArtist => AlbumArtists.FirstOrDefault();
|
public string AlbumArtist => AlbumArtists.FirstOrDefault();
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the tracks.
|
/// Gets the tracks.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The tracks.</value>
|
/// <value>The tracks.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public IEnumerable<Audio> Tracks => GetRecursiveChildren(i => i is Audio).Cast<Audio>();
|
public IEnumerable<Audio> Tracks => GetRecursiveChildren(i => i is Audio).Cast<Audio>();
|
||||||
|
|
||||||
protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user)
|
protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user)
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Extensions;
|
using MediaBrowser.Controller.Extensions;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Users;
|
using MediaBrowser.Model.Users;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
@ -18,25 +18,25 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MusicArtist : Folder, IItemByName, IHasMusicGenres, IHasDualAccess, IHasLookupInfo<ArtistInfo>
|
public class MusicArtist : Folder, IItemByName, IHasMusicGenres, IHasDualAccess, IHasLookupInfo<ArtistInfo>
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsAccessedByName => ParentId.Equals(Guid.Empty);
|
public bool IsAccessedByName => ParentId.Equals(Guid.Empty);
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsFolder => !IsAccessedByName;
|
public override bool IsFolder => !IsAccessedByName;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsCumulativeRunTimeTicks => true;
|
public override bool SupportsCumulativeRunTimeTicks => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsDisplayedAsFolder => true;
|
public override bool IsDisplayedAsFolder => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAddingToPlaylist => true;
|
public override bool SupportsAddingToPlaylist => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => false;
|
public override bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -60,7 +60,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return LibraryManager.GetItemList(query);
|
return LibraryManager.GetItemList(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override IEnumerable<BaseItem> Children
|
public override IEnumerable<BaseItem> Children
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -117,7 +117,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -164,7 +164,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
public static string GetPath(string name)
|
public static string GetPath(string name)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Extensions;
|
using MediaBrowser.Controller.Extensions;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Audio
|
namespace MediaBrowser.Controller.Entities.Audio
|
||||||
|
@ -23,13 +23,13 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return GetUserDataKeys()[0];
|
return GetUserDataKeys()[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAddingToPlaylist => true;
|
public override bool SupportsAddingToPlaylist => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAncestors => false;
|
public override bool SupportsAncestors => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsDisplayedAsFolder => true;
|
public override bool IsDisplayedAsFolder => true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -37,7 +37,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -55,7 +55,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
public IList<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
public IList<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class AudioBook : Audio.Audio, IHasSeries, IHasLookupInfo<SongInfo>
|
public class AudioBook : Audio.Audio, IHasSeries, IHasLookupInfo<SongInfo>
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPositionTicksResume => true;
|
public override bool SupportsPositionTicksResume => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => true;
|
public override bool SupportsPlayedStatus => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesPresentationUniqueKey { get; set; }
|
public string SeriesPresentationUniqueKey { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesName { get; set; }
|
public string SeriesName { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid SeriesId { get; set; }
|
public Guid SeriesId { get; set; }
|
||||||
|
|
||||||
public string FindSeriesSortName()
|
public string FindSeriesSortName()
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common.Extensions;
|
using MediaBrowser.Common.Extensions;
|
||||||
|
@ -25,7 +26,6 @@ using MediaBrowser.Model.Library;
|
||||||
using MediaBrowser.Model.LiveTv;
|
using MediaBrowser.Model.LiveTv;
|
||||||
using MediaBrowser.Model.MediaInfo;
|
using MediaBrowser.Model.MediaInfo;
|
||||||
using MediaBrowser.Model.Providers;
|
using MediaBrowser.Model.Providers;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Users;
|
using MediaBrowser.Model.Users;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// The supported image extensions
|
/// The supported image extensions
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string[] SupportedImageExtensions
|
public static readonly string[] SupportedImageExtensions
|
||||||
= new [] { ".png", ".jpg", ".jpeg", ".tbn", ".gif" };
|
= new[] { ".png", ".jpg", ".jpeg", ".tbn", ".gif" };
|
||||||
|
|
||||||
private static readonly List<string> _supportedExtensions = new List<string>(SupportedImageExtensions)
|
private static readonly List<string> _supportedExtensions = new List<string>(SupportedImageExtensions)
|
||||||
{
|
{
|
||||||
|
@ -98,62 +98,62 @@ namespace MediaBrowser.Controller.Entities
|
||||||
SampleFolderName
|
SampleFolderName
|
||||||
};
|
};
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid[] ThemeSongIds { get; set; }
|
public Guid[] ThemeSongIds { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid[] ThemeVideoIds { get; set; }
|
public Guid[] ThemeVideoIds { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string PreferredMetadataCountryCode { get; set; }
|
public string PreferredMetadataCountryCode { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string PreferredMetadataLanguage { get; set; }
|
public string PreferredMetadataLanguage { get; set; }
|
||||||
|
|
||||||
public long? Size { get; set; }
|
public long? Size { get; set; }
|
||||||
public string Container { get; set; }
|
public string Container { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string Tagline { get; set; }
|
public string Tagline { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual ItemImageInfo[] ImageInfos { get; set; }
|
public virtual ItemImageInfo[] ImageInfos { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsVirtualItem { get; set; }
|
public bool IsVirtualItem { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the album.
|
/// Gets or sets the album.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The album.</value>
|
/// <value>The album.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string Album { get; set; }
|
public string Album { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the channel identifier.
|
/// Gets or sets the channel identifier.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The channel identifier.</value>
|
/// <value>The channel identifier.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid ChannelId { get; set; }
|
public Guid ChannelId { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsAddingToPlaylist => false;
|
public virtual bool SupportsAddingToPlaylist => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool AlwaysScanInternalMetadataPath => false;
|
public virtual bool AlwaysScanInternalMetadataPath => false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a value indicating whether this instance is in mixed folder.
|
/// Gets a value indicating whether this instance is in mixed folder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsInMixedFolder { get; set; }
|
public bool IsInMixedFolder { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsPlayedStatus => false;
|
public virtual bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsPositionTicksResume => false;
|
public virtual bool SupportsPositionTicksResume => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsRemoteImageDownloading => true;
|
public virtual bool SupportsRemoteImageDownloading => true;
|
||||||
|
|
||||||
private string _name;
|
private string _name;
|
||||||
|
@ -161,7 +161,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the name.
|
/// Gets or sets the name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The name.</value>
|
/// <value>The name.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual string Name
|
public virtual string Name
|
||||||
{
|
{
|
||||||
get => _name;
|
get => _name;
|
||||||
|
@ -174,35 +174,35 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsUnaired => PremiereDate.HasValue && PremiereDate.Value.ToLocalTime().Date >= DateTime.Now.Date;
|
public bool IsUnaired => PremiereDate.HasValue && PremiereDate.Value.ToLocalTime().Date >= DateTime.Now.Date;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public int? TotalBitrate { get; set; }
|
public int? TotalBitrate { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public ExtraType? ExtraType { get; set; }
|
public ExtraType? ExtraType { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsThemeMedia => ExtraType.HasValue && (ExtraType.Value == Model.Entities.ExtraType.ThemeSong || ExtraType.Value == Model.Entities.ExtraType.ThemeVideo);
|
public bool IsThemeMedia => ExtraType.HasValue && (ExtraType.Value == Model.Entities.ExtraType.ThemeSong || ExtraType.Value == Model.Entities.ExtraType.ThemeVideo);
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string OriginalTitle { get; set; }
|
public string OriginalTitle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the id.
|
/// Gets or sets the id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The id.</value>
|
/// <value>The id.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid OwnerId { get; set; }
|
public Guid OwnerId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the audio.
|
/// Gets or sets the audio.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The audio.</value>
|
/// <value>The audio.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public ProgramAudio? Audio { get; set; }
|
public ProgramAudio? Audio { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -210,7 +210,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Default is based on the type for everything except actual generic folders.
|
/// Default is based on the type for everything except actual generic folders.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The display prefs id.</value>
|
/// <value>The display prefs id.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual Guid DisplayPreferencesId
|
public virtual Guid DisplayPreferencesId
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -224,10 +224,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the path.
|
/// Gets or sets the path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The path.</value>
|
/// <value>The path.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual string Path { get; set; }
|
public virtual string Path { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual SourceType SourceType
|
public virtual SourceType SourceType
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -245,7 +245,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Returns the folder containing the item.
|
/// Returns 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual string ContainingFolderPath
|
public virtual string ContainingFolderPath
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -263,26 +263,26 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the name of the service.
|
/// Gets or sets the name of the service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The name of the service.</value>
|
/// <value>The name of the service.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string ServiceName { get; set; }
|
public string ServiceName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If this content came from an external service, the id of the content on that service
|
/// If this content came from an external service, the id of the content on that service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string ExternalId { get; set; }
|
public string ExternalId { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string ExternalSeriesId { get; set; }
|
public string ExternalSeriesId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the etag.
|
/// Gets or sets the etag.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The etag.</value>
|
/// <value>The etag.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string ExternalEtag { get; set; }
|
public string ExternalEtag { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool IsHidden => false;
|
public virtual bool IsHidden => false;
|
||||||
|
|
||||||
public BaseItem GetOwner()
|
public BaseItem GetOwner()
|
||||||
|
@ -295,7 +295,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the type of the location.
|
/// Gets or sets the type of the location.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The type of the location.</value>
|
/// <value>The type of the location.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual LocationType LocationType
|
public virtual LocationType LocationType
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -320,7 +320,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public MediaProtocol? PathProtocol
|
public MediaProtocol? PathProtocol
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -343,13 +343,13 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return current.HasValue && current.Value == protocol;
|
return current.HasValue && current.Value == protocol;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsFileProtocol => IsPathProtocol(MediaProtocol.File);
|
public bool IsFileProtocol => IsPathProtocol(MediaProtocol.File);
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool HasPathProtocol => PathProtocol.HasValue;
|
public bool HasPathProtocol => PathProtocol.HasValue;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsLocalMetadata
|
public virtual bool SupportsLocalMetadata
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -363,7 +363,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual string FileNameWithoutExtension
|
public virtual string FileNameWithoutExtension
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -377,7 +377,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool EnableAlphaNumericSorting => true;
|
public virtual bool EnableAlphaNumericSorting => true;
|
||||||
|
|
||||||
private List<Tuple<StringBuilder, bool>> GetSortChunks(string s1)
|
private List<Tuple<StringBuilder, bool>> GetSortChunks(string s1)
|
||||||
|
@ -418,7 +418,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// This is just a helper for convenience
|
/// This is just a helper for convenience
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The primary image path.</value>
|
/// <value>The primary image path.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string PrimaryImagePath => this.GetImagePath(ImageType.Primary);
|
public string PrimaryImagePath => this.GetImagePath(ImageType.Primary);
|
||||||
|
|
||||||
public bool IsMetadataFetcherEnabled(LibraryOptions libraryOptions, string name)
|
public bool IsMetadataFetcherEnabled(LibraryOptions libraryOptions, string name)
|
||||||
|
@ -544,20 +544,20 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the date created.
|
/// Gets or sets the date created.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The date created.</value>
|
/// <value>The date created.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime DateCreated { get; set; }
|
public DateTime DateCreated { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the date modified.
|
/// Gets or sets the date modified.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The date modified.</value>
|
/// <value>The date modified.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime DateModified { get; set; }
|
public DateTime DateModified { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime DateLastSaved { get; set; }
|
public DateTime DateLastSaved { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime DateLastRefreshed { get; set; }
|
public DateTime DateLastRefreshed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -583,24 +583,24 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return Name;
|
return Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsLocked { get; set; }
|
public bool IsLocked { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the locked fields.
|
/// Gets or sets the locked fields.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The locked fields.</value>
|
/// <value>The locked fields.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public MetadataFields[] LockedFields { get; set; }
|
public MetadataFields[] LockedFields { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the type of the media.
|
/// Gets the type of the media.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The type of the media.</value>
|
/// <value>The type of the media.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual string MediaType => null;
|
public virtual string MediaType => null;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual string[] PhysicalLocations
|
public virtual string[] PhysicalLocations
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -619,7 +619,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the name of the forced sort.
|
/// Gets or sets the name of the forced sort.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The name of the forced sort.</value>
|
/// <value>The name of the forced sort.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string ForcedSortName
|
public string ForcedSortName
|
||||||
{
|
{
|
||||||
get => _forcedSortName;
|
get => _forcedSortName;
|
||||||
|
@ -631,7 +631,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets the name of the sort.
|
/// Gets the name of the sort.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The name of the sort.</value>
|
/// <value>The name of the sort.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SortName
|
public string SortName
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -744,7 +744,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return builder.ToString().RemoveDiacritics();
|
return builder.ToString().RemoveDiacritics();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool EnableMediaSourceDisplay
|
public bool EnableMediaSourceDisplay
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -758,14 +758,14 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid ParentId { get; set; }
|
public Guid ParentId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the parent.
|
/// Gets or sets the parent.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The parent.</value>
|
/// <value>The parent.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Folder Parent
|
public Folder Parent
|
||||||
{
|
{
|
||||||
get => GetParent() as Folder;
|
get => GetParent() as Folder;
|
||||||
|
@ -822,7 +822,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual Guid DisplayParentId
|
public virtual Guid DisplayParentId
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -832,7 +832,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public BaseItem DisplayParent
|
public BaseItem DisplayParent
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -850,97 +850,97 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// When the item first debuted. For movies this could be premiere date, episodes would be first aired
|
/// When the item first debuted. For movies this could be premiere date, episodes would be first aired
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The premiere date.</value>
|
/// <value>The premiere date.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime? PremiereDate { get; set; }
|
public DateTime? PremiereDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the end date.
|
/// Gets or sets the end date.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The end date.</value>
|
/// <value>The end date.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime? EndDate { get; set; }
|
public DateTime? EndDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the official rating.
|
/// Gets or sets the official rating.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The official rating.</value>
|
/// <value>The official rating.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string OfficialRating { get; set; }
|
public string OfficialRating { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public int InheritedParentalRatingValue { get; set; }
|
public int InheritedParentalRatingValue { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the critic rating.
|
/// Gets or sets the critic rating.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The critic rating.</value>
|
/// <value>The critic rating.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public float? CriticRating { get; set; }
|
public float? CriticRating { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the custom rating.
|
/// Gets or sets the custom rating.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The custom rating.</value>
|
/// <value>The custom rating.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string CustomRating { get; set; }
|
public string CustomRating { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the overview.
|
/// Gets or sets the overview.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The overview.</value>
|
/// <value>The overview.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string Overview { get; set; }
|
public string Overview { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the studios.
|
/// Gets or sets the studios.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The studios.</value>
|
/// <value>The studios.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string[] Studios { get; set; }
|
public string[] Studios { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the genres.
|
/// Gets or sets the genres.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The genres.</value>
|
/// <value>The genres.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string[] Genres { get; set; }
|
public string[] Genres { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the tags.
|
/// Gets or sets the tags.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The tags.</value>
|
/// <value>The tags.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string[] Tags { get; set; }
|
public string[] Tags { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string[] ProductionLocations { get; set; }
|
public string[] ProductionLocations { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the home page URL.
|
/// Gets or sets the home page URL.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The home page URL.</value>
|
/// <value>The home page URL.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string HomePageUrl { get; set; }
|
public string HomePageUrl { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the community rating.
|
/// Gets or sets the community rating.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The community rating.</value>
|
/// <value>The community rating.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public float? CommunityRating { get; set; }
|
public float? CommunityRating { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the run time ticks.
|
/// Gets or sets the run time ticks.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The run time ticks.</value>
|
/// <value>The run time ticks.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public long? RunTimeTicks { get; set; }
|
public long? RunTimeTicks { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the production year.
|
/// Gets or sets the production year.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The production year.</value>
|
/// <value>The production year.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public int? ProductionYear { get; set; }
|
public int? ProductionYear { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -948,20 +948,20 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// This could be episode number, album track number, etc.
|
/// This could be episode number, album track number, etc.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The index number.</value>
|
/// <value>The index number.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public int? IndexNumber { get; set; }
|
public int? IndexNumber { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For an episode this could be the season number, or for a song this could be the disc number.
|
/// For an episode this could be the season number, or for a song this could be the disc number.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The parent index number.</value>
|
/// <value>The parent index number.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public int? ParentIndexNumber { get; set; }
|
public int? ParentIndexNumber { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool HasLocalAlternateVersions => false;
|
public virtual bool HasLocalAlternateVersions => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string OfficialRatingForComparison
|
public string OfficialRatingForComparison
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -982,7 +982,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string CustomRatingForComparison
|
public string CustomRatingForComparison
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -1407,13 +1407,13 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected virtual bool SupportsOwnedItems => !ParentId.Equals(Guid.Empty) && IsFileProtocol;
|
protected virtual bool SupportsOwnedItems => !ParentId.Equals(Guid.Empty) && IsFileProtocol;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsPeople => false;
|
public virtual bool SupportsPeople => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsThemeMedia => false;
|
public virtual bool SupportsThemeMedia => false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1613,10 +1613,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the provider ids.
|
/// Gets or sets the provider ids.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The provider ids.</value>
|
/// <value>The provider ids.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Dictionary<string, string> ProviderIds { get; set; }
|
public Dictionary<string, string> ProviderIds { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual Folder LatestItemsIndexContainer => null;
|
public virtual Folder LatestItemsIndexContainer => null;
|
||||||
|
|
||||||
public virtual double GetDefaultPrimaryImageAspectRatio()
|
public virtual double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -1629,7 +1629,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return Id.ToString("N", CultureInfo.InvariantCulture);
|
return Id.ToString("N", CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string PresentationUniqueKey { get; set; }
|
public string PresentationUniqueKey { get; set; }
|
||||||
|
|
||||||
public string GetPresentationUniqueKey()
|
public string GetPresentationUniqueKey()
|
||||||
|
@ -1934,7 +1934,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return IsVisibleStandaloneInternal(user, true);
|
return IsVisibleStandaloneInternal(user, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsInheritedParentImages => false;
|
public virtual bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
protected bool IsVisibleStandaloneInternal(User user, bool checkFolders)
|
protected bool IsVisibleStandaloneInternal(User user, bool checkFolders)
|
||||||
|
@ -1977,10 +1977,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets a value indicating whether this instance is folder.
|
/// Gets a value indicating whether this instance is folder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is folder; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is folder; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool IsFolder => false;
|
public virtual bool IsFolder => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool IsDisplayedAsFolder => false;
|
public virtual bool IsDisplayedAsFolder => false;
|
||||||
|
|
||||||
public virtual string GetClientTypeName()
|
public virtual string GetClientTypeName()
|
||||||
|
@ -2066,7 +2066,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool EnableRememberingTrackSelections => true;
|
public virtual bool EnableRememberingTrackSelections => true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -2776,7 +2776,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool IsTopParent
|
public virtual bool IsTopParent
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -2804,10 +2804,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsAncestors => true;
|
public virtual bool SupportsAncestors => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool StopRefreshIfLocalMetadataFound => true;
|
public virtual bool StopRefreshIfLocalMetadataFound => true;
|
||||||
|
|
||||||
public virtual IEnumerable<Guid> GetIdsForAncestorQuery()
|
public virtual IEnumerable<Guid> GetIdsForAncestorQuery()
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using MediaBrowser.Model.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class BasePluginFolder : Folder, ICollectionFolder
|
public abstract class BasePluginFolder : Folder, ICollectionFolder
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual string CollectionType => null;
|
public virtual string CollectionType => null;
|
||||||
|
|
||||||
public override bool CanDelete()
|
public override bool CanDelete()
|
||||||
|
@ -21,10 +21,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
//public override double? GetDefaultPrimaryImageAspectRatio()
|
//public override double? GetDefaultPrimaryImageAspectRatio()
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class Book : BaseItem, IHasLookupInfo<BookInfo>, IHasSeries
|
public class Book : BaseItem, IHasLookupInfo<BookInfo>, IHasSeries
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string MediaType => Model.Entities.MediaType.Book;
|
public override string MediaType => Model.Entities.MediaType.Book;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesPresentationUniqueKey { get; set; }
|
public string SeriesPresentationUniqueKey { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesName { get; set; }
|
public string SeriesName { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid SeriesId { get; set; }
|
public Guid SeriesId { get; set; }
|
||||||
|
|
||||||
public string FindSeriesSortName()
|
public string FindSeriesSortName()
|
||||||
|
|
|
@ -2,14 +2,13 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using MediaBrowser.Controller.IO;
|
using MediaBrowser.Controller.IO;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Extensions;
|
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
|
|
||||||
|
@ -33,10 +32,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
PhysicalFolderIds = Array.Empty<Guid>();
|
PhysicalFolderIds = Array.Empty<Guid>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => false;
|
public override bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
public override bool CanDelete()
|
public override bool CanDelete()
|
||||||
|
@ -144,10 +143,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Allow different display preferences for each collection folder
|
/// Allow different display preferences for each collection folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The display prefs id.</value>
|
/// <value>The display prefs id.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override Guid DisplayPreferencesId => Id;
|
public override Guid DisplayPreferencesId => Id;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string[] PhysicalLocations => PhysicalLocationsList;
|
public override string[] PhysicalLocations => PhysicalLocationsList;
|
||||||
|
|
||||||
public override bool IsSaveLocalMetadataEnabled()
|
public override bool IsSaveLocalMetadataEnabled()
|
||||||
|
@ -311,7 +310,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Our children are actually just references to the ones in the physical root...
|
/// Our children are actually just references to the ones in the physical root...
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The actual children.</value>
|
/// <value>The actual children.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override IEnumerable<BaseItem> Children => GetActualChildren();
|
public override IEnumerable<BaseItem> Children => GetActualChildren();
|
||||||
|
|
||||||
public IEnumerable<BaseItem> GetActualChildren()
|
public IEnumerable<BaseItem> GetActualChildren()
|
||||||
|
@ -361,7 +360,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common.Progress;
|
using MediaBrowser.Common.Progress;
|
||||||
|
@ -18,7 +19,6 @@ using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
@ -39,7 +39,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public LinkedChild[] LinkedChildren { get; set; }
|
public LinkedChild[] LinkedChildren { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime? DateLastMediaAdded { get; set; }
|
public DateTime? DateLastMediaAdded { get; set; }
|
||||||
|
|
||||||
public Folder()
|
public Folder()
|
||||||
|
@ -47,35 +47,35 @@ namespace MediaBrowser.Controller.Entities
|
||||||
LinkedChildren = Array.Empty<LinkedChild>();
|
LinkedChildren = Array.Empty<LinkedChild>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsThemeMedia => true;
|
public override bool SupportsThemeMedia => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool IsPreSorted => false;
|
public virtual bool IsPreSorted => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool IsPhysicalRoot => false;
|
public virtual bool IsPhysicalRoot => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => true;
|
public override bool SupportsInheritedParentImages => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => true;
|
public override bool SupportsPlayedStatus => true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a value indicating whether this instance is folder.
|
/// Gets a value indicating whether this instance is folder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is folder; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is folder; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsFolder => true;
|
public override bool IsFolder => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsDisplayedAsFolder => true;
|
public override bool IsDisplayedAsFolder => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsCumulativeRunTimeTicks => false;
|
public virtual bool SupportsCumulativeRunTimeTicks => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsDateLastMediaAdded => false;
|
public virtual bool SupportsDateLastMediaAdded => false;
|
||||||
|
|
||||||
public override bool CanDelete()
|
public override bool CanDelete()
|
||||||
|
@ -100,7 +100,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return baseResult;
|
return baseResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string FileNameWithoutExtension
|
public override string FileNameWithoutExtension
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -127,7 +127,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected virtual bool SupportsShortcutChildren => false;
|
protected virtual bool SupportsShortcutChildren => false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -162,14 +162,14 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets the actual children.
|
/// Gets the actual children.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The actual children.</value>
|
/// <value>The actual children.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual IEnumerable<BaseItem> Children => LoadChildren();
|
public virtual IEnumerable<BaseItem> Children => LoadChildren();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// thread-safe access to all recursive children of this folder - without regard to user
|
/// thread-safe access to all recursive children of this folder - without regard to user
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The recursive children.</value>
|
/// <value>The recursive children.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public IEnumerable<BaseItem> RecursiveChildren => GetRecursiveChildren();
|
public IEnumerable<BaseItem> RecursiveChildren => GetRecursiveChildren();
|
||||||
|
|
||||||
public override bool IsVisible(User user)
|
public override bool IsVisible(User user)
|
||||||
|
@ -1428,7 +1428,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
.Where(i => i.Item2 != null);
|
.Where(i => i.Item2 != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected override bool SupportsOwnedItems => base.SupportsOwnedItems || SupportsShortcutChildren;
|
protected override bool SupportsOwnedItems => base.SupportsOwnedItems || SupportsShortcutChildren;
|
||||||
|
|
||||||
protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
|
protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
|
||||||
|
@ -1595,7 +1595,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return !IsPlayed(user);
|
return !IsPlayed(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public virtual bool SupportsUserDataFromChildren
|
public virtual bool SupportsUserDataFromChildren
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
using MediaBrowser.Controller.Extensions;
|
using MediaBrowser.Controller.Extensions;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
@ -34,13 +34,13 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsDisplayedAsFolder => true;
|
public override bool IsDisplayedAsFolder => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAncestors => false;
|
public override bool SupportsAncestors => false;
|
||||||
|
|
||||||
public override bool IsSaveLocalMetadataEnabled()
|
public override bool IsSaveLocalMetadataEnabled()
|
||||||
|
@ -61,7 +61,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return LibraryManager.GetItemList(query);
|
return LibraryManager.GetItemList(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
public static string GetPath(string name)
|
public static string GetPath(string name)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -28,7 +28,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public int Height { get; set; }
|
public int Height { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsLocalFile => Path == null || !Path.StartsWith("http", StringComparison.OrdinalIgnoreCase);
|
public bool IsLocalFile => Path == null || !Path.StartsWith("http", StringComparison.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
public LinkedChildType Type { get; set; }
|
public LinkedChildType Type { get; set; }
|
||||||
public string LibraryItemId { get; set; }
|
public string LibraryItemId { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Users;
|
using MediaBrowser.Model.Users;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Movies
|
namespace MediaBrowser.Controller.Entities.Movies
|
||||||
|
@ -24,13 +24,13 @@ namespace MediaBrowser.Controller.Entities.Movies
|
||||||
DisplayOrder = ItemSortBy.PremiereDate;
|
DisplayOrder = ItemSortBy.PremiereDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected override bool FilterLinkedChildrenPerUser => true;
|
protected override bool FilterLinkedChildrenPerUser => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => true;
|
public override bool SupportsPeople => true;
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
@ -79,7 +79,7 @@ namespace MediaBrowser.Controller.Entities.Movies
|
||||||
return new List<BaseItem>();
|
return new List<BaseItem>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
private bool IsLegacyBoxSet
|
private bool IsLegacyBoxSet
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -98,7 +98,7 @@ namespace MediaBrowser.Controller.Entities.Movies
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsPreSorted => true;
|
public override bool IsPreSorted => true;
|
||||||
|
|
||||||
public override bool IsAuthorizedToDelete(User user, List<Folder> allCollectionFolders)
|
public override bool IsAuthorizedToDelete(User user, List<Folder> allCollectionFolders)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
|
@ -8,7 +9,6 @@ using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Providers;
|
using MediaBrowser.Model.Providers;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Movies
|
namespace MediaBrowser.Controller.Entities.Movies
|
||||||
{
|
{
|
||||||
|
@ -39,7 +39,7 @@ namespace MediaBrowser.Controller.Entities.Movies
|
||||||
/// <value>The name of the TMDB collection.</value>
|
/// <value>The name of the TMDB collection.</value>
|
||||||
public string TmdbCollectionName { get; set; }
|
public string TmdbCollectionName { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string CollectionName
|
public string CollectionName
|
||||||
{
|
{
|
||||||
get => TmdbCollectionName;
|
get => TmdbCollectionName;
|
||||||
|
@ -186,7 +186,7 @@ namespace MediaBrowser.Controller.Entities.Movies
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool StopRefreshIfLocalMetadataFound => false;
|
public override bool StopRefreshIfLocalMetadataFound => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasLookupInfo<MusicVideoInfo>
|
public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasLookupInfo<MusicVideoInfo>
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public IReadOnlyList<string> Artists { get; set; }
|
public IReadOnlyList<string> Artists { get; set; }
|
||||||
|
|
||||||
public MusicVideo()
|
public MusicVideo()
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Extensions;
|
using MediaBrowser.Controller.Extensions;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
@ -50,7 +50,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
public override bool CanDelete()
|
public override bool CanDelete()
|
||||||
|
@ -63,13 +63,13 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool EnableAlphaNumericSorting => false;
|
public override bool EnableAlphaNumericSorting => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAncestors => false;
|
public override bool SupportsAncestors => false;
|
||||||
|
|
||||||
public static string GetPath(string name)
|
public static string GetPath(string name)
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Model.Drawing;
|
using MediaBrowser.Model.Drawing;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class Photo : BaseItem
|
public class Photo : BaseItem
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsLocalMetadata => false;
|
public override bool SupportsLocalMetadata => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string MediaType => Model.Entities.MediaType.Photo;
|
public override string MediaType => Model.Entities.MediaType.Photo;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override Folder LatestItemsIndexContainer => AlbumEntity;
|
public override Folder LatestItemsIndexContainer => AlbumEntity;
|
||||||
|
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public PhotoAlbum AlbumEntity
|
public PhotoAlbum AlbumEntity
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
using MediaBrowser.Model.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
public class PhotoAlbum : Folder
|
public class PhotoAlbum : Folder
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool AlwaysScanInternalMetadataPath => true;
|
public override bool AlwaysScanInternalMetadataPath => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => false;
|
public override bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Extensions;
|
using MediaBrowser.Controller.Extensions;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
@ -28,13 +28,13 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsDisplayedAsFolder => true;
|
public override bool IsDisplayedAsFolder => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAncestors => false;
|
public override bool SupportsAncestors => false;
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -62,7 +62,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return LibraryManager.GetItemList(query);
|
return LibraryManager.GetItemList(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
public static string GetPath(string name)
|
public static string GetPath(string name)
|
||||||
|
|
|
@ -2,11 +2,11 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.TV
|
namespace MediaBrowser.Controller.Entities.TV
|
||||||
|
@ -49,25 +49,25 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
return series == null ? SeriesName : series.SortName;
|
return series == null ? SeriesName : series.SortName;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected override bool SupportsOwnedItems => IsStacked || MediaSourceCount > 1;
|
protected override bool SupportsOwnedItems => IsStacked || MediaSourceCount > 1;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => true;
|
public override bool SupportsInheritedParentImages => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => true;
|
public override bool SupportsPeople => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public int? AiredSeasonNumber => AirsAfterSeasonNumber ?? AirsBeforeSeasonNumber ?? ParentIndexNumber;
|
public int? AiredSeasonNumber => AirsAfterSeasonNumber ?? AirsBeforeSeasonNumber ?? ParentIndexNumber;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override Folder LatestItemsIndexContainer => Series;
|
public override Folder LatestItemsIndexContainer => Series;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override Guid DisplayParentId => SeasonId;
|
public override Guid DisplayParentId => SeasonId;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected override bool EnableDefaultVideoUserDataKeys => false;
|
protected override bool EnableDefaultVideoUserDataKeys => false;
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -104,7 +104,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
/// This Episode's Series Instance
|
/// This Episode's Series Instance
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The series.</value>
|
/// <value>The series.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Series Series
|
public Series Series
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -118,7 +118,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Season Season
|
public Season Season
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -132,16 +132,16 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsInSeasonFolder => FindParent<Season>() != null;
|
public bool IsInSeasonFolder => FindParent<Season>() != null;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesPresentationUniqueKey { get; set; }
|
public string SeriesPresentationUniqueKey { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesName { get; set; }
|
public string SeriesName { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeasonName { get; set; }
|
public string SeasonName { get; set; }
|
||||||
|
|
||||||
public string FindSeriesPresentationUniqueKey()
|
public string FindSeriesPresentationUniqueKey()
|
||||||
|
@ -224,7 +224,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsRemoteImageDownloading
|
public override bool SupportsRemoteImageDownloading
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -238,12 +238,12 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsMissingEpisode => LocationType == LocationType.Virtual;
|
public bool IsMissingEpisode => LocationType == LocationType.Virtual;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid SeasonId { get; set; }
|
public Guid SeasonId { get; set; }
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid SeriesId { get; set; }
|
public Guid SeriesId { get; set; }
|
||||||
|
|
||||||
public Guid FindSeriesId()
|
public Guid FindSeriesId()
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Users;
|
using MediaBrowser.Model.Users;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.TV
|
namespace MediaBrowser.Controller.Entities.TV
|
||||||
|
@ -15,22 +15,22 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Season : Folder, IHasSeries, IHasLookupInfo<SeasonInfo>
|
public class Season : Folder, IHasSeries, IHasLookupInfo<SeasonInfo>
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAddingToPlaylist => true;
|
public override bool SupportsAddingToPlaylist => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsPreSorted => true;
|
public override bool IsPreSorted => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsDateLastMediaAdded => false;
|
public override bool SupportsDateLastMediaAdded => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => true;
|
public override bool SupportsPeople => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => true;
|
public override bool SupportsInheritedParentImages => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override Guid DisplayParentId => SeriesId;
|
public override Guid DisplayParentId => SeriesId;
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -71,7 +71,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
/// This Episode's Series Instance
|
/// This Episode's Series Instance
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The series.</value>
|
/// <value>The series.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Series Series
|
public Series Series
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -85,7 +85,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesPath
|
public string SeriesPath
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -179,13 +179,13 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
return UnratedItem.Series;
|
return UnratedItem.Series;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesPresentationUniqueKey { get; set; }
|
public string SeriesPresentationUniqueKey { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string SeriesName { get; set; }
|
public string SeriesName { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Guid SeriesId { get; set; }
|
public Guid SeriesId { get; set; }
|
||||||
|
|
||||||
public string FindSeriesPresentationUniqueKey()
|
public string FindSeriesPresentationUniqueKey()
|
||||||
|
|
|
@ -2,6 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
|
@ -10,7 +11,6 @@ using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Providers;
|
using MediaBrowser.Model.Providers;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Users;
|
using MediaBrowser.Model.Users;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.TV
|
namespace MediaBrowser.Controller.Entities.TV
|
||||||
|
@ -31,19 +31,19 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
public DayOfWeek[] AirDays { get; set; }
|
public DayOfWeek[] AirDays { get; set; }
|
||||||
public string AirTime { get; set; }
|
public string AirTime { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAddingToPlaylist => true;
|
public override bool SupportsAddingToPlaylist => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsPreSorted => true;
|
public override bool IsPreSorted => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsDateLastMediaAdded => true;
|
public override bool SupportsDateLastMediaAdded => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => true;
|
public override bool SupportsPeople => true;
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
@ -504,7 +504,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool StopRefreshIfLocalMetadataFound => false;
|
public override bool StopRefreshIfLocalMetadataFound => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Providers;
|
using MediaBrowser.Model.Providers;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -93,7 +93,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool StopRefreshIfLocalMetadataFound => false;
|
public override bool StopRefreshIfLocalMetadataFound => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Users;
|
using MediaBrowser.Model.Users;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
@ -25,7 +25,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
public string EasyPassword { get; set; }
|
public string EasyPassword { get; set; }
|
||||||
|
|
||||||
// Strictly to remove IgnoreDataMember
|
// Strictly to remove JsonIgnore
|
||||||
public override ItemImageInfo[] ImageInfos
|
public override ItemImageInfo[] ImageInfos
|
||||||
{
|
{
|
||||||
get => base.ImageInfos;
|
get => base.ImageInfos;
|
||||||
|
@ -36,7 +36,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets or sets the path.
|
/// Gets or sets the path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The path.</value>
|
/// <value>The path.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string Path
|
public override string Path
|
||||||
{
|
{
|
||||||
get => ConfigurationDirectoryPath;
|
get => ConfigurationDirectoryPath;
|
||||||
|
@ -65,14 +65,14 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the root folder.
|
/// Gets the root folder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The root folder.</value>
|
/// <value>The root folder.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Folder RootFolder => LibraryManager.GetUserRootFolder();
|
public Folder RootFolder => LibraryManager.GetUserRootFolder();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -88,7 +88,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
private volatile UserConfiguration _config;
|
private volatile UserConfiguration _config;
|
||||||
private readonly object _configSyncLock = new object();
|
private readonly object _configSyncLock = new object();
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public UserConfiguration Configuration
|
public UserConfiguration Configuration
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -111,7 +111,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
private volatile UserPolicy _policy;
|
private volatile UserPolicy _policy;
|
||||||
private readonly object _policySyncLock = new object();
|
private readonly object _policySyncLock = new object();
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public UserPolicy Policy
|
public UserPolicy Policy
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -168,7 +168,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets the path to the user's configuration directory
|
/// Gets the path to the user's configuration directory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The configuration directory path.</value>
|
/// <value>The configuration directory path.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string ConfigurationDirectoryPath => GetConfigurationDirectoryPath(Name);
|
public string ConfigurationDirectoryPath => GetConfigurationDirectoryPath(Name);
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -252,7 +252,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
public long InternalId { get; set; }
|
public long InternalId { get; set; }
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using MediaBrowser.Model.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -93,7 +93,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// This should never be serialized.
|
/// This should never be serialized.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>null</c> if [likes] contains no value, <c>true</c> if [likes]; otherwise, <c>false</c>.</value>
|
/// <value><c>null</c> if [likes] contains no value, <c>true</c> if [likes]; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool? Likes
|
public bool? Likes
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Library;
|
using MediaBrowser.Model.Library;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -33,10 +33,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => false;
|
public override bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
private void ClearCache()
|
private void ClearCache()
|
||||||
|
@ -75,10 +75,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return GetChildren(user, true).Count;
|
return GetChildren(user, true).Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected override bool SupportsShortcutChildren => true;
|
protected override bool SupportsShortcutChildren => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsPreSorted => true;
|
public override bool IsPreSorted => true;
|
||||||
|
|
||||||
protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user)
|
protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.TV;
|
using MediaBrowser.Controller.TV;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -17,7 +17,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public static ITVSeriesManager TVSeriesManager;
|
public static ITVSeriesManager TVSeriesManager;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string CollectionType => ViewType;
|
public string CollectionType => ViewType;
|
||||||
|
|
||||||
public override IEnumerable<Guid> GetIdsForAncestorQuery()
|
public override IEnumerable<Guid> GetIdsForAncestorQuery()
|
||||||
|
@ -40,10 +40,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => false;
|
public override bool SupportsPlayedStatus => false;
|
||||||
|
|
||||||
public override int GetChildCount(User user)
|
public override int GetChildCount(User user)
|
||||||
|
@ -167,7 +167,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
|
@ -13,7 +14,6 @@ using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using MediaBrowser.Model.MediaInfo;
|
using MediaBrowser.Model.MediaInfo;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
|
@ -25,23 +25,23 @@ namespace MediaBrowser.Controller.Entities
|
||||||
ISupportsPlaceHolders,
|
ISupportsPlaceHolders,
|
||||||
IHasMediaSources
|
IHasMediaSources
|
||||||
{
|
{
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string PrimaryVersionId { get; set; }
|
public string PrimaryVersionId { get; set; }
|
||||||
|
|
||||||
public string[] AdditionalParts { get; set; }
|
public string[] AdditionalParts { get; set; }
|
||||||
public string[] LocalAlternateVersions { get; set; }
|
public string[] LocalAlternateVersions { get; set; }
|
||||||
public LinkedChild[] LinkedAlternateVersions { get; set; }
|
public LinkedChild[] LinkedAlternateVersions { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => true;
|
public override bool SupportsPlayedStatus => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => true;
|
public override bool SupportsPeople => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => true;
|
public override bool SupportsInheritedParentImages => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPositionTicksResume
|
public override bool SupportsPositionTicksResume
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -90,7 +90,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return base.CreatePresentationUniqueKey();
|
return base.CreatePresentationUniqueKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsThemeMedia => true;
|
public override bool SupportsThemeMedia => true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -180,10 +180,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return IsFileProtocol;
|
return IsFileProtocol;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAddingToPlaylist => true;
|
public override bool SupportsAddingToPlaylist => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public int MediaSourceCount
|
public int MediaSourceCount
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -200,10 +200,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsStacked => AdditionalParts.Length > 0;
|
public bool IsStacked => AdditionalParts.Length > 0;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool HasLocalAlternateVersions => LocalAlternateVersions.Length > 0;
|
public override bool HasLocalAlternateVersions => LocalAlternateVersions.Length > 0;
|
||||||
|
|
||||||
public IEnumerable<Guid> GetAdditionalPartIds()
|
public IEnumerable<Guid> GetAdditionalPartIds()
|
||||||
|
@ -218,7 +218,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public static ILiveTvManager LiveTvManager { get; set; }
|
public static ILiveTvManager LiveTvManager { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override SourceType SourceType
|
public override SourceType SourceType
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -247,7 +247,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return base.CanDelete();
|
return base.CanDelete();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsCompleteMedia
|
public bool IsCompleteMedia
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -261,7 +261,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected virtual bool EnableDefaultVideoUserDataKeys => true;
|
protected virtual bool EnableDefaultVideoUserDataKeys => true;
|
||||||
|
|
||||||
public override List<string> GetUserDataKeys()
|
public override List<string> GetUserDataKeys()
|
||||||
|
@ -338,7 +338,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
.OrderBy(i => i.SortName);
|
.OrderBy(i => i.SortName);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath
|
public override string ContainingFolderPath
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -360,7 +360,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string FileNameWithoutExtension
|
public override string FileNameWithoutExtension
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -432,14 +432,14 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// Gets a value indicating whether [is3 D].
|
/// Gets a value indicating whether [is3 D].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if [is3 D]; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if [is3 D]; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool Is3D => Video3DFormat.HasValue;
|
public bool Is3D => Video3DFormat.HasValue;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the type of the media.
|
/// Gets the type of the media.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The type of the media.</value>
|
/// <value>The type of the media.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string MediaType => Model.Entities.MediaType.Video;
|
public override string MediaType => Model.Entities.MediaType.Video;
|
||||||
|
|
||||||
protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
|
protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using MediaBrowser.Model.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities
|
namespace MediaBrowser.Controller.Entities
|
||||||
|
@ -24,7 +24,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -35,7 +35,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAncestors => false;
|
public override bool SupportsAncestors => false;
|
||||||
|
|
||||||
public override bool CanDelete()
|
public override bool CanDelete()
|
||||||
|
@ -72,7 +72,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople => false;
|
public override bool SupportsPeople => false;
|
||||||
|
|
||||||
public static string GetPath(string name)
|
public static string GetPath(string name)
|
||||||
|
|
|
@ -2,13 +2,13 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.LiveTv;
|
using MediaBrowser.Model.LiveTv;
|
||||||
using MediaBrowser.Model.MediaInfo;
|
using MediaBrowser.Model.MediaInfo;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.LiveTv
|
namespace MediaBrowser.Controller.LiveTv
|
||||||
{
|
{
|
||||||
|
@ -31,13 +31,13 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
return UnratedItem.LiveTvChannel;
|
return UnratedItem.LiveTvChannel;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPositionTicksResume => false;
|
public override bool SupportsPositionTicksResume => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override SourceType SourceType => SourceType.LiveTV;
|
public override SourceType SourceType => SourceType.LiveTV;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool EnableRememberingTrackSelections => false;
|
public override bool EnableRememberingTrackSelections => false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -52,7 +52,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// <value>The type of the channel.</value>
|
/// <value>The type of the channel.</value>
|
||||||
public ChannelType ChannelType { get; set; }
|
public ChannelType ChannelType { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override LocationType LocationType => LocationType.Remote;
|
public override LocationType LocationType => LocationType.Remote;
|
||||||
|
|
||||||
protected override string CreateSortName()
|
protected override string CreateSortName()
|
||||||
|
@ -70,7 +70,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
return (Number ?? string.Empty) + "-" + (Name ?? string.Empty);
|
return (Number ?? string.Empty) + "-" + (Name ?? string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string MediaType => ChannelType == ChannelType.Radio ? Model.Entities.MediaType.Audio : Model.Entities.MediaType.Video;
|
public override string MediaType => ChannelType == ChannelType.Radio ? Model.Entities.MediaType.Audio : Model.Entities.MediaType.Video;
|
||||||
|
|
||||||
public override string GetClientTypeName()
|
public override string GetClientTypeName()
|
||||||
|
@ -119,45 +119,45 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsMovie { get; set; }
|
public bool IsMovie { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is sports.
|
/// Gets or sets 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsSports { get; set; }
|
public bool IsSports { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is series.
|
/// Gets or sets a value indicating whether this instance is series.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsSeries { get; set; }
|
public bool IsSeries { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is news.
|
/// Gets or sets 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsNews { get; set; }
|
public bool IsNews { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is kids.
|
/// Gets or sets 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsKids => Tags.Contains("Kids", StringComparer.OrdinalIgnoreCase);
|
public bool IsKids => Tags.Contains("Kids", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsRepeat { get; set; }
|
public bool IsRepeat { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the episode title.
|
/// Gets or sets the episode title.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The episode title.</value>
|
/// <value>The episode title.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string EpisodeTitle { get; set; }
|
public string EpisodeTitle { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
|
@ -9,7 +10,6 @@ using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.LiveTv;
|
using MediaBrowser.Model.LiveTv;
|
||||||
using MediaBrowser.Model.Providers;
|
using MediaBrowser.Model.Providers;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.LiveTv
|
namespace MediaBrowser.Controller.LiveTv
|
||||||
{
|
{
|
||||||
|
@ -63,79 +63,79 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override SourceType SourceType => SourceType.LiveTV;
|
public override SourceType SourceType => SourceType.LiveTV;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The start date of the program, in UTC.
|
/// The start date of the program, in UTC.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public DateTime StartDate { get; set; }
|
public DateTime StartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is repeat.
|
/// Gets or sets a value indicating whether this instance is repeat.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is repeat; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is repeat; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsRepeat { get; set; }
|
public bool IsRepeat { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the episode title.
|
/// Gets or sets the episode title.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The episode title.</value>
|
/// <value>The episode title.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string EpisodeTitle { get; set; }
|
public string EpisodeTitle { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public string ShowId { get; set; }
|
public string ShowId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is movie.
|
/// Gets or sets a value indicating whether this instance is movie.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is movie; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is movie; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsMovie { get; set; }
|
public bool IsMovie { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is sports.
|
/// Gets or sets 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsSports => Tags.Contains("Sports", StringComparer.OrdinalIgnoreCase);
|
public bool IsSports => Tags.Contains("Sports", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is series.
|
/// Gets or sets a value indicating whether this instance is series.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsSeries { get; set; }
|
public bool IsSeries { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this instance is live.
|
/// Gets or sets 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>
|
||||||
[IgnoreDataMember]
|
[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 or sets 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>
|
||||||
[IgnoreDataMember]
|
[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 or sets 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>
|
||||||
[IgnoreDataMember]
|
[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 or sets 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsPremiere => Tags.Contains("Premiere", StringComparer.OrdinalIgnoreCase);
|
public bool IsPremiere => Tags.Contains("Premiere", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -143,10 +143,10 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath => Path;
|
public override string ContainingFolderPath => Path;
|
||||||
|
|
||||||
//[IgnoreDataMember]
|
//[JsonIgnore]
|
||||||
//public override string MediaType
|
//public override string MediaType
|
||||||
//{
|
//{
|
||||||
// get
|
// get
|
||||||
|
@ -155,7 +155,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsAiring
|
public bool IsAiring
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -166,7 +166,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool HasAired
|
public bool HasAired
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -197,7 +197,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPeople
|
public override bool SupportsPeople
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -212,7 +212,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsAncestors => false;
|
public override bool SupportsAncestors => false;
|
||||||
|
|
||||||
private LiveTvOptions GetConfiguration()
|
private LiveTvOptions GetConfiguration()
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Model.LiveTv;
|
using MediaBrowser.Model.LiveTv;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.LiveTv
|
namespace MediaBrowser.Controller.LiveTv
|
||||||
{
|
{
|
||||||
|
@ -129,10 +129,10 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// Gets or sets a value indicating whether this instance is live.
|
/// Gets or sets 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>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsLive => Tags.Contains("Live", StringComparer.OrdinalIgnoreCase);
|
public bool IsLive => Tags.Contains("Live", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsPremiere => Tags.Contains("Premiere", StringComparer.OrdinalIgnoreCase);
|
public bool IsPremiere => Tags.Contains("Premiere", StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
public int? ProductionYear { get; set; }
|
public int? ProductionYear { get; set; }
|
||||||
|
|
|
@ -2,6 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
|
@ -10,7 +11,6 @@ using MediaBrowser.Controller.Entities.Audio;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Playlists
|
namespace MediaBrowser.Controller.Playlists
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@ namespace MediaBrowser.Controller.Playlists
|
||||||
Shares = Array.Empty<Share>();
|
Shares = Array.Empty<Share>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool IsFile => IsPlaylistFile(Path);
|
public bool IsFile => IsPlaylistFile(Path);
|
||||||
|
|
||||||
public static bool IsPlaylistFile(string path)
|
public static bool IsPlaylistFile(string path)
|
||||||
|
@ -42,7 +42,7 @@ namespace MediaBrowser.Controller.Playlists
|
||||||
return System.IO.Path.HasExtension(path);
|
return System.IO.Path.HasExtension(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string ContainingFolderPath
|
public override string ContainingFolderPath
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -58,19 +58,19 @@ namespace MediaBrowser.Controller.Playlists
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
protected override bool FilterLinkedChildrenPerUser => true;
|
protected override bool FilterLinkedChildrenPerUser => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsInheritedParentImages => false;
|
public override bool SupportsInheritedParentImages => false;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsPlayedStatus => string.Equals(MediaType, "Video", StringComparison.OrdinalIgnoreCase);
|
public override bool SupportsPlayedStatus => string.Equals(MediaType, "Video", StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool AlwaysScanInternalMetadataPath => true;
|
public override bool AlwaysScanInternalMetadataPath => true;
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool SupportsCumulativeRunTimeTicks => true;
|
public override bool SupportsCumulativeRunTimeTicks => true;
|
||||||
|
|
||||||
public override double GetDefaultPrimaryImageAspectRatio()
|
public override double GetDefaultPrimaryImageAspectRatio()
|
||||||
|
@ -193,12 +193,12 @@ namespace MediaBrowser.Controller.Playlists
|
||||||
return new[] { item };
|
return new[] { item };
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override bool IsPreSorted => true;
|
public override bool IsPreSorted => true;
|
||||||
|
|
||||||
public string PlaylistMediaType { get; set; }
|
public string PlaylistMediaType { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public override string MediaType => PlaylistMediaType;
|
public override string MediaType => PlaylistMediaType;
|
||||||
|
|
||||||
public void SetMediaType(string value)
|
public void SetMediaType(string value)
|
||||||
|
@ -206,7 +206,7 @@ namespace MediaBrowser.Controller.Playlists
|
||||||
PlaylistMediaType = value;
|
PlaylistMediaType = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
private bool IsSharedItem
|
private bool IsSharedItem
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Session;
|
using MediaBrowser.Model.Session;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ namespace MediaBrowser.Controller.Session
|
||||||
/// Gets or sets the session controller.
|
/// Gets or sets the session controller.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The session controller.</value>
|
/// <value>The session controller.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public ISessionController[] SessionControllers { get; set; }
|
public ISessionController[] SessionControllers { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using MediaBrowser.Model.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Dto
|
namespace MediaBrowser.Model.Dto
|
||||||
{
|
{
|
||||||
|
@ -41,7 +41,7 @@ namespace MediaBrowser.Model.Dto
|
||||||
/// Gets a value indicating whether this instance has primary image.
|
/// Gets a value indicating whether this instance has primary image.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value><c>true</c> if this instance has primary image; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance has primary image; otherwise, <c>false</c>.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public bool HasPrimaryImage => PrimaryImageTag != null;
|
public bool HasPrimaryImage => PrimaryImageTag != null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.MediaInfo;
|
using MediaBrowser.Model.MediaInfo;
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using MediaBrowser.Model.Session;
|
using MediaBrowser.Model.Session;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Dto
|
namespace MediaBrowser.Model.Dto
|
||||||
|
@ -108,7 +108,7 @@ namespace MediaBrowser.Model.Dto
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public TranscodeReason[] TranscodeReasons { get; set; }
|
public TranscodeReason[] TranscodeReasons { get; set; }
|
||||||
|
|
||||||
public int? DefaultAudioStreamIndex { get; set; }
|
public int? DefaultAudioStreamIndex { get; set; }
|
||||||
|
@ -148,7 +148,7 @@ namespace MediaBrowser.Model.Dto
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public MediaStream VideoStream
|
public MediaStream VideoStream
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
|
||||||
|
<PackageReference Include="System.Text.Json" Version="4.6.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Serialization
|
|
||||||
{
|
|
||||||
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, Inherited = false, AllowMultiple = false)]
|
|
||||||
public sealed class IgnoreDataMemberAttribute : Attribute
|
|
||||||
{
|
|
||||||
public IgnoreDataMemberAttribute()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using MediaBrowser.Model.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Updates
|
namespace MediaBrowser.Model.Updates
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,7 @@ namespace MediaBrowser.Model.Updates
|
||||||
/// Had to make this an interpreted property since Protobuf can't handle Version
|
/// Had to make this an interpreted property since Protobuf can't handle Version
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The version.</value>
|
/// <value>The version.</value>
|
||||||
[IgnoreDataMember]
|
[JsonIgnore]
|
||||||
public Version Version
|
public Version Version
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
Loading…
Reference in New Issue
Block a user