aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-11-15 17:30:47 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-11-15 17:30:47 -0500
commit72a0c2afeba7b2af3f8eff37f551b28740554210 (patch)
treebc2b1c7afead83cb879e45b4ae6587a7b395dac4
parenta45831cdcfb5f78c4d01ad19a1c5eb08f86a8761 (diff)
update playlist query
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs5
-rw-r--r--MediaBrowser.Controller/Entities/InternalItemsQuery.cs9
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeriesProvider.cs16
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs11
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs8
5 files changed, 38 insertions, 11 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index e7a077a91..489580555 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -112,6 +112,11 @@ namespace MediaBrowser.Api.UserLibrary
user == null ? _libraryManager.RootFolder : user.RootFolder :
parentItem;
+ if (string.Equals(request.IncludeItemTypes, "Playlist", StringComparison.OrdinalIgnoreCase))
+ {
+ item = user == null ? _libraryManager.RootFolder : user.RootFolder;
+ }
+
// Default list type = children
if (!string.IsNullOrEmpty(request.Ids))
diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
index 682cec69d..96cd305a6 100644
--- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
+++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
@@ -31,6 +31,7 @@ namespace MediaBrowser.Controller.Entities
public string[] MediaTypes { get; set; }
public string[] IncludeItemTypes { get; set; }
public string[] ExcludeItemTypes { get; set; }
+ public string[] ExcludeTags { get; set; }
public string[] Genres { get; set; }
public bool? IsMissing { get; set; }
@@ -133,6 +134,7 @@ namespace MediaBrowser.Controller.Entities
ItemIds = new string[] { };
AncestorIds = new string[] { };
TopParentIds = new string[] { };
+ ExcludeTags = new string[] { };
ExcludeLocationTypes = new LocationType[] { };
}
@@ -144,6 +146,13 @@ namespace MediaBrowser.Controller.Entities
var policy = user.Policy;
MaxParentalRating = policy.MaxParentalRating;
+ if (policy.MaxParentalRating.HasValue)
+ {
+ BlockUnratedItems = policy.BlockUnratedItems;
+ }
+
+ ExcludeTags = policy.BlockedTags;
+
User = user;
}
}
diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
index 5e5f96031..ccf8800cf 100644
--- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
@@ -175,6 +175,11 @@ namespace MediaBrowser.Providers.TV
/// <returns>Task.</returns>
internal async Task DownloadSeriesZip(string seriesId, string seriesDataPath, long? lastTvDbUpdateTime, string preferredMetadataLanguage, CancellationToken cancellationToken)
{
+ if (string.IsNullOrWhiteSpace(seriesId))
+ {
+ throw new ArgumentNullException("seriesId");
+ }
+
try
{
await DownloadSeriesZip(seriesId, seriesDataPath, lastTvDbUpdateTime, preferredMetadataLanguage, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false);
@@ -196,6 +201,11 @@ namespace MediaBrowser.Providers.TV
private async Task DownloadSeriesZip(string seriesId, string seriesDataPath, long? lastTvDbUpdateTime, string preferredMetadataLanguage, string saveAsMetadataLanguage, CancellationToken cancellationToken)
{
+ if (string.IsNullOrWhiteSpace(seriesId))
+ {
+ throw new ArgumentNullException("seriesId");
+ }
+
var url = string.Format(SeriesGetZip, TVUtils.TvdbApiKey, seriesId, preferredMetadataLanguage);
using (var zipStream = await _httpClient.Get(new HttpRequestOptions
@@ -247,7 +257,11 @@ namespace MediaBrowser.Providers.TV
string id;
if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id))
{
- return true;
+ // This check should ideally never be necessary but we're seeing some cases of this and haven't tracked them down yet.
+ if (string.IsNullOrWhiteSpace(id))
+ {
+ return true;
+ }
}
//if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out id))
//{
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 86d354fc8..673cff69c 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -1345,16 +1345,7 @@ namespace MediaBrowser.Server.Implementations.Library
}, CancellationToken.None).Result.ToList();
- query.TopParentIds = userViews.SelectMany(GetTopParentsForQuery).Select(i => i.Id.ToString("N")).ToArray();
- }
-
- // TODO: handle blocking by tags
-
- query.MaxParentalRating = user.Policy.MaxParentalRating;
-
- if (user.Policy.MaxParentalRating.HasValue)
- {
- query.BlockUnratedItems = user.Policy.BlockUnratedItems;
+ //query.TopParentIds = userViews.SelectMany(GetTopParentsForQuery).Select(i => i.Id.ToString("N")).ToArray();
}
}
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 5c6adced6..d414ce7c1 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -1985,6 +1985,14 @@ namespace MediaBrowser.Server.Implementations.Persistence
var inClause = string.Join(",", query.BlockUnratedItems.Select(i => "'" + i.ToString() + "'").ToArray());
whereClauses.Add(string.Format("(InheritedParentalRatingValue > 0 or UnratedType not in ({0}))", inClause));
}
+
+ //var excludeTagIndex = 0;
+ //foreach (var excludeTag in query.ExcludeTags)
+ //{
+ // whereClauses.Add("Tags not like @excludeTag" + excludeTagIndex);
+ // cmd.Parameters.Add(cmd, "@excludeTag" + excludeTagIndex, DbType.String).Value = "%" + excludeTag + "%";
+ // excludeTagIndex++;
+ //}
if (addPaging)
{