/// <summary> /// Gets the similar item list URL. /// </summary> /// <param name="query">The query.</param> /// <param name="type">The type.</param> /// <returns>System.String.</returns> /// <exception cref="System.ArgumentNullException"> /// query /// or /// type /// </exception> protected string GetSimilarItemListUrl(SimilarItemsQuery query, string type) { if (query == null) { throw new ArgumentNullException("query"); } if (string.IsNullOrEmpty(type)) { throw new ArgumentNullException("type"); } var dict = new QueryStringDictionary { }; dict.Add("Id", query.Id); dict.AddIfNotNull("Limit", query.Limit); dict.AddIfNotNullOrEmpty("UserId", query.UserId); if (type == "Movies" && Config.Instance.ExcludeRemoteContentInSearch) { dict.Add("IncludeTrailers", false); } if (query.Fields != null) { dict.Add("fields", query.Fields.Select(f => f.ToString())); } return(GetApiUrl(type + "/" + query.Id + "/Similar", dict)); }
/// <summary> /// Gets the instant mix URL. /// </summary> /// <param name="query">The query.</param> /// <param name="type">The type.</param> /// <returns>System.String.</returns> /// <exception cref="System.ArgumentNullException"> /// query /// or /// type /// </exception> protected string GetInstantMixUrl(SimilarItemsQuery query, string type) { if (query == null) { throw new ArgumentNullException("query"); } if (string.IsNullOrEmpty(type)) { throw new ArgumentNullException("type"); } var dict = new QueryStringDictionary { }; dict.AddIfNotNull("Limit", query.Limit); dict.AddIfNotNullOrEmpty("UserId", query.UserId); if (query.Fields != null) { dict.Add("fields", query.Fields.Select(f => f.ToString())); } if (string.IsNullOrEmpty(query.Id)) { throw new ArgumentNullException("query"); } return(GetApiUrl(type + "/" + query.Id + "/InstantMix", dict)); }
/// <summary> /// Gets the similar item list URL. /// </summary> /// <param name="query">The query.</param> /// <param name="type">The type.</param> /// <returns>System.String.</returns> /// <exception cref="System.ArgumentNullException"> /// query /// or /// type /// </exception> protected Uri GetSimilarItemListUrl(SimilarItemsQuery query, string type) { if (query == null) { throw new ArgumentNullException("query"); } if (string.IsNullOrEmpty(type)) { throw new ArgumentNullException("type"); } var dict = new NameValueCollection { }; dict.AddIfNotNull("Limit", query.Limit); dict.AddIfNotNullOrEmpty("UserId", query.UserId); if (query.Fields != null) { dict.Add("fields", query.Fields.Select(f => f.ToString())); } if (string.IsNullOrEmpty(query.Id)) { throw new ArgumentNullException("query"); } return(GetApiUrl(new Uri(type + "/" + query.Id + "/Similar", UriKind.Relative), dict)); }
private Task <ItemsResult> GetSimilarItemsAsync(ItemListViewModel viewModel) { var item = ItemViewModel.Item; var query = new SimilarItemsQuery { UserId = _sessionManager.CurrentUser.Id, Limit = item.IsGame || item.IsType("musicalbum") ? 6 : 12, Fields = new[] { ItemFields.PrimaryImageAspectRatio, ItemFields.DateCreated }, Id = item.Id }; if (item.IsType("trailer")) { return(_apiClient.GetSimilarTrailersAsync(query)); } if (item.IsGame) { return(_apiClient.GetSimilarGamesAsync(query)); } if (item.IsType("musicalbum")) { return(_apiClient.GetSimilarAlbumsAsync(query)); } if (item.IsType("series")) { return(_apiClient.GetSimilarSeriesAsync(query)); } return(_apiClient.GetSimilarMoviesAsync(query)); }
internal static async Task <List <PlaylistItem> > GetInstantMixPlaylist(this IApiClient apiClient, BaseItemDto item, IPlaybackManager playbackManager) { ItemsResult result; var query = new SimilarItemsQuery { UserId = AuthenticationService.Current.LoggedInUserId, Id = item.Id, Fields = new [] { ItemFields.MediaSources } }; switch (item.Type) { case "Audio": result = await apiClient.GetInstantMixFromSongAsync(query); break; case "MusicArtist": result = await apiClient.GetInstantMixFromArtistAsync(query); break; case "MusicAlbum": result = await apiClient.GetInstantMixFromAlbumAsync(query); break; case "Genre": result = await apiClient.GetInstantMixFromMusicGenreAsync(query); break; default: return(new List <PlaylistItem>()); } if (result == null || result.Items.IsNullOrEmpty()) { return(new List <PlaylistItem>()); } return(await result.Items.ToList().ToPlayListItems(apiClient, playbackManager)); }
public IEnumerable <BaseItem> RetrieveSimilarItems(SimilarItemsQuery query, string type) { var dtos = Kernel.ApiClient.GetSimilarItems(query, type); return(dtos == null ? new BaseItem[] {} : dtos.Items.Select(dto => GetItem(dto, dto.Type)).Where(item => item != null)); }
public Task <ItemsResult> GetInstantMixFromAlbumAsync(SimilarItemsQuery query) { throw new NotImplementedException(); }