commit
1fa11e100c
|
@ -415,21 +415,10 @@ namespace MediaBrowser.Api
|
||||||
|
|
||||||
private IEnumerable<Season> FilterVirtualSeasons(GetSeasons request, IEnumerable<Season> items)
|
private IEnumerable<Season> FilterVirtualSeasons(GetSeasons request, IEnumerable<Season> items)
|
||||||
{
|
{
|
||||||
if (request.IsMissing.HasValue && request.IsVirtualUnaired.HasValue)
|
|
||||||
{
|
|
||||||
var isMissing = request.IsMissing.Value;
|
|
||||||
var isVirtualUnaired = request.IsVirtualUnaired.Value;
|
|
||||||
|
|
||||||
if (!isMissing && !isVirtualUnaired)
|
|
||||||
{
|
|
||||||
return items.Where(i => !i.IsMissingOrVirtualUnaired);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (request.IsMissing.HasValue)
|
if (request.IsMissing.HasValue)
|
||||||
{
|
{
|
||||||
var val = request.IsMissing.Value;
|
var val = request.IsMissing.Value;
|
||||||
items = items.Where(i => (i.IsMissingSeason ?? false) == val);
|
items = items.Where(i => (i.IsMissingSeason) == val);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.IsVirtualUnaired.HasValue)
|
if (request.IsVirtualUnaired.HasValue)
|
||||||
|
|
|
@ -1294,7 +1294,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds the children to list.
|
/// Adds the children to list.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void AddChildrenToList(Dictionary<Guid,BaseItem> result, bool includeLinkedChildren, bool recursive, Func<BaseItem, bool> filter)
|
private void AddChildrenToList(Dictionary<Guid, BaseItem> result, bool includeLinkedChildren, bool recursive, Func<BaseItem, bool> filter)
|
||||||
{
|
{
|
||||||
foreach (var child in Children)
|
foreach (var child in Children)
|
||||||
{
|
{
|
||||||
|
@ -1525,14 +1525,12 @@ namespace MediaBrowser.Controller.Entities
|
||||||
User = user,
|
User = user,
|
||||||
Recursive = true,
|
Recursive = true,
|
||||||
IsFolder = false,
|
IsFolder = false,
|
||||||
IsUnaired = false,
|
|
||||||
EnableTotalRecordCount = false
|
EnableTotalRecordCount = false
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!user.Configuration.DisplayMissingEpisodes)
|
if (!user.Configuration.DisplayMissingEpisodes || !user.Configuration.DisplayUnairedEpisodes)
|
||||||
{
|
{
|
||||||
query.IsMissing = false;
|
query.ExcludeLocationTypes = new[] { LocationType.Virtual };
|
||||||
}
|
}
|
||||||
|
|
||||||
var itemsResult = await GetItems(query).ConfigureAwait(false);
|
var itemsResult = await GetItems(query).ConfigureAwait(false);
|
||||||
|
|
|
@ -134,7 +134,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
|
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
if (!IsMissingSeason.HasValue)
|
if (!IsVirtualItem.HasValue)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -144,18 +144,18 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public bool? IsMissingSeason { get; set; }
|
public bool? IsVirtualItem { get; set; }
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
|
public bool IsMissingSeason
|
||||||
|
{
|
||||||
|
get { return (IsVirtualItem ?? false) && !IsUnaired; }
|
||||||
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public bool IsVirtualUnaired
|
public bool IsVirtualUnaired
|
||||||
{
|
{
|
||||||
get { return LocationType == LocationType.Virtual && IsUnaired; }
|
get { return (IsVirtualItem ?? false) && IsUnaired; }
|
||||||
}
|
|
||||||
|
|
||||||
[IgnoreDataMember]
|
|
||||||
public bool IsMissingOrVirtualUnaired
|
|
||||||
{
|
|
||||||
get { return (IsMissingSeason ?? false) || (LocationType == LocationType.Virtual && IsUnaired); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
|
@ -319,10 +319,6 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
{
|
{
|
||||||
var hasChanges = base.BeforeMetadataRefresh();
|
var hasChanges = base.BeforeMetadataRefresh();
|
||||||
|
|
||||||
var locationType = LocationType;
|
|
||||||
|
|
||||||
if (locationType == LocationType.FileSystem || locationType == LocationType.Offline)
|
|
||||||
{
|
|
||||||
if (!IndexNumber.HasValue && !string.IsNullOrEmpty(Path))
|
if (!IndexNumber.HasValue && !string.IsNullOrEmpty(Path))
|
||||||
{
|
{
|
||||||
IndexNumber = IndexNumber ?? LibraryManager.GetSeasonNumberFromPath(Path);
|
IndexNumber = IndexNumber ?? LibraryManager.GetSeasonNumberFromPath(Path);
|
||||||
|
@ -333,7 +329,6 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return hasChanges;
|
return hasChanges;
|
||||||
}
|
}
|
||||||
|
|
|
@ -238,21 +238,14 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
seasons = LibraryManager.Sort(base.GetChildren(user, true), user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).OfType<Season>();
|
seasons = LibraryManager.Sort(base.GetChildren(user, true), user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).OfType<Season>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!includeMissingSeasons && !includeVirtualUnaired)
|
|
||||||
{
|
|
||||||
seasons = seasons.Where(i => !i.IsMissingOrVirtualUnaired);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!includeMissingSeasons)
|
if (!includeMissingSeasons)
|
||||||
{
|
{
|
||||||
seasons = seasons.Where(i => !(i.IsMissingSeason ?? false));
|
seasons = seasons.Where(i => !(i.IsMissingSeason));
|
||||||
}
|
}
|
||||||
if (!includeVirtualUnaired)
|
if (!includeVirtualUnaired)
|
||||||
{
|
{
|
||||||
seasons = seasons.Where(i => !i.IsVirtualUnaired);
|
seasons = seasons.Where(i => !i.IsVirtualUnaired);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return seasons;
|
return seasons;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1134,22 +1134,6 @@ namespace MediaBrowser.Controller.Entities
|
||||||
bool? isVirtualUnaired,
|
bool? isVirtualUnaired,
|
||||||
bool? isUnaired)
|
bool? isUnaired)
|
||||||
{
|
{
|
||||||
if (isMissing.HasValue && isVirtualUnaired.HasValue)
|
|
||||||
{
|
|
||||||
if (!isMissing.Value && !isVirtualUnaired.Value)
|
|
||||||
{
|
|
||||||
return items.Where(i =>
|
|
||||||
{
|
|
||||||
var e = i as Season;
|
|
||||||
if (e != null)
|
|
||||||
{
|
|
||||||
return !e.IsMissingOrVirtualUnaired;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isMissing.HasValue)
|
if (isMissing.HasValue)
|
||||||
{
|
{
|
||||||
var val = isMissing.Value;
|
var val = isMissing.Value;
|
||||||
|
@ -1158,7 +1142,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
var e = i as Season;
|
var e = i as Season;
|
||||||
if (e != null)
|
if (e != null)
|
||||||
{
|
{
|
||||||
return (e.IsMissingSeason ?? false) == val;
|
return (e.IsMissingSeason) == val;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace MediaBrowser.Providers.TV
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<Season> AddSeason(Series series,
|
public async Task<Season> AddSeason(Series series,
|
||||||
int? seasonNumber,
|
int? seasonNumber,
|
||||||
bool isMissingSeason,
|
bool isVirtualItem,
|
||||||
CancellationToken cancellationToken)
|
CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var seasonName = seasonNumber == 0 ?
|
var seasonName = seasonNumber == 0 ?
|
||||||
|
@ -111,7 +111,7 @@ namespace MediaBrowser.Providers.TV
|
||||||
Name = seasonName,
|
Name = seasonName,
|
||||||
IndexNumber = seasonNumber,
|
IndexNumber = seasonNumber,
|
||||||
Id = _libraryManager.GetNewItemId((series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName), typeof(Season)),
|
Id = _libraryManager.GetNewItemId((series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName), typeof(Season)),
|
||||||
IsMissingSeason = isMissingSeason
|
IsVirtualItem = isVirtualItem
|
||||||
};
|
};
|
||||||
|
|
||||||
season.SetParent(series);
|
season.SetParent(series);
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace MediaBrowser.Providers.TV
|
||||||
{
|
{
|
||||||
var episodes = item.GetEpisodes().ToList();
|
var episodes = item.GetEpisodes().ToList();
|
||||||
updateType |= SavePremiereDate(item, episodes);
|
updateType |= SavePremiereDate(item, episodes);
|
||||||
updateType |= SaveIsMissing(item, episodes);
|
updateType |= SaveIsVirtualItem(item, episodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
return updateType;
|
return updateType;
|
||||||
|
@ -67,13 +67,13 @@ namespace MediaBrowser.Providers.TV
|
||||||
return ItemUpdateType.None;
|
return ItemUpdateType.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ItemUpdateType SaveIsMissing(Season item, List<Episode> episodes)
|
private ItemUpdateType SaveIsVirtualItem(Season item, List<Episode> episodes)
|
||||||
{
|
{
|
||||||
var isMissing = item.LocationType == LocationType.Virtual && (episodes.Count == 0 || episodes.All(i => i.IsMissingEpisode));
|
var isVirtualItem = item.LocationType == LocationType.Virtual && (episodes.Count == 0 || episodes.All(i => i.LocationType == LocationType.Virtual));
|
||||||
|
|
||||||
if (item.IsMissingSeason != isMissing)
|
if (item.IsVirtualItem != isVirtualItem)
|
||||||
{
|
{
|
||||||
item.IsMissingSeason = isMissing;
|
item.IsVirtualItem = isVirtualItem;
|
||||||
return ItemUpdateType.MetadataEdit;
|
return ItemUpdateType.MetadataEdit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -238,6 +238,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "PrimaryVersionId", "Text");
|
_connection.AddColumn(Logger, "TypedBaseItems", "PrimaryVersionId", "Text");
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "DateLastMediaAdded", "DATETIME");
|
_connection.AddColumn(Logger, "TypedBaseItems", "DateLastMediaAdded", "DATETIME");
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "Album", "Text");
|
_connection.AddColumn(Logger, "TypedBaseItems", "Album", "Text");
|
||||||
|
_connection.AddColumn(Logger, "TypedBaseItems", "IsVirtualItem", "BIT");
|
||||||
|
|
||||||
_connection.AddColumn(Logger, "UserDataKeys", "Priority", "INT");
|
_connection.AddColumn(Logger, "UserDataKeys", "Priority", "INT");
|
||||||
|
|
||||||
|
@ -359,7 +360,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
"DateLastMediaAdded",
|
"DateLastMediaAdded",
|
||||||
"Album",
|
"Album",
|
||||||
"CriticRating",
|
"CriticRating",
|
||||||
"CriticRatingSummary"
|
"CriticRatingSummary",
|
||||||
|
"IsVirtualItem"
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly string[] _mediaStreamSaveColumns =
|
private readonly string[] _mediaStreamSaveColumns =
|
||||||
|
@ -474,7 +476,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
"OriginalTitle",
|
"OriginalTitle",
|
||||||
"PrimaryVersionId",
|
"PrimaryVersionId",
|
||||||
"DateLastMediaAdded",
|
"DateLastMediaAdded",
|
||||||
"Album"
|
"Album",
|
||||||
|
"IsVirtualItem"
|
||||||
};
|
};
|
||||||
_saveItemCommand = _connection.CreateCommand();
|
_saveItemCommand = _connection.CreateCommand();
|
||||||
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
|
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
|
||||||
|
@ -866,6 +869,16 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
|
|
||||||
_saveItemCommand.GetParameter(index++).Value = item.Album;
|
_saveItemCommand.GetParameter(index++).Value = item.Album;
|
||||||
|
|
||||||
|
var season = item as Season;
|
||||||
|
if (season != null && season.IsVirtualItem.HasValue)
|
||||||
|
{
|
||||||
|
_saveItemCommand.GetParameter(index++).Value = season.IsVirtualItem.Value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_saveItemCommand.GetParameter(index++).Value = null;
|
||||||
|
}
|
||||||
|
|
||||||
_saveItemCommand.Transaction = transaction;
|
_saveItemCommand.Transaction = transaction;
|
||||||
|
|
||||||
_saveItemCommand.ExecuteNonQuery();
|
_saveItemCommand.ExecuteNonQuery();
|
||||||
|
@ -1281,6 +1294,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
item.CriticRatingSummary = reader.GetString(57);
|
item.CriticRatingSummary = reader.GetString(57);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var season = item as Season;
|
||||||
|
if (season != null && !reader.IsDBNull(58))
|
||||||
|
{
|
||||||
|
season.IsVirtualItem = reader.GetBoolean(58);
|
||||||
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user